过滤器(Filter)
2022-01-03 20:15
543 查看
过滤器(Filter)
Filter:用来过滤网站的数据
filter的用法和servlet基本一样
作用:
- 处理中文乱码
- 登录验证等等
- 有了过滤器,我们就不需要在每个servlet中设置字符集编码,这个就提高了开发效率
思路如图:
开发步骤:
- 导包
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> </dependency> </dependencies>
- 编写过滤器(实现Filter接口,重写对应的方法)
public class CharacterEncodingFilter implements Filter { //初始化 @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("CharacterEncodingFilter初始化了"); } /* 1.过滤中的所有代码,再过滤特定请求的时候都会执行 2.必须要让过滤器继续前进 filterChain.doFilter(servletRequest,servletResponse); */ @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { servletRequest.setCharacterEncoding("utf-8"); servletResponse.setCharacterEncoding("utf-8"); servletResponse.setContentType("text/html;charset=UTF-8"); System.out.println("CharacterEncodingFilter执行前"); filterChain.doFilter(servletRequest,servletResponse); System.out.println("CharacterEncodingFilter执行后"); } //销毁 @Override public void destroy() { System.out.println("CharacterEncodingFilter初始化了"); } }
重点:一定要写filterChain.doFilter(servletRequest,servletResponse);这样才可以让过滤器继续前进
- 在web.xml中配置
<servlet> <servlet-name>ShowServlet</servlet-name> <servlet-class>com.kuang.servlet.ShowServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ShowServlet</servlet-name> <url-pattern>/servlet/show</url-pattern> </servlet-mapping> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>com.kuang.filter.CharacterEncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <!--要过滤什么,路径包含什么就可以了--> <url-pattern>/servlet/*</url-pattern> </filter-mapping>
这样改过滤的servlet就得到了过滤。
注意:这里的/一定不要把中间的/给丢掉,因为之前一直没注意这个/,导致在写路径时没有加/,结果运行tomcat一直报错,找了近半个小时错误没解决,最后发现是这个小问题!!!
相关文章推荐
- 安装事件过滤器(installEventFilter) ,过滤子控件事件,截获控件按键、鼠标事件
- java 过滤器Filter中chain.doFilter()之前和之后代码的执行顺序
- Spring MVC过滤器-委派过滤器代理(DelegatingFilterProxy)
- Servlet中的过滤器(拦截器)Filter与监听器Listener的作用和区别
- HBase(0.96以上版本)过滤器Filter详解及实例代码
- JavaWeb中的过滤器 Filter
- DirectShow--过滤器图表(Filter Graph)和它的组件
- Asp.Net MVC3 简单入门详解过滤器Filter
- AngularJS变量及过滤器Filter用法分析
- Servlet Filter(过滤器)----->张国亮总结心得第一季
- 过滤器----张国亮总结第三季之Filter常见应用
- anagular.JS Filter自定义过滤器
- 走进AngularJs(七) 过滤器(filter)
- Filter(过滤器)常见应用
- Asp.Net MVC3 简单入门详解过滤器Filter
- servlet过滤器filter
- BIF--filter() 过滤器 和 map()映射
- Revit开发之如何使用快速过滤器(ElementQuickFilter)
- Servlet中的过滤器Filter详解
- 走进AngularJs(七) 过滤器(filter) - 吕大豹