javaweb:过滤器Filter

打印 上一主题 下一主题

主题 557|帖子 557|积分 1671

过滤器是用来过滤浏览器中的数据,例如web服务器受到一些垃圾请求,后台可以不处理这些请求或者报错,还可以用来解决乱码问题等。
过滤器是在服务器启动的时候初始化,在服务器关闭的时候销毁。
下面我们用实例来演示:
首先建立一个过滤器类CharacterEncodingFilter.class
  1. 1 package com.jms.filter;
  2. 2
  3. 3 import java.io.IOException;
  4. 4
  5. 5 import javax.servlet.Filter;
  6. 6 import javax.servlet.FilterChain;
  7. 7 import javax.servlet.ServletException;
  8. 8 import javax.servlet.ServletRequest;
  9. 9 import javax.servlet.ServletResponse;
  10. 10
  11. 11 public class CharacterEncodingFilter implements Filter{
  12. 12
  13. 13     @Override
  14. 14     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
  15. 15         request.setCharacterEncoding("UtF-8");
  16. 16         response.setCharacterEncoding("UTF-8");
  17. 17         response.setContentType("text/html;charset=UTF-8");
  18. 18         chain.doFilter(request, response);//给其他过滤器放行
  19. 19         
  20. 20     }
  21. 21
  22. 22 }
复制代码
chain.doFilter(request, response);这句话是一定要有的,因为一个网站可能会有多个过滤器,这句话是为了给其他过滤放行,如果没有这句话,执行完这个过滤器后其他过滤器无法得到执行。
接着建立一个servlet用于检验过滤器是否执行,servlet001.class
  1. 1 package com.jms.servlet;
  2. 2
  3. 3 import java.io.IOException;
  4. 4
  5. 5 import javax.servlet.ServletException;
  6. 6 import javax.servlet.http.HttpServlet;
  7. 7 import javax.servlet.http.HttpServletRequest;
  8. 8 import javax.servlet.http.HttpServletResponse;
  9. 9
  10. 10 public class servlet001 extends HttpServlet{
  11. 11
  12. 12     /**
  13. 13      *
  14. 14      */
  15. 15     private static final long serialVersionUID = 1L;
  16. 16
  17. 17     @Override
  18. 18     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  19. 19         resp.getWriter().print("过滤成功");
  20. 20     }
  21. 21
  22. 22     @Override
  23. 23     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  24. 24         doGet(req, resp);
  25. 25     }
  26. 26     
  27. 27     
  28. 28     
  29. 29 }
复制代码
修改web.xml文件
  1.         <servlet>
  2.             <servlet-name>demo001</servlet-name>
  3.             <servlet-class>com.jms.servlet.servlet001</servlet-class>
  4.         </servlet>
  5.         <servlet-mapping>
  6.             <servlet-name>demo001</servlet-name>
  7.             <url-pattern>/demo/show</url-pattern>
  8.         </servlet-mapping>
  9.         <servlet-mapping>
  10.             <servlet-name>demo001</servlet-name>
  11.             <url-pattern>/show</url-pattern>
  12.         </servlet-mapping>
  13.         
  14.         <filter>
  15.             <filter-name>filter001</filter-name>
  16.             <filter-class>com.jms.filter.CharacterEncodingFilter</filter-class>
  17.         </filter>
  18.         <filter-mapping>
  19.             <filter-name>filter001</filter-name>
  20.             <url-pattern>/demo/*</url-pattern>
  21.         </filter-mapping>
复制代码
如上设置,过滤器会过滤/demo路径下的所有页面;servlet001有两个映射,一个是/show,不会被过滤,另一个是/demo/show,会被过滤。
我们先访问/show

 
 中文乱码,没有被过滤器过滤;
我们再访问/demo/show

 
 不再是乱码,成功被过滤。
需要注意的是,设置过滤器的时候尽量不要让过滤器过滤整个网站,而可以设置多个过滤器分工进行。
 
(本文仅作个人学习记录用,如有纰漏,敬请指正)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

慢吞云雾缓吐愁

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表