Servlet的详细介绍

Servlet

1.什么是 Servlet
  • Servlet是JavaWeb的三大组件之一(Servlet、Filter(过滤器)、Listener(监听器)),它属于动态资源。
  • 从广义上来讲,Servlet规范是Sun公司制定的一套技术标准,包含与Web应用相关的一系列接口,是Web应用实现方式的宏观解决方案。而具体的Servlet容器负责提供标准的实现。
  • 从狭义上来讲,Servlet指的是javax.servlet.Servlet接口及其子接口,也可以指实现了Servlet接口的实现类。
  • 如果把Web应用比作一个餐厅,Servlet就是餐厅中的服务员——负责接待顾客、上菜、结账。
  • Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理。
  • 在Servlet中通常需要:
    1.接收请求数据;
    2.处理请求;
    3.完成响应。
2. 为什么要选择使用Servlet
  • 使用一个接口的传统方式:
    1.创建一个类实现接口
    2.new 实现类对象
    3.调用类的方法等

  • 使用Servlet接口的方式
    1.创建一个类实现Servlet接口
    2.在web.xml中“注册”这个实现类
    3.Tomcat(Servlet容器)会创建实现类对象

servlet不需要我们自己创建对象,由Tomcat来完成,这样就省了很多不必要的麻烦。

实现Servlet有三种方式:

实现javax.servlet.Servlet接口(不方便);
继承javax.servlet.GenericServlet类(不方便);
继承javax.servlet.http.HttpServlet类(方便);
  • Servlet中的方法大多数不由我们来调用,而是由Tomcat来调用。并且Servlet的对象也不由我们来创建,由Tomcat来创建!
3.使用Servlet

一般通过web.xml文件来访问Servlet
1.给Servlet指定一个Servlet路径(让Servlet 与一个路径绑定在一起)
2.浏览器访问Servlet路径

<servlet>
	<!-- 为Servlet指定一个名称,以便于引用 -->
	<servlet-name>XXX</servlet-name>
	<!-- 注册Servlet实现类的全类名 -->
	<servlet-class>hello.web.servlet.AServlet</servlet-	class>
</servlet>
<!-- 建立一个从虚拟路径到Servlet之间的映射	关系 -->
<servlet-mapping>
	<!-- 引用Servlet名称 -->
	<servlet-name>XXX</servlet-name>
	<!-- 映射到Servlet的虚拟路径:“/ helloworld”-->
	<!--必须以“/”开头,路径可任意 -->
	<url-pattern>/helloworld</url-pattern>
</servlet-mapping> 
  • 在web.xml中配置Servlet的是为了把访问路径与一个Servlet绑定到一起,上面配置是把访问路径:“/helloworld”与“hello.web.servlet.AServlet”绑定到一起。

      <servlet>:指定AServlet这个Servlet的名		称为XXX;
      <servlet-mapping>:指定/helloworld访问路径所以访问的Servlet名为XXX 。
      <servlet>和<servlet-mapping>通过<servlet-name>这个元素关联在一起了!
    
4.Servlet的生命周期
  • 所谓xxx的生命周期,就是说xxx的出生、服务,以及死亡。Servlet生命周期也是如此。

  • 与Servlet的生命周期相关的方法有:

      void init(ServletConfig);
      void service(ServletRequest,ServletResponse);
      void destroy();
    
5.服务器使用Servlet的过程

1) 服务器创建Servlet

  • 当Servlet第一次被请求时,或服务器启动时,服务器会创建Servlet实例。
  • 服务器默认是在servlet第一次被请求时创建Servlet实例,如果希望服务器启动时就创建Servlet实现需要在web.xml中配置。
  • 服务器只为一个类型的Servlet创建一个实例对象,所以Servlet是单例的;

2) 服务器初始化Servlet:

  • 当服务器创建Servlet实例后会马上调用Servlet的init(ServletConfig)方法,可以把对Servlet的初始化工作放到init方法中;
  • init(ServletConfig)只会被调用一次,而且一个Servlet的一生。这个方法只会被调用一次。这好比小孩子出生后马上就要去剪脐带一样,而且剪脐带一生只有一次。
  • 服务器会在调用init()方法时传递ServletConfig参数

3) 服务器使用Servlet处理请求:

  • 当Servlet被请求时,服务器会调用Servlet的service(ServletRequest,ServletResponse)方法
  • 服务器接收到一次请求,就会调用service(ServletRequest,ServletResponse)se方法一次,所以它可能会被调用N次
  • 可以把处理请求的代码写到service()方法中

4)服务器销毁Servlet

  • 服务器通常不会销毁Servlet,通常只有在服务器关闭时才会销毁Servlet
  • 服务器会在销毁Servlet之前调用Servlet的destory()方法
  • 可以在destory()方法中给出释放Servlet占有的资源,但通常Servlet是没什么可要释放的,所以该方法一般都是空的

总结来说就是

  • Servlet第一次请求
    1.创建对象
    2.执行init()方法
    3.执行service()方法
  • 后面请求
    执行service()方法
  • 对象销毁前
    执行destroy()方法

另外:

  • getServletConfig():可以用来获取Servlet的配置信息

  • getServletInfo():可以用来获取Servlet的信息

  • 一个类只有一个对象;当然可能存在多个Servlet类。Servlet类由我们来写,但对象由服务器来创建,并且由服务器来调用相应的方法。

关于HttpServlet和其他相关的知识以后再介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值