1.IDEA社区版搭建web项目

问题:

  • IDEA社区版没有创建Web工程的选项
  • IDEA社区版没有将Web工程打包成war包的选项

1.1 创建普通的java项目,此处不再赘述

idea如何maven打jar包打全 idea中maven打包_tomcat

1.2 构建web项目的目录结构

idea如何maven打jar包打全 idea中maven打包_idea如何maven打jar包打全_02

1.3 设置编译目录

idea如何maven打jar包打全 idea中maven打包_servlet_03

1.4 在WEN-INF文件夹下新建web.xml

idea如何maven打jar包打全 idea中maven打包_maven_04

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                             http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
  <display-name>SimpleWebApp</display-name>
  <!-- display-name作用是在登录到tomcat管理页面可以看到显示名字 -->
  <servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>com.bes.test.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>

此时 http://xmlns.jcp.org/xml/ns/javaee 和 http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd 会报红,原因是没有web.xml的约束文件。tomcat的lib中的servlet-api.jar包含所需的约束文件,因此可以手动导入该jar包,也可以通过pom.xml坐标导入该jar包(我建议通过坐标导入,因为后续通过Maven编译项目时,还是需要在pom.xml文件中导入坐标)。

1.4.1 手动导入servlet-api.jar(方法一)

idea如何maven打jar包打全 idea中maven打包_tomcat_05

1.4.2 导入pom.xml文件

1.4.2.1 添加pom.xml文件

web项目添加pom.xml,转变为Maven项目

  • 方式一:手动创建pom.xml文件,然后右键 Add as Maven Project

idea如何maven打jar包打全 idea中maven打包_idea如何maven打jar包打全_06

  • 方式二:点击我的项目, 右键找到Add Framework Support(此方式我行不通)

    弹出以下页面,若没有maven,一直下拉,若还没有,检查你的项目中是否已有pom.xml文件,勾选Maven,点击Ok

    pom.xml成功创建(已转变成maven项目),可以添加你的依赖了
1.4.2.2 导入servlet-api.jar坐标(方法二)

idea如何maven打jar包打全 idea中maven打包_tomcat_07

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>helloworld</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
            <!-- 已提供范围的依赖在编译classpath (不是运行时)可用。它们不是传递性的也不会被打包。
             -->
        </dependency>
    </dependencies>

</project>

2. 编写web项目

以下是一个简单的基于 Java EE 8 的 Web 应用示例,包括一个简单的 Servlet 和 JSP 页面:

  1. 创建 Servlet:
  • 创建一个 Java 类,继承自 javax.servlet.http.HttpServlet
  • 实现 doGet()doPost() 方法来处理请求和响应。
  • 在方法中可以编写业务逻辑,并将结果存储在请求属性或会话属性中。
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class HelloServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = "World";
        request.setAttribute("name", name);

        request.getRequestDispatcher("/WEB-INF/hello.jsp").forward(request, response);
    }
}
  1. 创建 JSP 页面:
  • WEB-INF 文件夹下创建一个名为 hello.jsp 的文件,并添加以下内容:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>Hello JSP</title>
    </head>
    <body>
        <h1>Hello, <%= request.getAttribute("name") %>!</h1>
    </body>
</html>
  1. 配置 web.xml 文件:
  • WEB-INF 文件夹下创建 web.xml 文件并添加以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
                             http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <display-name>SimpleWebApp</display-name>
    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>com.bes.test.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>
  1. 编译和打包项目:
  • 将编写好的 Java 源代码和 JSP 文件放在正确的目录中。
  • web.xml 和其他资源文件放在正确的位置。
  1. 部署到支持 Java EE 8 的服务器(如 Tomcat 10 或 WildFly)并启动服务器。
  2. 访问 Web 应用:
  • 在浏览器中输入 http://localhost:{port}/context-path/hello,其中 {port} 是你的服务器端口,context-path 是你的应用上下文路径。
  • 应该会看到 “Hello, World!” 的字样。

这样就创建了一个简单的基于 Java EE 8 的 Web 应用。你可以根据需要添加更多的 Servlet 和 JSP 页面,并实现更多的业务逻辑。

3. maven编译web项目打包成war包

3.1 在pom.xml文件中确认当前打包方式为war

idea如何maven打jar包打全 idea中maven打包_idea如何maven打jar包打全_08

3.2 打包成war包

进入web工程根目录,执行mvn clean package

idea如何maven打jar包打全 idea中maven打包_maven_09


得到的war包如下:

idea如何maven打jar包打全 idea中maven打包_tomcat_10

4. 将war包部署到Tomcat9中

将war复制到Tomcat的webapps目录中,不需要重启Tomcat,会自动部署该目录下的工程。

idea如何maven打jar包打全 idea中maven打包_idea如何maven打jar包打全_11

5. 访问Tomcat中的项目

idea如何maven打jar包打全 idea中maven打包_java_12