Filter过滤器笔记1
2018-06-18 03:53:32来源:未知 阅读 ()
Filter:过滤器
Filter主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。使用Filter的完整流程是:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理
创建Filter的步骤:
1.创建Filter处理类
2.在web.xml文件中配置Filter(或者直接使用注解)
创建Filter必须实现javax.servlet.Filter接口,在该接口中定义了三个方法。
void init(FilterConfig config):用于完成Filter的初始化
void destroy():用于Filter销毁前,完成某些资源的回收
void doFilter(ServletRequest request,ServletResponse response,FilterChain chain):实现过滤功能,该方法就是对每个请求以及响应增加的额外处理
下面示例一个比较实用的Filter,该Filter对用户请求进行过滤,Filter将通过doFilter方法来设置request编码的字符集,从而避免每个jsp,Servlet都需要设置,而且还会验证用户是否登录,如果用户没有登录,系统直接跳转到登录页面。
程序例子:
/** * Description:设置request的编码集,并验证用户是否登录 * Author: Eleven * Date: 2018/1/6 15:43 */ @WebFilter(filterName = "loginFilter", urlPatterns = {"/*"}, //该Filter拦截该项目下的所有用户请求 initParams = {//配置Filter初始化参数 @WebInitParam(name="encoding",value="GBK"), @WebInitParam(name="loginPage",value="/login.jsp")}) public class LoginFilter implements Filter { //FilterConfig可用于访问Filter的配置信息 private FilterConfig config; @Override public void init(FilterConfig filterConfig) throws ServletException { this.config = filterConfig; } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException { //获取Filter的配置参数 String encoding = config.getInitParameter("encoding"); String loginPage = config.getInitParameter("loginPage"); //设置request编码用的字符集 servletRequest.setCharacterEncoding(encoding); System.out.println("设置编码完成"); HttpServletRequest request = (HttpServletRequest) servletRequest; //获取客户请求的页面 String requestPath = request.getServletPath(); System.out.println("用户请求页面:"+requestPath); //判断用户是否登录 HttpSession session = request.getSession(); //没有登录,且访问页面不是登录也页面 if(session.getAttribute("user") == null && !requestPath.endsWith(loginPage)){ //转发到登录页面 request.getRequestDispatcher("/jsp/login.jsp").forward(servletRequest,servletResponse); }else{ //放行 chain.doFilter(servletRequest,servletResponse); } } @Override public void destroy() { this.config = null; } }
Filter的种类:
1.用户授权的Filter:Filter负责检查用户请求,根据请求过滤用户非法请求
2.日志Filter:详细记录某些特殊的用户请求
3.负责解码的Filter:包括对非标准编码的请求解码
4.能改变XML内容的XSLT Filter等
5.Filter可负责拦截多个请求或响应;一个请求或响应也可被多个Filter拦截
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Spring WebFlux 学习笔记 - (一) 前传:学习Java 8 Stream Ap 2020-06-11
- Java笔记:集合 2020-06-10
- Java基础语法菜鸟教程笔记 2020-06-10
- 黑菜菌的JAVA学习笔记 2020-06-09
- Java笔记:数组,异常,泛型 2020-06-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash