目录
一、简介
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
三、基本使用
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
6.运行
四、Servlet的工作流程
-
通过请求头获知浏览器访问的是哪个主机
-
再通过请求行获取访问的是哪个一个web应用
-
再通过请求行中的请求路径获知访问的是哪个资源
-
通过获取的资源路径在配置中匹配到真实的路径,
-
服务器会创建servlet对象,(如果是第一次访问时,创建servlet实例,并调用init方法进行初始化操作)
-
调用service(request, response)方法来处理请求和响应的操作
-
调用service完毕后返回服务器 由服务器讲response缓冲区的数据取出,以http响应的格式发送给浏览器