ToB企服应用市场:ToB评测及商务社交产业平台
标题:
javaweb:过滤器Filter
[打印本页]
作者:
慢吞云雾缓吐愁
时间:
2022-9-4 13:46
标题:
javaweb:过滤器Filter
过滤器是用来过滤浏览器中的数据,例如web服务器受到一些垃圾请求,后台可以不处理这些请求或者报错,还可以用来解决乱码问题等。
过滤器是在服务器启动的时候初始化,在服务器关闭的时候销毁。
下面我们用实例来演示:
首先建立一个过滤器类CharacterEncodingFilter.class
1 package com.jms.filter;
2
3 import java.io.IOException;
4
5 import javax.servlet.Filter;
6 import javax.servlet.FilterChain;
7 import javax.servlet.ServletException;
8 import javax.servlet.ServletRequest;
9 import javax.servlet.ServletResponse;
10
11 public class CharacterEncodingFilter implements Filter{
12
13 @Override
14 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
15 request.setCharacterEncoding("UtF-8");
16 response.setCharacterEncoding("UTF-8");
17 response.setContentType("text/html;charset=UTF-8");
18 chain.doFilter(request, response);//给其他过滤器放行
19
20 }
21
22 }
复制代码
chain.doFilter(request, response);这句话是一定要有的,因为一个网站可能会有多个过滤器,这句话是为了给其他过滤放行,如果没有这句话,执行完这个过滤器后其他过滤器无法得到执行。
接着建立一个servlet用于检验过滤器是否执行,servlet001.class
1 package com.jms.servlet;
2
3 import java.io.IOException;
4
5 import javax.servlet.ServletException;
6 import javax.servlet.http.HttpServlet;
7 import javax.servlet.http.HttpServletRequest;
8 import javax.servlet.http.HttpServletResponse;
9
10 public class servlet001 extends HttpServlet{
11
12 /**
13 *
14 */
15 private static final long serialVersionUID = 1L;
16
17 @Override
18 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
19 resp.getWriter().print("过滤成功");
20 }
21
22 @Override
23 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
24 doGet(req, resp);
25 }
26
27
28
29 }
复制代码
修改web.xml文件
<servlet>
<servlet-name>demo001</servlet-name>
<servlet-class>com.jms.servlet.servlet001</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo001</servlet-name>
<url-pattern>/demo/show</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>demo001</servlet-name>
<url-pattern>/show</url-pattern>
</servlet-mapping>
<filter>
<filter-name>filter001</filter-name>
<filter-class>com.jms.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter001</filter-name>
<url-pattern>/demo/*</url-pattern>
</filter-mapping>
复制代码
如上设置,过滤器会过滤/demo路径下的所有页面;servlet001有两个映射,一个是/show,不会被过滤,另一个是/demo/show,会被过滤。
我们先访问/show
中文乱码,没有被过滤器过滤;
我们再访问/demo/show
不再是乱码,成功被过滤。
需要注意的是,设置过滤器的时候尽量不要让过滤器过滤整个网站,而可以设置多个过滤器分工进行。
(本文仅作个人学习记录用,如有纰漏,敬请指正)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4