Java Web之过滤器(Filter)
程序员文章站
2022-05-23 08:36:47
...
过滤器是在服务器启动时就会创建的,只会创建一个实例,常驻内存,也就是说服务器一启动就会执行Filter的init(FilterConfig config)方法,当Filter被移除或服务器正常关闭时,会执行destroy方法
a、过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理
b、通常都是用来拦截request进行处理的
c、也可以对返回的response进行拦截处理
创建Filter##
右键包名—>new ---->Filter
采用注释,不用再web.xml中配置
@WebFilter(filterName = "CharsetFilter")
public class CharsetFilter implements Filter {
public void destroy() {
/*销毁时调用*/
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
/*过滤方法 主要是对request和response进行一些处理,然后交给下一个过滤器或Servlet处理*/
chain.doFilter(req, resp);//交给下一个过滤器或servlet处理
}
public void init(FilterConfig config) throws ServletException {
/*初始化方法 接收一个FilterConfig类型的参数 该参数是对Filter的一些配置*/
}
}
配置Filter
- urlPatterns
a、以指定资源匹配。例如"/index.jsp"
b、以目录匹配。例如"/servlet/*"
c、以后缀名匹配,例如"*.jsp"
d、通配符,拦截所有web资源。"/*"
- initParams
配置初始化参数
initParams = {
@WebInitParam(name = "key",value = "value")
}
- dispatcherTypes
配置拦截的类型,可配置多个。默认为DispatcherType.REQUEST**
FORWARD,//转发的
INCLUDE,//包含在页面的
REQUEST,//请求的
ASYNC,//异步的
ERROR;//出错的
dispatcherTypes = {DispatcherType.ASYNC,DispatcherType.ERROR}
@WebFilter(filterName = "CharsetFilter",
urlPatterns = "/*",/*通配符(*)表示对所有的web资源进行拦截*/
initParams = {
@WebInitParam(name = "charset", value = "utf-8")/*这里可以放一些初始化的参数*/
})
public class CharsetFilter implements Filter {
private String filterName;
private String charset;
public void destroy() {
/*销毁时调用*/
System.out.println(filterName + "销毁");
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
/*过滤方法 主要是对request和response进行一些处理,然后交给下一个过滤器或Servlet处理*/
System.out.println(filterName + "doFilter()");
req.setCharacterEncoding(charset);
resp.setCharacterEncoding(charset);
chain.doFilter(req, resp);
}
public void init(FilterConfig config) throws ServletException {
/*初始化方法 接收一个FilterConfig类型的参数 该参数是对Filter的一些配置*/
filterName = config.getFilterName();
charset = config.getInitParameter("charset");
System.out.println("过滤器名称:" + filterName);
System.out.println("字符集编码:" + charset);
}
}
上一篇: Hbase过滤器查询
推荐阅读
-
Java web Filter, Strurs2 Interceptor 和 SpringMVC Interceptor 三者之间的联系与区别
-
Java过滤器filter_动力节点Java学院整理
-
web.xml中servlet, bean, filter, listenr 加载顺序_动力节点Java学院整理
-
详解Servlet之过滤器(Filter)
-
Java Web实现session过期后自动跳转到登陆页功能【基于过滤器】
-
java中Filter过滤器处理中文乱码的方法
-
详解Servlet之过滤器(Filter)
-
java中Filter过滤器处理中文乱码的方法
-
传智播客java web 过滤器
-
Java 过滤器Filter,Java Filter 不拦截某些请求 Java 过滤器支持Ajax请求