author: Nathan_niee
date: 2021-10-22-22:23
tags: #Tomcat
简述
今日学习servlet使用第二种配置方式---注解遇到点问题,可能是不熟悉idea中对于tomcat的整合或者是使用逻辑,因为idea直接自动完成了某些配置致使忽略了一些过程。花费了几个小时,终于解决了。
一开始使用注解的方式进行配置,当启动tomcat时,自动弹出的页面没有显示内容(见图1),后面修改了一下,直接404
(见图2),直接懵逼。
图1-第一次尝试显示找不到网页
图2-第二次尝试显示404
原理分析
为了搞清楚idea是如何整合tomcat,需要从0开始,即按照刚开始单独下载,启动tomcat的流程分析,主要进行如下步骤
- 启动java.exe。
- 使用配置文件
conf
中的内容,设置的端口,设置的项目路径等。
⚠️ IDEA会为每一个tomcat部署的项目单独建立一份配置文件,这些配置文件所在的目录当启动tocmat时在控制台会在输出log中看到。
1、tomcat配置
当在idea中选择【Configuration】➞ 新建【Tomcat Server】,其实就是新建了一个配置,一个配置可以运行多个项目,当然可以一个配置运行一个项目,只需要将所需的项目添加到配置信息中用于部署,当然使用idea就不需要当文件夹中的配置文件中配置部署了,只需要图形界面操作即可。
2、选择项目部署
在原生tomcat启动中,每个项目建议打包为war
包。
所以想要添加项目也需要添加类似的war
包,在idea中显示为「artifacts」,翻译就是「一个人工制品,工艺品」之类的,不过确是,一个辛辛苦苦创建的项目不就是一个「工艺品」吗。
配置完后,当启动tomcat,idea会编译模块项目,生成target
编译结果目录。
问题是,选择的「artifacts」是哪里来的?
实际上,在创建模块时,就会提示命名「artifacts」
下面一段文字“The name of th artifact within the group ,usually a module name”就是说,现在创建的模块这个模块名为作为artifact的名(当然可以修改自定义artifact名),这样后期添加的「artifact」就是以当前模块名命名的。
3、编译项目创建target目录
当创建一个模块,并配置tomcat,后部署「artifact」时,idea会编译并创建一个target编译结果目录。
关于在target和out文件夹(目录)的区别: https://blog.csdn.net/qq_2659...
可以看到当选择配置tomcat时,idea中有一个选项设置tomcat服务器名,这个名称根据需求设定学习阶段可以设置为同项目名,便于测试学习
总结提升
总结一下基本过程:
- 创建模块
- 配置tomcat
- 部署项目artifact
- 编译生成target目录
这样就可以成功启动tomcat并访问页面(当然其他操作问题,比如路径错误也会影响启动结果和展示结果)。最近最常见的问题就是端口老是被占用!。