使用intellij idea 和Tomcat创建Javaweb项目并可同时响应http以及https请求

其实这类的文章不在少数,笔者也是看了许多其他文章以后做的一个总结,主要涉及:
①用idea和Tomcat创建Javaweb项目
②如何配置Tomcat可以响应https协议
两个步骤,因为Tomcat默认的使用http协议,没有涉及到https协议需求的可以不看下面的步骤。如果感觉不够详尽,可以再问,知无不言言无不尽。当然更可以参考其他的文章,能解决问题就OK。

一. 使用idea以及Tomcat创建Javaweb项目:

软件的下载与安装就不用说了吧,我Windows上用到idea版本是2017.1.5,Tomcat版本是8.5.9,Mac上使用的idea版本与Windows上的相同,Mac上的Tomcat版本是9.0.5,配置过程当中没感觉有不同。

图1.

使用intellij idea 和Tomcat创建Javaweb项目并可同时响应http以及https请求
首先,点击idea菜单栏的File->New->Project出现这个图1界面,点选画框的地方,第一个框那里选上以后第二框默认勾选上了,不用改,直接next进入下一个页面,然后给自己的Javaweb项目起个名字,设置好存放路径,这个都是随意的,没有图。最后按finish完成就行了。

图2

使用intellij idea 和Tomcat创建Javaweb项目并可同时响应http以及https请求
如图2.
在创建好的项目目录下,选择WEB-INF这个目录(如果不在图1中勾选create web.xml选项的话,就不会自动创建这个目录,最后还得单独创建,所以开始的时候最好就勾选上这个选项)然后给它创建两个子目录:classes和lib,分别用于存放编译后生成的.class文件和外部jar包。

图3
使用intellij idea 和Tomcat创建Javaweb项目并可同时响应http以及https请求
点击图3中最上面那个图标①会显示这个页面,点击Modules开始做一些配置:按照图中的顺序逐步操作就行,⑤点击以后找到你创建的项目,然后找到上一步创建的classes目录,分别配置到那两个选框就行了。

图4.

使用intellij idea 和Tomcat创建Javaweb项目并可同时响应http以及https请求
图5
使用intellij idea 和Tomcat创建Javaweb项目并可同时响应http以及https请求

按照图4和图5的顺序把之前创建的lib目录配置上。

图6
使用intellij idea 和Tomcat创建Javaweb项目并可同时响应http以及https请求
按照

图6的顺序配置项目打成war包时的名称,修改②处即可。

图7.
使用intellij idea 和Tomcat创建Javaweb项目并可同时响应http以及https请求

配置Tomcat

图7中点击箭头处出现图8界面,然后点击加号,在弹窗中选择Tomcat server->local,然后会弹出图9界面。


图8
使用intellij idea 和Tomcat创建Javaweb项目并可同时响应http以及https请求
图9
使用intellij idea 和Tomcat创建Javaweb项目并可同时响应http以及https请求

在图9中,②处选择你已经安装的Tomcat的根目录,①处是自己给当前项目的Tomcat起个名字,而③处是使用https协议所需的接口,下面还会提到。

图10

使用intellij idea 和Tomcat创建Javaweb项目并可同时响应http以及https请求
按照以上配置流程走完以后,就会看到项目原来图7的地方就变成了图10的样子,点击红色三角启动Tomcat,然后在浏览器输入http://localhost:8080/以后应该就能看到Tomcat的欢迎界面了。此时算是创建好了一个Javaweb项目了,目前它能响应http请求,想要同时也响应https请求的话,还得往下看。
Tomcat响应基于https的请求主要就是需要对其安装目录/conf/server.xml文件做一下简单的修改,修改之前需要自己生成一个keystore:

keystore的生成步骤(windows系统下):
①找到jdk安装目录下的bin目录,然后里面有个keytool.exe工具:

使用intellij idea 和Tomcat创建Javaweb项目并可同时响应http以及https请求
②在这个工具的目录下(如果配置了JAVA_HOME的话就可以在任意目录下使用了)执行命令:

keytool -genkeypair -alias "tomcat" -kyealg "RSA" -validity 90 -keysotre "D:\development\tomcat.keystore"

简单说明:这些命令从单词翻译上也知道啥意思,-validity是指**的有效期,后面的数字就是有效期的时间(天),这个命令可以不写,不写的话应该就是默认永久有效。其他的命令都是必须的,生成的**名字和保存目录都是随意的,比如我这里是D:\development\tomcat.keystore。
按下回车执行这个命令时会让你输入一些账号信息:

图11
使用intellij idea 和Tomcat创建Javaweb项目并可同时响应http以及https请求

上面信息只说"名字与姓氏"这一行,这个选项应该是你的域名,如果你在本地使用Tomcat的话,就是localhost,有其他的可用域名的话也可以写,之后你向自己的服务器发送请求的时候域名就写现在配置的这个名字,记住了就行。
上面的信息都配置完以后会在最后让你确认配置的信息是否正确,正确的话输入y按回车就能生成**了。

修改Tomcat的server.xml文件:
像上面已经说的,找到Tomcat安装目录\conf\server.xml用编辑器打开(最好事先备份一个,免得改错了有麻烦),然后找到如下节点:

使用intellij idea 和Tomcat创建Javaweb项目并可同时响应http以及https请求

这本来是注释掉的,而且低版本Tomcat的server.xml文件里似乎没有完全和这个一样的节点,写法有点出入,但找到类似的可以不用放开这个注释,直接复制一份,将复制后的节点打开注释进行修改就行,不对的话也不至于改的这个文件不能用。


修改成下面的写法:

使用intellij idea 和Tomcat创建Javaweb项目并可同时响应http以及https请求

keystorePass是在图11中你定的**库口令,keystoreFile就是你生成的keystore的目录。按照这种写法配置好以后保存文件重启Tomcat,在地址栏输入https://localhost:8443/,如果显示证书不安全之类的,暂不用理会,继续访问就行了。后续的如果需要安全证书,还需要各位再搜索其他的文章,本文就不说了,太长了,而且目前笔者也没学习如何去设置。

最后一点说明:这种配置下,Tomcat可以响应http和https请求,请求的地址中只有端口号是不一样的,都知道http的默认端口号是8080,而https的默认端口号是8443,图9中配置Tomcat的时候配置了路径http://localhost:8080/,在发送https请求的时候不必再改成https://localhost:8443,看图中③处,只要在这里输入https的默认端口号就行了,server.xml文件里有自动重定向的配置。

以上内容很浅显,但确实是很用心的去写的。由于笔者水平有限,倘若仍然存在问题,请给于指导批评!