本文记录在不使用框架的情况下(基本功别忘了),在 IDEA 中开发 Web 工程以及最后发布到服务器的过程
一般设置好项目文件夹所在,名字按需要起就可以,其他可以用缺省值
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 目录
因为前面在 pom.xml 配置文件中设置了打包方式为 war 包,/src/main/webapp
目录会自动带上 Web 资源目录(Web Resource Directory)标记
打开项目配置
按图示创建 web.xml 配置文件
(注意看黄框部分,就是上一步骤,webapp 会被标记为 Web 资源目录的原因)
注意按需要修改路径
最后效果
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>
|
添加 “工件”
开发测试选第二个,生产发布选第一个
Application context 这里可以把路径缩减一下
这里基本按默认就可以
启动 Tomcat
后台显示启动、部署成功
浏览器正常显示 HelloWorld 页面
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>
|
客户端发送信息
服务端控制台按预期输出信息
客户端正常接收到服务端返回的信息
打包之前,先把下面这几个地方的 JDK 都改成 1.8 版
再清理一下
进行打包
用于发布到服务器,选第一个
完成后,会在 target 目录下生成 demo1-1.0-SNAPSHOT.war 包(可以改名)
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
|
浏览器访问正常,功能测试正常
完工