# JAVA Web 工程,从创建到部署   # JAVA Web 工程,从创建到部署   本文记录在不使用框架的情况下(基本功别忘了),在 IDEA 中开发 Web 工程以及最后发布到服务器的过程 ------ ## 项目开发   ### 创建项目 {{< image src="0731a.png" caption="JAVA Web 工程(`1.新建项目`)" >}} {{< image src="0731b.png" caption="JAVA Web 工程(`2.设置目录`)" >}} 一般设置好项目文件夹所在,名字按需要起就可以,其他可以用缺省值   ### 编辑 pom.xml 配置文件 ```xml 4.0.0 com.fakeproject demo1 1.0-SNAPSHOT war UTF-8 UTF-8 1.8 1.8 javax.servlet javax.servlet-api 4.0.1 provided ``` 这里使用 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,从而导致 “编译版本高于运行版本” 报错。   ### 创建 webapp 目录 在 `/src/main` 下创建 webapp 目录 {{< image src="0731c.png" caption="JAVA Web 工程(`3.新建目录`)" >}} 因为前面在 pom.xml 配置文件中设置了打包方式为 war 包,`/src/main/webapp` 目录会自动带上 Web 资源目录(Web Resource Directory)标记 {{< image src="0731d.png" caption="JAVA Web 工程(`4.webapp`)" >}}   ### 创建 Web.xml 配置文件 打开项目配置 {{< image src="0731e.png" caption="JAVA Web 工程(`5.项目设置`)" >}} 按图示创建 web.xml 配置文件 (注意看黄框部分,就是上一步骤,webapp 会被标记为 Web 资源目录的原因) {{< image src="0731f.png" caption="JAVA Web 工程(`6.创建 web.xml 配置文件`)" >}} 注意按需要修改路径 {{< image src="0731g.png" caption="JAVA Web 工程(`7.修改 web.xml 路径`)" >}} 最后效果 {{< image src="0731h.png" caption="JAVA Web 工程(`8.效果`)" >}}   ### 编写一个 HelloWorld 页面 ```html Index

Hello World !

```   ### 配置 Tomcat(IDEA 开发测试环境) {{< image src="0731j.png" caption="JAVA Web 工程(`9.添加 Tomcat`)" >}} 添加 “工件” {{< image src="0731k.png" caption="JAVA Web 工程(`10.添加工件`)" >}} 开发测试选第二个,生产发布选第一个 {{< image src="0731l.png" caption="JAVA Web 工程(`11.选第二个`)" >}} Application context 这里可以把路径缩减一下 {{< image src="0731m.png" caption="JAVA Web 工程(`12.简化一下路径`)" >}} 这里基本按默认就可以 {{< image src="0731n.png" caption="JAVA Web 工程(`13.默认设置`)" >}}   ### 测试 HelloWorld 启动 Tomcat {{< image src="0731o.png" caption="JAVA Web 工程(`14.启动测试`)" >}} 后台显示启动、部署成功 {{< image src="0731p.png" caption="JAVA Web 工程(`15.Tomcat 启动日志`)" >}} 浏览器正常显示 HelloWorld 页面 {{< image src="0731q.png" caption="JAVA Web 工程(`16.浏览器访问正常`)" >}}   ### 编写一个 Servlet ```java 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 ```xml HelloServlet com.fakeproject.servlet.HelloServlet HelloServlet /hello_servlet ``` 编写一个 jsp 测试 ```jsp <%-- src/main/webapp/hello_jsp.jsp --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> HelloJsp

Hello JSP !


请输入发给服务器的信息:
``` index.html 加一下 jsp 页面的链接 ```html
./hello_jsp.jsp ```   ### 测试 Servlet 客户端发送信息 {{< image src="0731r.png" caption="JAVA Web 工程(`17.浏览器给服务器发送信息`)" >}} 服务端控制台按预期输出信息 {{< image src="0731s.png" caption="JAVA Web 工程(`18.服务器接收到信息`)" >}} 客户端正常接收到服务端返回的信息 {{< image src="0731t.png" caption="JAVA Web 工程(`19.浏览器接收到服务器返回的信息`)" >}}   ------ ## 打包成 war 包 打包之前,先把下面这几个地方的 JDK 都改成 1.8 版 {{< image src="0731u1.png" caption="JAVA Web 工程(`20.修改工程的 JDK 版本`)" >}} {{< image src="0731u2.png" caption="JAVA Web 工程(`21.修改模块的 JDK 版本`)" >}} {{< image src="0731u3.png" caption="JAVA Web 工程(`22.修改编译器的 JDK 版本`)" >}} 再清理一下 {{< image src="0731u.png" caption="JAVA Web 工程(`23.清理一下`)" >}} 进行打包 {{< image src="0731v.png" caption="JAVA Web 工程(`24.打包`)" >}} 用于发布到服务器,选第一个 {{< image src="0731w.png" caption="JAVA Web 工程(`25.选第一项`)" >}} 完成后,会在 target 目录下生成 demo1-1.0-SNAPSHOT.war 包(可以改名) {{< image src="0731x.png" caption="JAVA Web 工程(`26.打包结果`)" >}}   ------ ## 发布到 Web 服务器 CentOS7 安装 tomcat ```bash yum install -y tomcat systemctl start tomcat systemctl enable tomcat systemctl status tomcat ```   防火墙开启 http 服务,并将 80 端口转发至 8080 端口,[参考](https://wangchujiang.com/linux-command/c/firewall-cmd.html) ```bash 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 目录 ```bash /var/lib/tomcat/webapps └── demo1.war ```   浏览器访问正常,功能测试正常 {{< image src="0731y.png" caption="JAVA Web 工程(`27.部署测试结果`)" >}}   完工