java web servlet servlet过滤器和监听器

 这两天学习了下servlet(小型服务程序),以下是我的学习记录:

servlet:

 servlet使用java语言编写,它不仅继承了java语言中的优点,而且还对web的相关应用进行了封装,同时servlet容器还提供了对应用的相关扩展,无论是在功能、性能、安全等方面都十分优秀。


servlet与jsp之间的对比:

 servlet是使用java Servlet 接口(API)运行在web应用服务器上的java程序,其功能十分强大,它不但可以处理http请求中的业务逻辑,还可以输出HTML代码来显示指定页面。而jsp是一种在servlet规范之上的动态网页技术,在jsp页面中,同样可以编写业务逻辑处理http请求,也可以通过html代码来编辑页面,在实现功能上,servlet与jsp貌似相同,实质存在一定的区别,主要表现在以下几个方面:

  (1)角色不同

        jsp更具有显示层的角色,servlet更具有承担客户请求与业务处理的中间角色。

  (2)编程方法不同

       servlet遵循java的标准,jsp遵循一定脚本语言规范。

  (3)servlet需要编译后运行

       servlet需要在java编译器编译后才可以运行,而jsp则与之相反,jsp与由jsp container对其进行管理

  (4)速度不同



  servlet的速度高于jsp,因为在每次执行不同的内容的动态jsp页面时,jsp container都要对其自动编译。而servlet在编译完成一次后,则不需要再次编译,可以直接获取及输出动态内容。

 代码啥的我就不详细了,想要学习的看:servlet源码分析



servlet的结构体系图(有常用的接口和类):




servlet过滤器:

          它是一种可以插入的web组件,它本身不产生请求和响应,只提供过滤作用。

   servlet过滤器的体系结构图:

它可以监听客户端发出去的请求、服务器端的操作,也可以监听给客户端响应。

  (1)Servlet过滤器对请求的过滤过程如下:
      1.Servlet容器创建一个Servlet过滤器实例。
      2.Servlet过滤器实例调用init()方法得到初始化参数。
      3.Servlet过滤器实例调用doFilter()方法,根据初始化参数的值判断该请求是否合法,如果该请求不合法,则阻塞该请求,如果是合法请求,则调用chain.doFilter(request,response)方法将该请求向后转发。
  (2)  Servlet过滤器对响应的过滤过程如下:
      1.过滤器截获客户端的请求。
      2.重新封装ServletResponse,在封装后的ServletResponse中提供客户端自定义的输出流。
      3.将请求向后转发。
      4.Web组件产生响应。
      5.过滤器从被封装的ServletResponse中获取客户自定义的输出流。
      6.将响应内容通过客户自定义的输出流写入缓冲流。
      7.在缓冲流中修改响应内容后清空缓冲流,输出响应内容。



实现一个Servlet过滤器
  (1) Servlet过滤器接口的构成
      所有的Servlet过滤器都必须实现javax.servlet.filter接口,该接口中定义了3个过滤器必须实现的方法:
  
      1.
void  init(FilterConfig):过滤器的初始化方法,Servlet容器在创建过滤器实例时调用这个方法,在这个方法中可以读出在web.xml文件中为该过滤器配置的初始化参数。
  
      2.
voiddoFilter(ServletRequest,ServletResponse,FilterChain):用于完成实际的过滤操作,当客户请求访问与过滤器相关联的URL时,Servlet容器将先调用过滤器的这个方法,FilterChain参数用于访问后续过滤器。
  
      3.
voiddestroy():过滤器在被取消前执行这个方法,释放过滤器申请的资源。
  
  (2) Servlet过滤器的创建步骤
      创建一个Servlet过滤器需要下面的步骤:
      
      1.创建一个实现了javax.servlet.Filter接口的类。
  
      2.重写init(FilterConfig)方法,读入为过滤器配置的初始化参数,申请过滤器需要的资源。
  
      3.重写方法doFilter(ServletRequest,ServletResponse,FilterChain),完成过滤操作,可以  从ServletRequest参数中得到全部的请求信息,从ServletResponse参数中得到全部的响应信息。
  
      4.在doFilter()方法的最后,使用FilterChain参数的doFilter()方法将请求和响应后传。
  
      5.对响应的Servlet程序和JSP页面注册过滤器,在部署描述文件(web.xml)中使用<filter-apping>(将过滤器与url关联)和<filter>(定义过滤器)元素对过滤器进行配置。

  应用案例

  (1)判断用户是否成功登陆。

  (2)在一个web应用中的所有页面的下面添加版权信息。

  (3)禁止未授权的ip访问站点过滤器。

  (4)过滤用户输入的敏感文字。



监听器:

     Servlet监听器也叫做 listener,通过它可以监听Web应用的上下文(环境)信息、Servlet请求信息、Servlet会话信息,并自动根据不同情况,在后台调用相  应的处理程序。通过监听器,可以自动激发一些操作,比如监听在线人数,当增加一个HttpSession时就激发 sessionCreated(HttpSessionEvent)方法,这样就可以给在线人数加1。

     Servlet监听器的功能比较类似于Java中的GUI程序的监听器,可以监听由于Web应用中的状态改变而引起的Servlet容器产生的相应事件,然后接收并处理这些事件。

监听器的类型:

  (1)servletrequest(请求监听器)

  (2)httpsession(会话监听器)

  (3)servletcontext(上下文监听器)

按监听的对象划分:servlet2.4规范定义的事件有三种:

(1)用于监听应用程序环境对象(ServletContext)的事件监听器

(2)用于监听用户会话对象(HttpSession)的事件监听器

(3)用于监听请求消息对象(ServletRequest)的事件监听器

 

按监听的事件类项划分

(1)用于监听域对象自身的创建和销毁的事件监听器

(2)用于监听域对象中的属性的增加和删除的事件监听器

(3)用于监听绑定到HttpSession域中的某个对象的状态的事件监听器

 

在一个web应用程序的整个运行周期内,web容器会创建和销毁三个重要的对象,ServletContext,HttpSession,ServletRequest。

PS:其中Context 为JSP页面包装页面的上下文.由容器创建和初始化,管理对属于JSP中特殊可见部分中已命名对象的访问. 该接口用来定义了一个Servlet的环境对象。也可认为这是多个客户端共享的信息,它与session的区别在于应用范围的不同,session只对应于一个用户。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值