Servlet拦截器基础知识

我们可以从以下几个知识点学习:

1.概念

2.生命周期

3.职责

4.执行过程

5.案例讲解


1.概念
Servlet : servlet是运行服务器端得Java程序,是独立与平台和协议的特性,并且是由Web服务器端进行加载的 还可以生成动态的web页面,它链接于客户端与服务器之间 ,具有跨平台 可移植性强等优点。


filter (拦截器):filter是一个可重复使用的代码片段,可用来转换请求 响应和头信息。Filter不像servlet,可以产生请求和相应,但他可以修改某一资源的请求或响应。


listene (监听器):listene是个监听器,从字面上可以了解到就是通过listene监听web服务器中的某个动作做出响应的反应。

2.生命周期
Servlet :servlet生命周期一般被加载到web服务器中是不会被删除的,只有是web服务器重启或关闭时才会被删除,另外servelt声明周期包含4个过程如:
1.加载和实例化
加载和实例化Servlet是由Servlet容器来实现的。加载Servlet之后,容器会通过Java反射机制来创建Servelt的实例.

2.初始化
   在Servlet 的实例创建后,Servlet容器会调用 Servlet 的 init() 方法来初始化该Servlet对象。初始化的目的是可以让Servlet对象在处理客户端请求之前完成一些初始化工作,对与每个 Servlet 实例,只会调用一次init()方法。

3.执行
   当客户端请求来到后,Servlet 容器首先针对该请求创建 ServletRequest 和 ServletResponse两个对象,然后Servlet容器会自动调用Servelt 的service() 方法来响应客户端的请求,同时把 ServletRequest 和 ServletResponse两个对象传给 service() 方法。通过ServletRequest 对象,Servlet 实例可以获取客户端请求信息,处理完请求后,则将信息放置在ServletResponse对象中。最后销毁ServletRequest 和 ServletResponse 对象。

4.销毁
当Servelt实例需要从服务中移除,容器会调用 destroy() 方法, 让该实例释放掉它所用的资源,并将实例中的数据保存到持久的存储设备中。之后Servlet实例便会被Java垃圾回收机制回收。

Filter : (Filter一定要实现 Javax,servlet 包中Filter接口的三种方法 init(),doFilter(),destroy(),空实现也行)
1.启动服务器时加载过滤器的实例,并且会调用init()方法来初始化实例。
2.每一次请求时都只是调用doFilter()方法进行处理。
3.停止服务器时调用destroy()方法,销毁实例。


Listener : 类似于Servlet 和Filter.

web.xml加载顺序:context-param  -----> listener -----> filter  -----> servlet
   (监听器)    (拦截器)     (处理http发送的响应和请求)
context-param : context-param元素含有一对参数名和参数值,作用是ServletContext上下文初始化参数。参数名在正web应用中是唯一的。
3.职责
1.Servlet :
创建并返回一个包含基于客户请求性质完整动态的HTML页面。
创建可嵌入现有的HTML 页面中的一部分HTML页面。
可以接受客户端发来的 隐藏 或 显示 数据。
通过状态代码和响应头向客户端发送隐藏数据进行 响应客户端的请求。
2.Filter:
Filter可以在一个请求到达Servlet之前预处理用户请求,也可以在离开Servlet 时处理http响应。
在执行 Servlet之前,首先执行Filter程序,并做一下处理预处理工作。
根据程序需要修改响应和请求。
在Servelt 被调用之后截获Servlet的执行。
3.listener:职责跟概念差不多。
他们几个的区别:
1.Servlet 流程短,URL传过来之后,就对其进行处理,之后返回或转向到某个自己指定页面。它主要用来在业务处理之前进行控制。


2.Filter 流程是线性的,URL传过来之后,检查之后,可保持原来的流程继续向下执行,被下一个Filter或Servlet接收,而Servlet在处理之后,不会继续向下传递,Filter功能可用来保持流程继续按原来的 方式进行下去,或者主导流程,而Servlet的功能主要用来主导流程。


Filter可用来进行字符编码过滤,检查用户是否登录,进制页面进行缓存


3.Filer和Servlet都是针对URL之类的,而listener  是针对对象的操作,如session 的创建, session.setAttribute的发生,在这样的事件发生时做一些事情。


4.执行过程


 1.Servlet:



 2、filter:




3、listener



4.案例演示: 本案例用到了 Servlet 拦截器  Servlet  还有 Cookie 等技术。本案例可以实现如果不从登录进入,就对其它页面操作,就会进行拦截返回登录页面,重新验证,还可以把 用户名 密码存到Cookie 中下次登录自动补充 用户名 密码。


1.jsp登录页面:中可从cookie中获取用户名密码 还有为下次是否记住用户密码获取选择。


2.servlet  中Cookie 代码


3.web.xml拦截器进行配置


4.拦截器与Servlet 不同一个是继承 一个是实现
 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值