Web基础知识(2)- Java Servlet (二)
创建 Servlet 程序
本文将在 Windows 下使用 IntelliJ IDEA 和 Apache Maven 创建一个简单的 Servlet 程序。在开始之前,确保已经正确搭建了 Servlet 开发环境,如何搭建 Servlet 开发环境见:
Windows版本 : Windows 10 Home (20H2)
IntelliJ IDEA:Community Edition for Windows 2020.1.4
Apache Maven:3.8.1
Tomcat Server: 9.0.52
1. 在 IDEA 上创建 Maven Webapp 项目
1) 运行 IDEA
点击菜单 New 创建 Project:
New Project -> Project Type: Maven -> Project SDK: 1.8 -> Check "Create from archtype" -> select "org.apache.maven.archtypes:maven-archtype-webapp" -> Next
Name: WebBasic
GroupId: com.example
ArtifactId: WebBasic
-> Next
Maven home Directory: C:\Applications\java\apache-maven-3.8.1
User settings file: C:\Applications\java\apache-maven-3.8.1\conf\settings.xml
Local repository: C:\Applications\java\maven-repository
-> Finish
2) 生成的项目目录结构和文件
|-- src
| |-- main
| |-- webapp
| |-- WEB-INF
| | |- web.xml
| |
| |-- index.jsp
|
|-- pom.xml
2. 使用 tomcat7-maven-plugin, 将 tomcat 内嵌运行
1) 修改 pom.xml
*注: path 项目访问路径 本例:localhost:9090, 如果配置的aa,则访问路径为 localhost:9090/aa;uriEncoding 非必需项。
2) 运行
Run -> Edit configurations -> Click "+" -> Select "Maven"
Command line: clean tomcat7:run
Name: WebBasic [clean,tomcat7:run]
Before Launch:
Click "+", select "Launch Web Browser"
Browser: default
Url: http://localhost:9090
-> OK
Run -> Run "WebBasic [clean,tomcat7:run]"
Goals: help, deploy, deploy-only, redeploy, redeploy-only, undeploy,
exec-war, exec-war-only, run, run-war, run-war-only,
standalone-war, standalone-war-only, shutdown
3) 打包 War 后运行
Run -> Edit configurations -> Click "+" -> Select "Maven"
Command line: clean tomcat7:run-war
Name: WebBasic [clean,tomcat7:run-war]
Before Launch:
Click "+", select "Launch Web Browser"
Browser: default
Url: http://localhost:9090
-> OK
Run -> Run "WebBasic [clean,tomcat7:run-war]"
Check target/WebBasic.war
4) 打包 War (只打包)
在IDE中项目列表 -> 点击鼠标右键 -> Maven -> Reload Project
View -> Tool Windows -> Maven -> WebBasic -> Lifecycle -> Clean | Package
Check target/WebBasic.war
3. 导入 Servlet 依赖包
访问 http://www.mvnrepository.com/,查询 Servlet
修改 pom.xml:
...
...
在IDE中项目列表 -> 点击鼠标右键 -> Maven -> Reload Project
4. 创建 TestServlet 类
新建 src/main/java 目录,如果它不是 "Sources Root",把它 Mark as "Sources Root"。 在 src/main/java 目录下添加 com.example 包(Package),再在 com.example 包下添加 TestServlet 类。
TestServlet 类对应文件是 src/main/java/com/example/TestServlet.java:
1 package com.example; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 import javax.servlet.ServletConfig; 7 import javax.servlet.ServletException; 8 import javax.servlet.http.HttpServlet; 9 import javax.servlet.http.HttpServletRequest; 10 import javax.servlet.http.HttpServletResponse; 11 12 public class TestServlet extends HttpServlet { 13 14 protected void doGet(HttpServletRequest request, HttpServletResponse response) 15 throws ServletException, IOException { 16 17 ServletConfig config = getServletConfig(); 18 19 response.setContentType("text/html;charset=UTF-8"); 20 PrintWriter writer = response.getWriter(); 21 writer.write(config.getServletName() + " -> doGet()
"); 22 writer.close(); 23 24 } 25 26 protected void doPost(HttpServletRequest request, HttpServletResponse response) 27 throws ServletException, IOException { 28 //doGet(request, response); 29 } 30 }
5. 修改 web.xml
12 3 Web Basic 4 56 8 9TestServlet 710 14TestServlet 11class>com.example.TestServlet class> 121 1315 18 19TestServlet 16/ 17
6. 测试运行
跳转到第 2 步d的 “3) 打包 War 后运行” ,生成 target/WebBasic.war 后运行。
访问 http://localhost:9090
TestServlet -> doGet()
7. 部署到 Tomcat 运行
把 WebBasic.war 复制到 Tomcat 的 webapps 目录,运行中的 Tomcat 会自动解压 WebBasic.war 到 WebBasic目录。
WebBasic 的目录结构如下:
|- WEB-INF
| |- Classes
| | |- com
| | |- example
| | |- TestServlet.class
| |- web.xml
|
|- META-INF
| |- maven
| | |- com.example
| | |- WebBasic
| | |- pom.properties
| | |- pom.xml
| |- MANIFEST.MF
| |- war-tracker
|
|- index.jsp
Tomcat 运行在 8080 端口,访问 http://localhost:8080/WebBasic/
TestServlet -> doGet()