• 七步走,让你快速编写一个最简单的Servlet项目


    七步走,让你快速编写一个最简单的Servlet项目

    Tomcat是一个HTTP服务器,Tomcat开放了一组API可以让开发人员基于Tomcat进行二次开发,写出更多的业务逻辑,而开放的这组API就叫做Servlet。

    快速上手Servlet项目

    1. 创建一个maven项目
      创建一个Servlet项目,即创建一个maven项目。maven项目可以帮助我们更好地进行依赖管理和项目打包。Servlet项目需要引入Servlet API的jar包。

    2. 引入Servlet API
      去maven中央仓库中找到Servlet API 3.1版本。已经找到了

    
    
        javax.servlet
        javax.servlet-api
        3.1.0
        provided
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这段代码复制到maven项目的pom.xml标签中等待一会儿,maven就会自动帮助我们下载完成Servlet的API了。

    ![[Pasted image 20220820172727.png]]

    其中标签表示当前的jar包只会在开发调试阶段使用,在最终打包部署的时候,就不会引入这个jar包了。这是因为Tomcat中内置了Servlet,所以将Servlet项目部署Tomcat之后就已经有Servlet所依赖的环境了,就不用额外再将Servlet打包在项目中了。

    1. 编写逻辑

    基于Servlet的开发流程和一个一般的TCP/HTTP服务器是一样的。

    1. 进行初始化,即将一个Servlet项目的中的类和HTTP请求进行关联
    2. 读取HTTP请求,Servlet解析字符串,生成一个HttpServletRequest
    3. 根据HttpServletRequest请求对象,生成对应的响应返回HttpServletReponse
    4. 将HttpServletReponse对象转换成HTTP响应发送出去

    其中初始化,读取HTTP请求,发送HTTP响应的工作都由Servlet帮助我们做好了,我们只需要根据特定HTTP请求转化成的HttpServletRequest进行计算和处理,然后构建一个HttpServletReponse对象返回响应即可。即需要进行中间数据处理逻辑的部分

    • 编写一个简单的hello world
    // @WebServlet是Servlet提供的一个注解,作用就是将 HTTP路径请求 和 当前类 关联起来  
    // 如果当前请求是GET请求,就会调用doGET()
    // 如果当前请求是POST请求,就会调用doPOST()
    @WebServlet("/hello")
    public class HelloServlet extends HttpServlet {  // 需要继承HttpServlet类
        @Override  
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {  
            // 一定要将HttpServlet这个父类中的doGet()删除,因为父类doGet()就是直接构造了一个状态码为405的错误响应  
            // super.doGet(req, resp);  
            resp.getWriter().write("hello Servlet");  
        }  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    我们只需要重写HttpServlet中的方法,在Tomcat中会自动创建HttpServlet对象,并调用请求对应的方法。

    1. 创建一些必要的目录和文件

    main目录下创建webapp目录,在webapp目录下创建WEB-INF目录,在WEB-INF目录下创建一个web.xml。最后在web.xml中先写入最简洁的配置。

    DOCTYPE web-app PUBLIC  
            "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  
            "http://java.sun.com/dtd/web-app_2_3.dtd" >  
      
    <web-app>  
         <display-name>Archetype Created Web Applicationdisplay-name>  
    web-app>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    ![[Pasted image 20220820184519.png]]

    1. 打包

    给项目代码进行编译之后进行压缩打包,直接基于maven进行项目的打包。

    ![[Pasted image 20220820184718.png]]

    在终端显示BUILD SUCCESS之后,就会生成一个target文件夹,其中就会出现.jar包。

    但是Tomcat不能识别jar包,而只能识别war包。jar包是一个普通的java程序打包的结果,里面只会含有一些.class文件。但是war包是一个java web程序,其中除了.class文件之外,还会有html,css,js,图片等资源,这些资源被打包成war包才能被Tomcat识别。

    如果想要让maven将项目打包成war包的话,就需要在pom.xml中添加war

      
    <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.0modelVersion>  
      
        <groupId>org.examplegroupId>  
        <artifactId>test_mavenartifactId>  
        <version>1.0-SNAPSHOTversion>  
      
          
        <dependencies>  
              
            <dependency>  
                <groupId>javax.servletgroupId>  
                <artifactId>javax.servlet-apiartifactId>  
                <version>3.1.0version>  
                <scope>providedscope>  
            dependency>  
        dependencies>  
      
        <packaging>warpackaging>  
    project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    war包的名字会默认是项目的actifackId + version,但是将war包部署到Tomcat上之后,Tomcat会自动解压,生成一个同名的目录。之后在浏览器访问的时候都需要带上这个目录名,所以这个目录名最好起的比较简洁。

    如果想要让maven打包的同时设置war包的名字的话,对pom.xml进行设置

      
    <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.0modelVersion>  
      
        <groupId>org.examplegroupId>  
        <artifactId>test_mavenartifactId>  
        <version>1.0-SNAPSHOTversion>  
      
          
        <dependencies>  
              
            <dependency>  
                <groupId>javax.servletgroupId>  
                <artifactId>javax.servlet-apiartifactId>  
                <version>3.1.0version>  
                <scope>providedscope>  
            dependency>  
        dependencies>  
      
        <packaging>warpackaging>  
    	
    	
        <build>  
            <finalName>test_servletfinalName>  
        build>  
      
    project>
    
    • 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
    1. 部署程序

    将打包好的war包复制到Tomcatwebapps目录下就完成了项目部署。

    在启动了Tomcat之后,在webapps目录下就会生成一个同名的目录。

    ![[Pasted image 20220820190409.png]]

    test_servler项目中有两个文件夹META-INFWEB-INF
    ![[Pasted image 20220820190548.png]]

    • MATE-INF:存放webapp依赖的第三方jar包
    • WEB-INF:web.xml和编译生成好的.class文件
    1. 验证一些程序是否正常工作

    通过浏览器来访问一下Tomcat,构建一个请求,判断是否能够正正常构建响应。

    通过localhost:8080访问Tomcat,然后加上war包的目录名test_servlet,最后加上GET请求的路径hello,就返回了HelloServlet中返回的"hello Servlet“字符串。

    ![[Pasted image 20220820191434.png]]

    ![[Pasted image 20220820191113.png]]

  • 相关阅读:
    用幻灯片讲解C++中的C语言风格数组
    MySQL进阶
    开源更安全? yum源配置/rpm 什么是SSH?
    HTML+CSS网页设计期末课程大作业:【中国传统文化——古诗词】学生网页设计作品 dreamweaver作业静态HTML网页设计
    STM32读写RTC内部时钟外设,设置和显示时钟
    Jquery学习笔记
    react跳转页面redux数据被清除
    (十)Docker的基本操作
    springmvc
    嵌入式单片机无刷电机FOC控制与实现详解
  • 原文地址:https://blog.csdn.net/zhybiancheng/article/details/126443365