Filter过滤器
来源:互联网 发布:吉林省典恒网络怎么样 编辑:程序博客网 时间:2024/06/17 03:02
Filter概念快速入门
1.1、步骤
- 1、创建一个类实现Filter接口
- 2、重写接口中方法(doFilter方法是真正过滤的)
- 3、在web.xml文件中配置
1.2、FilterChain
- 1、FilterChain概念
FilterChain 是 servlet 容器为开发人员提供的对象,它提供了对某一资源的已过滤请求调用链的视图。过滤器使用 FilterChain 调用链中的下一个过滤器,如果调用的过滤器是链中的最后一个过滤器,则调用链末尾的资源。 - 2、形成一个Filter链
只要多个Filter对同一个资源进行拦截就可以形成Filter链 - 3、确定Filter的执行顺序
由来确定
1.3、Filter生命周期
- 1、实例化–初始化–服务–销毁
- 2、当服务器启动,会创建Filter对象,并调用init方法,只调用一次.
- 3、当访问资源时,路径与Filter的拦截路径匹配,会执行Filter中的doFilter方法,这个方法是真正拦截操作的方法.
- 4、当服务器关闭时,会调用Filter的destroy方法来进行销毁操作
1.4、FilterConfig
- 1、功能
获取Filtr名称;获取Filter初始化参数;获取ServletContext对象。 - 2、位置
在Filter的init方法上有一个参数,类型就是FilterConfig. - 3、Filter中获取一个FIlterConfig对象
public class implements Filter{ private FilterConfig filterConfig; public void init(FilterConfig filterConfig) throws ServletException{ this.filterConfig=filterConfig; }}
1.5、Filter配置
<filter> <filter-name>filter名称</filter-name> <filter-class>Filter类的包名.类名</filter-class></filter><filter-mapping> <filter-name>filter名称</filter-name> <url-pattern>路径</url-pattern></filter-mapping>
1.6、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.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class CodeFilter implements Filter{ private FilterConfig filterConfig; public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //将servletRequest对象转化为HttpServletRequest对象 HttpServletRequest req=(HttpServletRequest) request; //将ServletResponse 对象转化为HttpServletResponse对象 HttpServletResponse resp=(HttpServletResponse) response; //设置请求编码 req.setCharacterEncoding("utf-8"); //设置响应编码 resp.setContentType("text/html;charset=utf-8"); //放行,让程序继续往下执行 chain.doFilter(req,resp); } public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig=filterConfig; }}
1.7、Filter用户权限
package com.san.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.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.san.model.User;public class UserFilter implements Filter{ public void destroy() { } //权限管理 public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest request=(HttpServletRequest) req; HttpServletResponse response=(HttpServletResponse) resp; User user=(User) request.getSession().getAttribute("user"); if(user!=null){ //用户已登录 if(0==user.getUserType()){ //不是管理员 response.getWriter().write("权限不足,无法访问!"); response.setHeader("refresh","2;url=../index.jsp"); return ; }else{ //是管理员,放行 chain.doFilter(request, response); return ; } }else{ //用户没有登录 response.sendRedirect("../login.jsp"); return ; } } public void init(FilterConfig arg0) throws ServletException { }}
阅读全文
0 0
- 过滤器Filter
- 过滤器Filter
- Filter 过滤器
- 过滤器 filter
- 过滤器filter
- 过滤器,Filter
- 过滤器Filter
- filter--过滤器
- 过滤器Filter
- filter过滤器
- Filter过滤器
- filter过滤器
- Filter过滤器
- Filter过滤器
- Filter 过滤器
- Filter过滤器
- Filter(过滤器)
- filter过滤器
- 开启VPN的一些问题解决方案
- 171208之Oracle总结(一)
- 669. Trim a Binary Search Tree
- BZOJ1125: [POI2008]Poc
- 15、ES6 数组的解构赋值
- Filter过滤器
- js eval用法
- ffmpeg解码音频数据时,进行重采样(即改变文件原有的采样率)
- [RK3288][Android6.0] 调试笔记 --- 软硬键盘同时使用
- win10 VPN里的ipv4的属性打不开,没办法去掉勾选“在远程网络上使用默认网关”如何解决?
- Linux RedHat7.0 上vsftp配置
- 并发库之CountDownLatch
- 1060. Are They Equal (25)
- recyclerView和retrofit的简单使用