JavaWeb(二) Servlet概述 + Servlet接口

1 Servlet概述

1.1什么是Servlet

JavaWeb(二) Servlet概述 + Servlet接口_第1张图片

Servlet是JavaWeb的 三大组件之一 ,它属于动态资源。Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要:

  • 接收请求数据;

  • 处理请求;

  • 完成响应。

  例如客户端发出登录请求,或者输出注册请求,这些请求都应该由Servlet来完成处理!Servlet需要我们自己来编写,每个Servlet必须实现javax.servlet.Servlet接口。

1.2 实现Servlet的方式(由我们自己来写)

JavaWeb(二) Servlet概述 + Servlet接口_第2张图片

实现Servlet有三种方式:

  • 实现javax.servlet.Servlet接口;

  • 继承javax.servlet.GenericServlet类;

  • 继承javax.servlet.http.HttpServlet类;

通常我们会去继承HttpServlet类来完成我们的Servlet,但学习Servlet还要从javax.servlet.Servlet接口开始学习。

  1. JavaEE 这些类不在jdk中, 在Servlet-api的jar中

  2. Servlet的类对象由Web服务器创建(Tomcat), Servlet的方法大部分由Tomcat来调用

init(),service(),destory()都是Tomcat调用,如果程序员调用,没有处理请求的能力

getServletConfig().getServletInfo() 给程序员调用

1.3编写Servlet

  1. 创建一个类实现Servlet接口

  2. 在项目目录/web/WEB-INF/web.xml文件中配置Servlet

Servlet: 动态资源

资源怎么被访问: url

2 Servlet接口

2.1 Servlet的生命周期

所谓xxx的生命周期,就是说xxx的出生、服务,以及死亡。Servlet生命周期也是如此!与Servlet的生命周期相关的方法有:

  • void init(ServletConfig);

  • void service(ServletRequest,ServletResponse);

  • void destroy();

描述Servlet从生到死的过程:

JavaWeb(二) Servlet概述 + Servlet接口_第3张图片

  1. Servlet默认创建是在第一次请求的时候创建( 第一次惩罚: 耗时多一点: 多了创建Servlet对象的过程)

  2. 调用init() 方法, 做初始化

  3. 每请求一次, Servlet的service() 执行一次, 处理用户请求

  4. 当服务器关闭时候, 先销毁该tomcat创建所有的Servlet, 销毁Servlet对象之前, 调用destroy()方法

2.2 Servlet接口相关类型

在Servlet接口中还存在三个我们不熟悉的类型:

  • ServletRequest:service() 方法的参数,它表示请求对象,它封装了所有与请求相关的数据,它是由服务器创建的;

  • ServletResponse:service()方法的参数,它表示响应对象,在service()方法中完成对客户端的响应需要使用这个对象;

  • ServletConfig:init()方法的参数,它表示Servlet配置对象,它对应Servlet的配置信息,那对应web.xml文件中的元素。

  • ServletConfig 对应Servlet的配置

     
            
            AServlet
            
            com.fs.web.AServlet
        
        
        
            AServlet
            
            /AServlet
        

2.2.1 ServletRequest和ServletResponse

  • ServletRequest 请求对象, 当用户发起请求时, Tomcat会为这次请求创建一个请求, 请求对象包含很多信息(客户端的信息ip,端口, 请求url,请求参数), tomcat服务器处理请求时,创建一个线程来处理, 服务器这边是多线程服务

  • ServletResponse: 响应对象, 当用户发起请求, tomcat除了创建请求对象,还会创建响应对象, 由服务器给客户端数据通过响应对象传递的

JavaWeb(二) Servlet概述 + Servlet接口_第4张图片

3 GenericServlet

3.1 GenericServlet概述

GenericServlet是Servlet接口的实现类,我们可以通过继承GenericServlet来编写自己的Servlet。

3.2 GenericServlet的init()方法

在GenericServlet中,定义了一个ServletConfig config实例变量,并在init(ServletConfig)方法中把参数ServletConfig赋给了实例变量。然后在该类的很多方法中使用了实例变量config。

如果子类覆盖了GenericServlet的init(StringConfig)方法,那么this.config=config这一条语句就会被覆盖了,也就是说GenericServlet的实例变量config的值为null,那么所有依赖config的方法都不能使用了。如果真的希望完成一些初始化操作,那么去覆盖GenericServlet提供的init()方法,它是没有参数的init()方法,它会在init(ServletConfig)方法中被调用。

3.3 实现了ServletConfig接口

GenericServlet还实现了ServletConfig接口,所以可以直接调用getInitParameter()、getServletContext()等ServletConfig的方法。

你可能感兴趣的:(笔记,servlet,java,前端,intellij-idea,java-ee)