过滤器

Filter过滤器(拦截器)

a) Filtering基本思想 
在一个web项目中,可以将JSP,Servlet,html等文件看做资源
而Tomcat则是充当一个容器来管理这些资源,并为资源提供服务。
因此,可以再处理这些资源之前或之后,通过过滤器增加一些通用功能
1.拦截请求头:安全认证。
2.数据转换:加密解密。
3.抢占特殊资源的服务:缓存。
现阶段我们学的主要是用于拦截不合法的请求。

b) Filtering API
接口:javax.servlet.Filter
所有起到过滤器功能的类要实现此接口
接口:javax.servlet.FilterChain
将各个过滤器连接起来组成过滤器链
接口:javax.servlet.FilterConfig
处理过滤器配置相关信息

第三个不是特别重要,1和2是需要会的,现阶段重点掌握第一个:Filter接口

c) Filtering的实现
创建一个类实现此接口:javax.servlet.Filter;
其中doFilter就是实现拦截功能的关键了。init和destroy则是
其生命周期的体现,分别表示初始化以及销毁。

生命周期:
拦截器只能在容器(Tomcat)启动时创建实例

拦截器用途:

1.拦截请求头:
拦截器需要在web.xml中注册了才能起作用,因为Tomcat容器
只会根据web.xml中配置的东西去启动其映射的类,语法:
<filter>
  <filter-name>MyFilter1</filter-name>
  <filter-class>day05_Filter.exercise.MyFilter_1</filter-class>
  </filter>
  <filter-mapping>
  <filter-name>MyFilter1</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>
  跟servlet很像,其中url-pattern标签很重要,它
  用来决定要拦截哪些资源的请求(URL)。
 
URL模式:
/* 根路径下的所有资源
/servlet/* /servlet路径下的所有资源
/jsp/*.jsp /jsp路径下的所有jsp页面
/dept/accounting/* 表示/dept/accounting路径下的所有资源

在类中调用了此方法则表示通过过滤器,不调用则打回。
chain.doFilter(request, response)

这里有个小发现:拦截时Tomcat会把提交过来的URL先跟url-pattern对比,
如果匹配上了则启动拦截器进行拦截,否则不调用拦截器。

拦截器链
指的是某些资源被多个拦截器拦截,形成了拦截器链。
拦截器链的先后拦截顺序体现在web.xml中拦截器的定义顺序,重点就这里。
如果任何一个拦截器没通过,请求就会被打回,后面的拦截器都不会被执行到。


2.数据转换
这里的用途就是设置字符集了。
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值