注意本篇是记录关于web项目的两种创建方式,通过Maven创建和创建普通项目之后加web框架支持,第二种方式遇到的很多排错问题,但是最终还是没成功。
两天在学springMVC的时候,因为回顾Servlet。
所以我去创建web项目,然后启动Tomcat运行起来。
环境:IDea 2023
1、Maven 3.5.3
2、Tomcat 9
一、两种创建web项目方式;
首先对比一下两种方式的项目结构:
1、目录位置不一样
2、web.xml和pom.xml信息不一致:
3.pom
方式一:通过Maven创建
1、创建目录
2、成功创建之后目录如下:
其中没有Java目录
手动添加之后,下图就是Maven创建成功的web项目,其中webapp中间有个小蓝点说明被识别成了web项目:没有的话在pom文件中重新加载一下,不然检查自己的Maven仓库的设置是否是自己下载的路径,idea会默认是C盘下的路径;
3、分析下结构
module中有这个web识别记号,spring会有一个绿色的叶子
facets下有web.xml和web资源路径,手动加框架其实也是加这个,Maven只是自动帮我们补上了。
artifacts下:注意输出路径Maven自动放在target下,这里还有lib目录,输出时候会把这些lib包输出。
4、部署Tomcat,启动
点击deployment;
其实war 和exploded都可以,只是后者是热部署的概念,想了解区别的可以自己去学习一下。
点击apply就完成部署了。
5、运行Tomcat,默认打开index.jsp初始页面。
想改的话再web.xml中改。注意这里的路径因为我们没有改,
默认路径:该application context里就行;
所以我们可以看到通过Maven创建的web项目可以正常跑起来;
输出目录如下,而且在Tomcat的目录下也有这个
方式二:创建普通项目之后加web框架支持
接下来我们看第二种方式;
1、新建一个普通的Java项目,添加web支持
2、成功后,目录如下:
其中xml是新的4.0
3、分析结构:
项目结构中也全部被识别成web项目;
有下面不同,我们接着看
4、部署Tomcat,启动
5、遇到问题
404经典来了,估计是没有找到jsp文件目录;
查看输出目录没有xml也没有jsp文件
一开始我以为是没有添加lib,然后在加了lib目录,添加了lib依赖
重新编译:还是报错
但是发现lib被识别进来了
其实看了很多大佬的文章:
maven的web项目默认的web root是在src\main\webapp。
然后我又修改pom中,设置自己的web路径
<packaging>war</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<!--指定web.xml文件的位置-->
<webXml>web\WEB-INF\web.xml</webXml>
<!--指定jsp等文件所在位置-->
<warSourceDirectory>web</warSourceDirectory>
</configuration>
</plugin>
</plugins>
</build>
再编译:还是不行
二、终极测试排查
maven的web项目默认的web root是在src\main\webapp。
没办法了只好把web目录移动到src下,不过要修改modules里面那些路径
甚至把输出路径都全改了,加了一个war;
加了打包方式也只多一个war包
真的醉了,就在我放弃之后
第二次我重启打开idea,居然又成功了,服啦。