【JavaWeb】不同方式创建的JavaWeb项目之间差异

不同方式创建的JavaWeb项目之间差异

IDEA版本:2023.1.5

常见的创建JavaWeb的两种方式:

  • Maven模板原型(webapp)
  • Web Application

Maven模板原型(webapp)方式创建的JavaWeb项目

创建方式

请添加图片描述

项目结构

web资源的根目录是在/src/main/webapp。

在这里插入图片描述

运行后输出目录

在这里插入图片描述

Web Application方式创建的JavaWeb项目

创建方式

先创建一个普通Java项目,再添加Web Application框架支持。

在这里插入图片描述
在这里插入图片描述

项目结构

web资源根目为/web。

在这里插入图片描述

运行后输出目录

在WEB-INF目录下的JSP文件在输出目录中仍在WEB-INF下。

在这里插入图片描述


JavaWeb项目运行后输出目录中不存在web资源文件问题

Web Application方式创建的JavaWeb项目配置信息存放在iml中,然后在modules.xml中指定iml文件位置。同时还比webapp方式创建的web项目多一个artifacts,里面存放的是ArtifactManager的配置。这些是在第一次运行项目后生成的,刚创建的项目是没有的。这些文件项目运行生成输出目录中的内容是根据这些进行配置的。webapp方式创建的JavaWeb项目不再需要额外配置的项目信息存储在.idea目录下的.xml文件中,而是通过读取pom.xml文件中的信息来进行配置。当两者之间配置方式杂糅就会导致项目运行后输出目录中不存在web资源文件。在IDEA(新版)中,使用Maven创建多模块项目时,当子模块项目使用Web Application方式创建Web项目,运行后会导致运行后输出目录不存在web资源文件,报404。

Web Application

在这里插入图片描述

webapplication-test.iml

<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
  <component name="FacetManager">
    <facet type="web" name="Web">
      <configuration>
        <descriptors>
          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/web/WEB-INF/web.xml" />
        </descriptors>
        <webroots>
          <root url="file://$MODULE_DIR$/web" relative="/" />
        </webroots>
      </configuration>
    </facet>
  </component>
  <component name="NewModuleRootManager" inherit-compiler-output="true">
    <exclude-output />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
  </component>
</module>

modules.xml

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ProjectModuleManager">
    <modules>
      <module fileurl="file://$PROJECT_DIR$/webapplication-test.iml" filepath="$PROJECT_DIR$/webapplication-test.iml" />
    </modules>
  </component>
</project>

webapplication_test_war_exploded.xml

<component name="ArtifactManager">
  <artifact type="exploded-war" name="webapplication-test:war exploded">
    <output-path>$PROJECT_DIR$/out/artifacts/webapplication_test_war_exploded</output-path>
    <root id="root">
      <element id="javaee-facet-resources" facet="webapplication-test/web/Web" />
      <element id="directory" name="WEB-INF">
        <element id="directory" name="classes">
          <element id="module-output" name="webapplication-test" />
        </element>
      </element>
    </root>
  </artifact>
</component>
webapp

在这里插入图片描述

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.example</groupId>
  <artifactId>webapp-test</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>webapp-test Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>webapp-test</finalName>
  </build>
</project>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦年华a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值