经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
过滤器(Filter)
来源:cnblogs  作者:汪汪程序员  时间:2022/1/3 20:48:25  对本文有异议

过滤器(Filter)

Filter:用来过滤网站的数据

filter的用法和servlet基本一样

作用:

  • 处理中文乱码
  • 登录验证等等
  • 有了过滤器,我们就不需要在每个servlet中设置字符集编码,这个就提高了开发效率

思路如图:

开发步骤:

  1. 导包
  1. <dependencies>
  2. <dependency>
  3. <groupId>junit</groupId>
  4. <artifactId>junit</artifactId>
  5. <version>4.11</version>
  6. <scope>test</scope>
  7. </dependency>
  8. <dependency>
  9. <groupId>javax.servlet</groupId>
  10. <artifactId>servlet-api</artifactId>
  11. <version>2.5</version>
  12. </dependency>
  13. <dependency>
  14. <groupId>javax.servlet.jsp</groupId>
  15. <artifactId>jsp-api</artifactId>
  16. <version>2.1</version>
  17. </dependency>
  18. </dependencies>
  1. 编写过滤器(实现Filter接口,重写对应的方法)
  1. public class CharacterEncodingFilter implements Filter {
  2. //初始化
  3. @Override
  4. public void init(FilterConfig filterConfig) throws ServletException {
  5. System.out.println("CharacterEncodingFilter初始化了");
  6. }
  7. /*
  8. 1.过滤中的所有代码,再过滤特定请求的时候都会执行
  9. 2.必须要让过滤器继续前进
  10. filterChain.doFilter(servletRequest,servletResponse);
  11. */
  12. @Override
  13. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
  14. servletRequest.setCharacterEncoding("utf-8");
  15. servletResponse.setCharacterEncoding("utf-8");
  16. servletResponse.setContentType("text/html;charset=UTF-8");
  17. System.out.println("CharacterEncodingFilter执行前");
  18. filterChain.doFilter(servletRequest,servletResponse);
  19. System.out.println("CharacterEncodingFilter执行后");
  20. }
  21. //销毁
  22. @Override
  23. public void destroy() {
  24. System.out.println("CharacterEncodingFilter初始化了");
  25. }
  26. }

重点:一定要写filterChain.doFilter(servletRequest,servletResponse);这样才可以让过滤器继续前进

  1. 在web.xml中配置
  1. <servlet>
  2. <servlet-name>ShowServlet</servlet-name>
  3. <servlet-class>com.kuang.servlet.ShowServlet</servlet-class>
  4. </servlet>
  5. <servlet-mapping>
  6. <servlet-name>ShowServlet</servlet-name>
  7. <url-pattern>/servlet/show</url-pattern>
  8. </servlet-mapping>
  9. <filter>
  10. <filter-name>CharacterEncodingFilter</filter-name>
  11. <filter-class>com.kuang.filter.CharacterEncodingFilter</filter-class>
  12. </filter>
  13. <filter-mapping>
  14. <filter-name>CharacterEncodingFilter</filter-name>
  15. <!--要过滤什么,路径包含什么就可以了-->
  16. <url-pattern>/servlet/*</url-pattern>
  17. </filter-mapping>

这样改过滤的servlet就得到了过滤。

注意:这里的/一定不要把中间的/给丢掉,因为之前一直没注意这个/,导致在写路径时没有加/,结果运行tomcat一直报错,找了近半个小时错误没解决,最后发现是这个小问题!!!

树越是向往高处的光亮,它的根就越要向下,向泥土向黑暗的深处。

原文链接:http://www.cnblogs.com/H-scholar/p/15760398.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号