博客园不常在线

有问题联系微信

微信号



微信公众号



servlet系列:简介和基本使用以及工作流程

一、简介

Servlet 是 Server 与 Applet 的缩写,是服务端小程序的意思。使用 Java 语言编写的服务器端程序,可以生成动态的 WEB 页,Servlet 主要运行在服务器端,并由服务器调用执行, 是一种按照 Servlet 标准来开发的类。 是 SUN 公司提供的一门用于开发动态 Web 资源的技术。(言外之意:要实现 web 开发,需要实现 Servlet 标准)

Servlet 本质上也是 Java 类,但要遵循 Servlet 规范进行编写,没有 main()方法,它的创建、使用、销毁都由 Servlet 容器进行管理(如 Tomcat)。(言外之意:写自己的类,不用写 main 方法,别人自动调用)

Servlet 是和 HTTP 协议是紧密联系的,其可以处理 HTTP 协议相关的所有内容。这也是 Servlet 应用广泛的原因之一。提供了 Servlet 功能的服务器,叫做 Servlet 容器,其常见容器有很多,如 Tomcat, Jetty, WebLogicServer, WebSphere, JBoss 等等。

二、Servlet实现

Servlet

在 Servlet API中最重要的是 Servlet接口,所有 Servlet都会直接或间接的与该接口发生联系,或是直接实现该接口,或间接继承自实现了该接口的类该接口包括以下五个方法

  • init
  • getServletConfig
  • service
  • getServletInfo
  • destroy

GenericServlet

提供生命周期方法init和destroy的简单实现,要编写一般的Servlet只需重写抽象service方法

HttpServlet

HttpServlet是继承GenericServlet的基础上进一步的扩展

提供将要被子类化以创建适用于Web站点的HttpServlet的抽象类。

HttpServlet的子类至少必须重写一个方法,该方法通常是以下这些方法之一

  • doGet
  • doPost
  • doPut
  • doDelete

image

三、基本使用

1.引入pom依赖

    <!--servlet-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
      <scope>provided</scope>
    </dependency>

2.实现Servlet规范,重写service方法

实现 Servlet 规范,即继承 HttpServlet 类,并到如响应的包,该类中已经完成了通信的规则,我们只需要进行业务的实现即可。

满足 Servlet 规范只是让我们的类能够满足接收请求的要求,接收到请求后需要对请求进行分析,以及进行业务逻辑处理,计算出结果,则需要添加代码,在规范中有一个叫做 service的方法,专门用来做请求处理的操作,业务代码则可以写在该方法中。

package com.mcode.servlet.controller;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * ClassName: HelloServlet
 * Package: com.mcode.servlet.controller
 * Description:
 *
 * @Author: robin
 * @Create: 2023/8/12 - 2:27 PM
 * @Version: v1.0
 */

public class HelloServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("hello,servlet!");
        resp.getWriter().write("hello,world");
    }
}

3.配置web.xml

在完成好了一切代码的编写后,还需要向服务器说明,特定请求对应特定资源

<?xml version="1.0" encoding="UTF-8"?>
<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" id="WebApp_ID" version="4.0">
    
<servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>com.mcode.servlet.controller.HelloServlet</servlet-class>
</servlet>
    
<servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>

4.配置Tomcat

image

6.运行

image

四、Servlet的工作流程

  1. 通过请求头获知浏览器访问的是哪个主机

  2. 再通过请求行获取访问的是哪个一个web应用

  3. 再通过请求行中的请求路径获知访问的是哪个资源

  4. 通过获取的资源路径在配置中匹配到真实的路径,

  5. 服务器会创建servlet对象,(如果是第一次访问时,创建servlet实例,并调用init方法进行初始化操作)

  6. 调用service(request, response)方法来处理请求和响应的操作

  7. 调用service完毕后返回服务器 由服务器讲response缓冲区的数据取出,以http响应的格式发送给浏览器

posted @ 2023-08-12 19:58  Code技术分享  阅读(62)  评论(0编辑  收藏  举报