JAVA Web 工程,从创建到部署

JAVA Web 工程,从创建到部署

本文记录在不使用框架的情况下(基本功别忘了),在 IDEA 中开发 Web 工程以及最后发布到服务器的过程


0731a.png
JAVA Web 工程(1.新建项目)
0731b.png
JAVA Web 工程(2.设置目录)

一般设置好项目文件夹所在,名字按需要起就可以,其他可以用缺省值

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?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>com.fakeproject</groupId>
    <artifactId>demo1</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- 设置打包方式 -->
    <packaging>war</packaging>

    <properties>
        <!-- 设置编码方式 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
        <!-- 设置 JDK 版本 -->
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>

        <!-- 添加 servlet 依赖 -->
        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>

    </dependencies>
</project>

这里使用 v1.8 版,是因为如果使用 v11 版,后面部署的时候会因为 CentOS7 官方 yum 源的 Tomcat 是 tomcat-7.0.76-16.el7_9.noarch 版,作为依赖安装的是 java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64,从而导致 “编译版本高于运行版本” 报错。

/src/main 下创建 webapp 目录

0731c.png
JAVA Web 工程(3.新建目录)

因为前面在 pom.xml 配置文件中设置了打包方式为 war 包,/src/main/webapp 目录会自动带上 Web 资源目录(Web Resource Directory)标记

0731d.png
JAVA Web 工程(4.webapp)

打开项目配置

0731e.png
JAVA Web 工程(5.项目设置)

按图示创建 web.xml 配置文件

(注意看黄框部分,就是上一步骤,webapp 会被标记为 Web 资源目录的原因)

0731f.png
JAVA Web 工程(6.创建 web.xml 配置文件)

注意按需要修改路径

0731g.png
JAVA Web 工程(7.修改 web.xml 路径)

最后效果

0731h.png
JAVA Web 工程(8.效果)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<!-- src/main/webapp/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Index</title>
</head>
<body>

<h3>Hello World !</h3>

</body>
</html>

0731j.png
JAVA Web 工程(9.添加 Tomcat)

添加 “工件”

0731k.png
JAVA Web 工程(10.添加工件)

开发测试选第二个,生产发布选第一个

0731l.png
JAVA Web 工程(11.选第二个)

Application context 这里可以把路径缩减一下

0731m.png
JAVA Web 工程(12.简化一下路径)

这里基本按默认就可以

0731n.png
JAVA Web 工程(13.默认设置)

启动 Tomcat

0731o.png
JAVA Web 工程(14.启动测试)

后台显示启动、部署成功

0731p.png
JAVA Web 工程(15.Tomcat 启动日志)

浏览器正常显示 HelloWorld 页面

0731q.png
JAVA Web 工程(16.浏览器访问正常)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.fakeproject.servlet;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class HelloServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        // 设置编码
        req.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html;charset=utf-8");

        // 接收客户端发送过来的信息,输出到控制台
        System.out.println("___接收到客户端发送过来的信息:" + req.getParameter("msg"));

        // 向客户端返回消息
        resp.getWriter().write("你好,Servlet !");
    }
}

web.xml 添加一下 Servlet

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>
<!-- src/main/webapp/WEB-INF/web.xml -->
<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">

    <!-- HelloServlet -->
    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>com.fakeproject.servlet.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/hello_servlet</url-pattern>
    </servlet-mapping>

</web-app>

编写一个 jsp 测试

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<%-- src/main/webapp/hello_jsp.jsp --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>HelloJsp</title>
</head>
<body>
<h3>Hello JSP !</h3>

<hr>
<form action="${pageContext.request.contextPath}/hello_servlet" method="post">
    请输入发给服务器的信息:<input type="text" name="msg" required><br/>
    <input type="submit" value="发送">
</form>

</body>
</html>

index.html 加一下 jsp 页面的链接

1
2
<hr>
<a href="./hello_jsp.jsp">./hello_jsp.jsp</a>

客户端发送信息

0731r.png
JAVA Web 工程(17.浏览器给服务器发送信息)

服务端控制台按预期输出信息

0731s.png
JAVA Web 工程(18.服务器接收到信息)

客户端正常接收到服务端返回的信息

0731t.png
JAVA Web 工程(19.浏览器接收到服务器返回的信息)


打包之前,先把下面这几个地方的 JDK 都改成 1.8 版

0731u1.png
JAVA Web 工程(20.修改工程的 JDK 版本)
0731u2.png
JAVA Web 工程(21.修改模块的 JDK 版本)
0731u3.png
JAVA Web 工程(22.修改编译器的 JDK 版本)

再清理一下

0731u.png
JAVA Web 工程(23.清理一下)

进行打包

0731v.png
JAVA Web 工程(24.打包)

用于发布到服务器,选第一个

0731w.png
JAVA Web 工程(25.选第一项)

完成后,会在 target 目录下生成 demo1-1.0-SNAPSHOT.war 包(可以改名)

0731x.png
JAVA Web 工程(26.打包结果)


CentOS7 安装 tomcat

1
2
3
4
5
yum install -y tomcat

systemctl start tomcat
systemctl enable tomcat
systemctl status tomcat

防火墙开启 http 服务,并将 80 端口转发至 8080 端口,参考

1
2
3
4
5
6
7
firewall-cmd --list-all

firewall-cmd --add-service=http
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080
firewall-cmd --runtime-to-permanent

firewall-cmd --list-all

将 war 包,上传到服务器 /var/lib/tomcat/webapps 目录

1
2
/var/lib/tomcat/webapps
└── demo1.war

浏览器访问正常,功能测试正常

0731y.png
JAVA Web 工程(27.部署测试结果)

完工

相关内容