过滤器笔记

过滤器

 

过滤器是什么?

生活中的过滤器:

饮水机的滤芯、保温杯、空调的滤网、渔网

 

过滤器的作用

Java中的过滤器可以过滤请求

当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。

过滤器的作用:

一般用于通用的操作。如:登录验证,统一编码处理、敏感字符过滤

 

过滤器原理:

 

 

 

 

过滤器链:

注意:不是项目中定义多个过滤器,就是过滤器链,

多个过滤器在同一个时间点过滤同一个目标的时候,构成过滤器链

 

 

过滤器如何使用

1. 创建类,实现Filter接口;

2. web.xml中进行相应配置

 

 

过滤器不能直接访问,不能处理请求

 

filter-mapping的位置决定过滤器执行的顺序

 

案例:

登录案例

login.jspindex.jsp

    在访问index.jsp之前必须先登录,如果没登录,需跳转到登录页

 

中文乱码过滤器

过滤器原理

 

 

转发默认不过滤

 

 

过滤器的几种类型:

REQUESET:请求过滤器,浏览器直接发起的请求会被过滤

FORWARD:转发过滤器,服务器的转发会被过滤

INCLUDE:包含过滤器,动态包含会被过滤

ERROR:错误过滤器,服务器错误会被过滤,

要配合error-page使用 exception-type location

如果没有写Dispatcher节点的情况下,默认是REQUEST,如果手动写了会有覆盖效果

 

静态包含

<%@ include file="include.jsp" %>

动态包含

<jsp:include page="include.jsp"></jsp:include>

 

过滤器案例:编码过滤器

乱码:

请求的get乱码:

new String(name.getBytes(“ISO8859-1”),”UTF-8”);

请求的post乱码:

req.setCharacterEncoding(“UTF-8”);

响应的乱码:

resp.setContentType(“text/html;charset=UTF-8”);

 

 

 

处理get请求乱码

  1. 获得所有数据(req.getParameterMap();)
  2. 遍历MAP拿到所有key(参数名)
  3. 根据key取得参数值(数组)
  4. 遍历参数值(数组),处理乱码之后放回去

 

 

tomcat版本的变化,导致效果的不同

Tomcat6:

MyEclipse Tomcat 没有问题

Tomcat6.0.14 没有问题

其他的tomcat6.x.x有不支持的情况

Tomcat7:

不支持

Tomcat8:

Get请求根本不需要处理

Post请求跟原来处理方式一样

 

 

禁止jsp缓存

 

过滤所有jsp

*.jsp

 

response.setDateHeader("Expires",-1);

response.setHeader("Cache-Control","no-cache");

response.setHeader("Pragma","no-cache"); 

 

 

 

 

/**

 * @author liwu_chen

 * @date ${date}

 *

 * ${tags}

 */

posted @ 2020-11-17 09:33  FourAu  阅读(98)  评论(0)    收藏  举报