JavaWeb(二) Servlet概述 + Servlet接口

1 Servlet概述

1.1什么是Servlet

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

  • 接收请求数据;

  • 处理请求;

  • 完成响应。

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

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

实现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从生到死的过程:

  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文件中的<servlet>元素。

  • ServletConfig 对应Servlet的配置

     <servlet>
            <!--Servlet名称: 自定义, 推荐类名 -->
            <servlet-name>AServlet</servlet-name>
            <!--对应的Servlet类: 全限定名(包.类名)-->
            <servlet-class>com.fs.web.AServlet</servlet-class>
        </servlet>
        <!--绑定url
         Servlet类与url的映射
        -->
        <servlet-mapping>
            <servlet-name>AServlet</servlet-name>
            <!--绑定的url
                自定义
                推荐使用  /类名
                后面还有通配符 * 写法
             -->
            <url-pattern>/AServlet</url-pattern>
        </servlet-mapping>

2.2.1 ServletRequest和ServletResponse

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

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

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的方法。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在下张仙人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值