Filter Filters are summarized

Filter Filters

**
filter can intercept the request, the response filtering: Although jsp code can be used to verify whether the user is logged in, but like some html pages, and access to images can only be controlled by filter

1创建一个类实现Filter接口
2实现doFilter方法进行请求的拦截
3web.xml中配置拦截地址(配置的标签跟Servlet的一样 /*表示工程名下的所有资源)
   注意 filter里面成功了话要调用 chain.doFilter 否则无法放行

Here Insert Picture Description
Lifecycle filter filter: with the same Servlet life cycle

1构造方法
2init初始化方法
3doFilter过滤方法 每一次拦截到都会执行
4destroy销毁方法

**

FilterConfig: filter may obtain configuration information of the filter

**

作用:
1获取filter的名称	 filterConfig.getFilterName();
2获取filter的初始化参数  filterConfig.getInitParameter();
3获取ServletContext对象	filterConfig.getServletContext();

**

Filter the plurality of execution order is from top to bottom in order for execution web.xml determined:

**

Here Insert Picture Description
**

Intercepting Address Filter filter

**

Filter的拦截路径 
--精确匹配
比如: /aaa/a.jsp			它表示只有请求地址是:http://ip:port/工程名/aaa/a.jsp的时候,Filter过滤器才会拦截。

--目录匹配
比如:	/aaa/*				它表示只有请求地址是: http://ip:port/工程名/aaa/*	的时候,Filter过滤器才会拦截。

--后缀名匹配   *打头的地址匹配前面不可以加上/ 会报错
比如:	
*.html			表示请求地址必须以html结尾,Filter才会拦截到。
*.jsp				表示请求地址必须以jsp结尾。filter才会拦截到。
*.action			表示请求地址必须以 action结尾。Filter才会拦截到。
*.do				表示请求地址必须以do结尾。Filter过滤器才会拦截到
*.abc			请求地址必须以abc结尾,Filter过滤器才会拦截到。


Filter只关心请求地址。不关闭资源是不是存在。
Filter可以用来实现事务~但是需要注意要把异常抛到filter去

**

Scenarios

**

1)	对密码进行加密 
2)	对请求参数进行字符编码设置 
3)	对请求进行权限控制 
4)	对请求参数值进行非法字符过滤 
5)	修改响应的结果数据。...

Filter filtering rules! ! !

默认只对请求过滤,对转发不过滤 也就是对服务器内部的请求是不会进行过滤的

修改规则
在<filter-mapping>中增加转发过滤设置 
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>

**

Filter order

**

按匹配规则过滤. 
如果多个过滤器的匹配规则都匹配到这个路径,按照<filter-mapping>匹配顺序来执行过滤器
Published 63 original articles · won praise 44 · views 6269

Guess you like

Origin blog.csdn.net/weixin_40695328/article/details/89575474