Idea2023版两种创建web项目对比,第二种手动加框架支持的因为输出的out目录下没有xml和jsp文件目录。一直状态 404 - 真崩溃了
注意本篇是记录关于web项目的两种创建方式,通过Maven创建和创建普通项目之后加web框架支持,第二种方式遇到的很多排错问题,但是最终还是没成功。两天在学springMVC的时候,因为回顾Servlet。所以我去创建web项目,然后启动Tomcat运行起来。环境:IDea 20231、Maven3.5.32、Tomcat 9首先对比一下两种方式的项目结构:1、目录位置不一样2、web.xml和p
注意本篇是记录关于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,居然又成功了,服啦。
总结:自己的看法,欢迎各位大佬指正,maven的web项目默认的web root是在src\main\webapp。不然识别不到其他文件,输出路径改不改应该没关系,文件目录结构应该要如下结构才能输出xml和其他文件,所以我觉得用Maven构建非常方便又不容易出错。

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)