黑马程序员技术交流社区

标题: Serlvet [打印本页]

作者: z889815600    时间: 2018-5-29 23:23
标题: Serlvet
Servlet

1. 什么是Servlet
  * Servlet是JavaWeb三大组件之一(Servlet、Filter、Listener)
  * Servlet是用来处理客户端请求的动态资源
  * Servlet的任务有:
    > 获取请求数据
    > 处理请求
    > 完成响应
  * Servlet接口方法:
    > void init(ServletConfig)
    > void service(ServletRequest,ServletResponse)
    > void destory()
    > ServletConfig getServletConfig()
    > String getServletInfo()

2. 实现Servlet的方式
  * 实现Servlet接口(不方便)
  * 继承GenericServlet类(不方便)
  * 继承HttpServlet类(方便)

3. Servlet第一例
  * 写一个类cn.itcast.MyServlet,实现Servlet接口
  * 实现service()方法,在其中给出System.out.println("hello servlet!");
  * 在web.xml文件中指定Servlet的访问路径为:/myservlet
<servlet>
  <servlet-name>xxx</servlet-name>
  <servlet-class>cn.itcast.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>xxx</servlet-name>
  <url-pattern>/myservlet</url-pattern>
</servlet-mapping>
  当用户在地址栏中访问:http://localhost:8080/day04_1/myservlet时,会执行System.out.println("hello servlet!");

===============================

Servlet生命周期

  Servlet接口一共5个方法,但其中只有三个是生命周期方法:
  * void init(ServletConfig)
  * void service(ServletRequest,ServletResponse)
  * void destory()

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

  2). 服务器初始化Servlet:
  * 当服务器创建Servlet实例后会马上调用Servlet的init(ServletConfig)方法,完成对Servlet的初始化;
  * init(ServletConfig)只会被调用一次
  * 服务器会在调用init()方法时传递ServletConfig参数
  
  3). 服务器使用Servlet处理请求:
  * 当Servlet被请求时,服务器会调用Servlet的service(ServletRequest,ServletResponse)方法
  * service(ServletRequest,ServletResponse)方法每处理一次请求,就会被调用一次,所以它可能会被调用N次
  * 因为Servlet是单例的,所以可能在同一时刻一个Servlet对象会被多个请求同时访问,所以这可能出现线程案例问题
  * Servlet不是线程案例的,这有助与提高效率,但不能让Servlet具有状态,以免多个线程争抢数据

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2