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

        

            
               

                   
                        org.apache.tomcat.maven
                        tomcat7-maven-plugin
                        2.2

                                        
                            /
                            9090
                            UTF-8
                       

                   


               

            


        


        *注: 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:

    

        
            ...

           
           
              javax.servlet
              javax.servlet-api
              4.0.1
              provided
           

            
            ...
       


    


    在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

 1     
 2         
 3         Web Basic
 4 
 5         
 6             TestServlet
 7         
 8 
 9         
10             TestServlet
11             class>com.example.TestServletclass>
12             1
13         
14         
15             TestServlet
16             /
17         
18 
19     


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()