Servlet 概述

一、什么是Servlet

  Servlet是用Java编写的Server端程序,它与协议和平台无关。Servlet运行于Java-enabled Web Server中。Java Servlet能够动态地扩展Server的能力,并采用请求-响应模式提供Web服务。

  最先支持Servlet技术的是JavaSoft的Java Web Server。此后,一些其它的基于Java的Web Server开始支持标准的Servlet API。

二、Servlet有什么做用

  Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为:

  客户端发送请求至服务器端

  服务器将请求信息发送至Servlet

  Servlet处理请求生成响应内容并将其传给Server

  服务器将响应返回给客户端

  Servlet看起来像是一般的Java程序。Servlet导入特定的属于Java Servlet API的包。由于是对象字节码,可动态地从网络加载,能够说Servlet对Server就如同Applet对Client同样,可是,因为Servlet运行于Server中,它们并不须要一个图形用户界面。从这个角度讲,Servlet也被称为Faceless Object。

三、Servlet的优点

  Servlet能够和其余资源(文件、数据库、Applet、Java应用程序等)交互,以生成返回给客户端的响应内容。若是须要,还能够保存请求-响应过程当中的信息。

  采用Servlet,服务器能够彻底受权对本地资源的访问(如数据库),而且Servlet自身将会控制外部用户的访问数量及访问性质

  Servlet能够是其它服务的客户端程序,例如,它们能够用于分布式的应用系统中,能够从本地硬盘,或者经过网络从远端硬盘激活Servlet。

  Servlet可被连接(chain)。一个Servlet能够调用另外一个或一系列Servlet,即成为它的客户端。

  采用Servlet Tag技术,能够在HTML页面中动态调用Servlet。

  Servlet API与协议无关。它并不对传递它的协议有任何假设。

  像全部的Java程序同样,Servlet拥有面向对象Java语言的全部优点

  Servlet提供了Java应用程序的全部优点——可移植、稳健、易开发。使用Servlet的Tag技术,Servlet可以生成嵌于静态HTML页面中的动态内容。

  一个Servlet被客户端发送的第一个请求激活,而后它将继续运行于后台,等待之后的请求。每一个请求将生成一个新的线程,而不是一个完整的进程。多个客户可以在同一个进程中同时获得服务。通常来讲,Servlet进程只是在Web Server卸载时被卸载。

四、Servlet的生命周期

  Servlet的生命周期是由Servlet的容器来控制的,它能够分为3个阶段:初始化,运行,销毁。

  初始化阶段:当Servlet容器启动时,或者在容器检测到须要这个Servlet来响应第一个请求时,建立Servlet实例

  ①、加载:Servlet容器加载servlet类,把servlet类的.class文件中的数据读到内存中。

  ②、而后Servlet容器建立一个ServletConfig对象。ServletConfig对象包含了Servlet的初始化配置信息。

  ③、实例化:Servlet容器建立一个servlet对象。

  ④、初始化:Servlet容器调用servlet对象的init方法进行初始化,Servlet实例可使用容器为它准备的ServletConfig对象从Web应用程序的配置信息(在web.xml中配置)中获取初始化的参数信息。 java

在web.xml文件中为servlet设置了<load-on-startup>元素
<servlet>
    <servlet-name>servlet1</servlet-name>
    <servlet-class>servlet.servlet1</servlet-class>
    <load-on-startup>0</load-on-startup>
</servlet>
说明:
在servlet的配置当中,<load-on-startup>0</load-on-startup>的含义是:标记容器是否在启动的时候就加载这个servlet。
当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;当是一个负数时或者没有指定时,则指示容器在该servlet第一次被请求时才加载。正数的值越小,启动该servlet的优先级越高。
当web应用被从新启动时,web应用中的全部servlet会在特定的时间被从新初始化。 web

  运行阶段:

  当servlet容器接收到一个请求时,servlet容器会针对这个请求建立ServletRequest和ServletResponse对象。而后调用service方法,并把这两个参数传递给service方法。service方法经过ServletRequest对象得到请求的信息,并处理该请求。再经过ServletResponse对象生成这个请求的响应结果,而后销毁ServletRequest和ServletResponse对象。咱们无论这个请求是post提交的仍是get提交的,最终这个请求都会由service方法来处理。

  销毁阶段:

  当Web应用被终止时,servlet容器会先调用servlet对象的destrory方法,而后再销毁servlet对象,同时也会销毁与servlet对象相关联的ServletConfig对象。咱们能够在destroy方法的实现中,释放servlet所占用的资源,如关闭数据库链接,关闭文件输入输出流等。

  在这里该注意的地方:在servlet生命周期中,servlet的初始化和和销毁阶段只会发生一次,而service方法执行的次数则取决于servlet被客户端访问的次数。

五、Servlet怎么处理一个请求

  当用户发送一个请求到某个Servlet的时候,Servlet容器会建立一个ServletRequst和ServletResponse对象。在ServletRequst对象中封装了用户的请求信息,而后Servlet容器把ServletRequst和ServletResponse对象传给用户所请求的Servlet,Servlet把处理好的结果写在ServletResponse中,而后Servlet容器把响应结果传给用户。

六、Servlet与JSP有什么区别

  a、jsp经编译后就是servlet 。

  a、jsp更擅长页面(表现)。servlet更擅长逻辑编辑(最核心的区别)。

  c、在实际应用中采用Servlet来控制业务流程,而采用JSP来生成动态网页。在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层。

七、Servlet里的cookie技术

  cookies是一种WEB服务器经过浏览器在访问者的硬盘上存储信息的手段,是由Netscape公司开发出来的。

  cookie技术的好处:

    a、Cookie有效期限未到时,Cookie能使用户在不键入密码和用户名的状况下进入曾经浏览过的一些站点。

    b、Cookie能使站点跟踪特定访问者的访问次数、最后访问时间和访问者进入站点的路径。

建立一个cookie
//里面的两个参数分别是cookie的名和cookie的值
response.addCookie(new Cookie("abc","10000000"));

使用cookie
Cookie[] cook =request.getCookies();//用一个Cookie数组来接收
for(int j=0;j<cook.length;j++){//经过循环来打印Cookie
	cook[j].getName();//取cookie的名
	cook[j].getValue();//取cookie的值
}

八、Servlet里的过滤器

  (1)过滤器的主要做用

  a、任何系统或网站都要判断用户是否登陆

  b、网络聊天系统或论坛中过滤非法文字

  c、统一解决编码问题

  (2)怎么建立一个过滤器:

  a、编写一个普通的class类,实现Filter接口(javax.servlet.Filter)。

  b、重写接口里面的三个方法:init,doFilter,destroy。

  c、而后在web.xml配置过滤器。

九、Servlet里的监听器

  监听器的做用:自动执行一些操做

  三种servlet监听器:在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为ServletContext、HttpSession 和 ServletRequest 这三个域对象

  怎么建立一个session监听器:

  a、编写一个普通的class类,若是监听HttpSession的操做,则实现HttpSessionListener接口

  b、而后重写里面的方法:
public void sessionCreated(HttpSessionEvent arg0) {} // 建立

public void sessionDestroyed(HttpSessionEvent arg0) {} // 销毁
相关文章
相关标签/搜索