过滤器的使用
概况:过滤器顾名思义也就是过滤一些东西,比如我们每一个servlet都会出现乱码的情况,我们懒得去每一个servlet里面都写解决乱码的问题,我们也可以过滤一些敏感词汇。
那么如何使用呢?
请看代码:
package com.lsl.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
/**
自定义过滤器---统一设置编码格式:(过滤指定的请求)
1.自定义类实现javax.servlet.Filter接口
2.实现Filter接口中的doFilter() 方法
3.注册过滤器
方式一:【注解方式】在类定义处配置
* @WebFilter("/SetCharsetFilter")
public class SetCharsetFilter implements Filter {}
方式二:【非注解方式】在web.xml中配置
<filter>
<filter-name>SetCharsetFilter</filter-name>
<filter-class>com.neuedu.filter.SetCharsetFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SetCharsetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
*/
@WebFilter("/*")//匹配路径,可以是/UserServlet,/*表示所有的都要经过过滤器
public class SetCharsetFilter implements Filter {
@Override
public void init(FilterConfig arg0) throws ServletException {
System.out.println("SetCharsetFilter.......初始化");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
//这里就是用来写过滤什么的方法
System.out.println("SetCharsetFilter.............过滤开始");
//设置request请求的字符集编码格式
request.setCharacterEncoding("utf-8");
//设置response响应的字符集编码格式
response.setCharacterEncoding("utf-8");//设置响应的内容为utf-8的编码格式
response.setContentType("text/html;charset=utf-8");//告诉浏览器使用指定的编码解析响应内容 text/html 表示一个HTML文档 text/plain 纯文本 text/xml XML文档
//放行-------=-继续执行servlet
chain.doFilter(request, response);
System.out.println("SetCharsetFilter.............过滤结束");
}
@Override
public void destroy() {
System.out.println("SetCharsetFilter.............销毁");
}
}
总结下来,你只用实现dofilter方法就行了,还有不要忘了放行,不然会一直卡在filter里面,放行也可以用来做权限判断。