JavaWeb中的过滤器Filter
Filter(过滤器)是对web交互中的内容进行拦截并处理,再交给下一个过滤器或servlet进行处理,通常用来对request内容进行拦截与处理,也可以对返回的response内容进行拦截处理。
其过程可以用下图进行表示:

从上图也可以看出,过滤器的特点:在servlet之前和之后都会根据规则被调用。因此要特别注意一些判断引起死循环或异常的情况。
web.xml中的内容示例:
<filter>
<filter-name>filterall</filter-name>
<filter-class>com.xxx.util.filter1</filter-class>
</filter>
<filter-mapping>
<filter-name>filterall</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>filterdiscuss</filter-name>
<filter-class>com.xxx.util.filter2</filter-class>
</filter>
<filter-mapping>
<filter-name>filterdiscuss</filter-name>
<url-pattern>/discuss</url-pattern>
</filter-mapping>
在过滤器中,通常会从servletRequest,servletResponse对象中获取页面参数、对象属性、会话属性进行处理,比较容易混淆:
req.getParameter() 页面上提交的参数,不会变化
req.getAttribute() 请求的某个属性,可以由Filter向servlet方向传递,请求过后会丢失。
req.getSession().getAttribute() 会话的某个属性,会话结束后丢失
注意:参数、属性的名称可以重复。使用时最好不要重复,以免发生混乱与增加排错诊断难度。
本文深入解析JavaWeb中的过滤器Filter,介绍其工作原理、配置示例,并重点讲解如何在请求参数和会话属性处理中避免问题。通过实例演示,理解如何正确使用Filter进行内容拦截与传递。
2224

被折叠的 条评论
为什么被折叠?



