Filter过滤器的应用--拦截未登录用户
来源:互联网 发布:制作身份证图片软件 编辑:程序博客网 时间:2024/05/21 13:41
Filter可认为是Servlet的一种加强版,它主要是对客户端请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链(chain)。
流程:
1:)Filter对客户端请求进行预处理
2:)接着将请求交给Servlet进行处理并生成响应
3:)最后Filter再对服务器响应进行后处理
Filter的几个用处:
1:)用户权限Filter:检查用户请求,过滤非法请求(如登录验证、权限验证)
2:)日志Filter:详细记录某些特殊的用户请求
....................
创建Filter的两个步骤:
1:)创建Filter处理类
创建Filter处理类必须实现javax.servlet.Filter接口。在该接口中定义了如下三个方法:
(:1 void init(FilterConfig config)用于完成对Filter的初始化
(:2 void destory()用于Filter销毁前,完成对某些资源的回收
(:3 void doFilter(ServletRequest request,ServletResponse response,FilterChain chain):过滤功能的实现
2:)在web.xml中配置Filter
Filter的配置与Servlet的配置非常相似
<filter>
<filter-name></filter-name>
<filter-class></filter-class>//Filter实现类全名
</filter>
<filter-mapping>
<filter-name></filter-name>
<url-patter></url-pattern>//多路径以空格或逗号作为分隔符
</filter-mapping>
package com.sanxia.servlet;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;import javax.servlet.annotation.WebInitParam;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;/** * 使用注解配置Filter * @author lihao *value/urlPatterns这两个属性作用完全相同。都指定Filter所拦截的URL,值是数组。同<url-pattern></url-pattern> *@WebInitParam同<initParam></initParam>,可配置多个 */@WebFilter(filterName="authority",value={"/*"},initParams={@WebInitParam(name="encoding",value="UTF-8"),@WebInitParam(name="loginPage",value="/login.jsp"),@WebInitParam(name="handleLogin",value="/servlet/Login")})public class authority implements Filter {private FilterConfig fConfig;//自定义属性,初始化时获取初始化信息即@WebIninParam里面的内容public void destroy() {// TODO Auto-generated method stub}public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {String encoding=fConfig.getInitParameter("encoding");String loginPage=fConfig.getInitParameter("loginPage");String handleLogin=fConfig.getInitParameter("handleLogin");HttpServletRequest req=(HttpServletRequest)request;HttpSession session=req.getSession(true);String requestPath=req.getServletPath();//获取请求路径,略去请求参数(即?之后的那一部分) /** request.getContextPath()获取应用相对于服务器的路径 ,以/开头,代表服务器根目录,以应用名结尾 */ //notice:过滤器拦截的是客户端请求,对于服务器内部转发无法拦截//用户尚未登陆且客户端请求的既不是登录页面也不是处理登陆页面,则转发到登陆页面;<strong><strong>注意这里不能重定向,否则会形成死循环</strong></strong>if(session.getAttribute("user")==null && !requestPath.endsWith(loginPage) && !requestPath.endsWith(handleLogin)){req.setAttribute("tip", "您还没有登陆");req.getRequestDispatcher(loginPage).forward(req, response);}else{//放行请求到请求页面chain.doFilter(req, response); <div><span style="color:#97CDCC;">•</span><span style="color:black;"> //在</span><span style="color:black;">doFilter</span><span style="color:black;">方法中,开发人员如果调用了</span><span style="color:black;">FilterChain</span><span style="color:black;">对象的</span><span style="color:black;">doFilter</span><span style="color:black;">方法,则</span><span style="color:black;">web</span><span style="color:black;">服务器会检查</span><span style="color:black;">FilterChain</span><span style="color:black;">对象中是否还有</span><span style="color:black;">filter</span><span style="color:black;">, 如果有,则调用第</span><span style="color:black;">2</span><span style="color:black;">个</span><span style="color:black;">filter</span><span style="color:black;">,如果没有,则调用目标资源。</span></div> }}/** * @see Filter#init(FilterConfig) */public void init(FilterConfig fConfig) throws ServletException {this.fConfig=fConfig;}}
普通门户网站与后台管理系统的区别:
- Filter过滤器的应用--拦截未登录用户
- web开发利用filter拦截未登录用户
- Filter实际应用--检查用户是否登录的过滤器
- spring Filter过滤器,Spring拦截未登录用户权限限制
- Spring Filter过滤器,Spring拦截未登录用户权限限制
- Spring Filter过滤器,Spring拦截未登录用户权限限制
- Spring Filter过滤器,Spring拦截未登录用户权限限制(转)
- Spring Filter过滤器,Spring拦截未登录用户权限限制
- Spring Filter过滤器,Spring拦截未登录用户权限限制
- Spring Filter过滤器,Spring拦截未登录用户权限限制(转)
- Spring Filter过滤器,Spring拦截未登录用户权限限制
- Spring Filter过滤器,Spring拦截未登录用户权限限制
- Spring Filter过滤器,Spring拦截未登录用户权限限制
- 过滤器Filter的应用:登录验证
- 用户登录(login)过滤器(Filter)
- 过滤器(Filter)应用之------设置页面缓存、用户的自动登录和敏感词过滤
- springmvc 自定义拦截器实现未登录用户的拦截
- 不允许未登陆用户访问的过滤器配置,filter
- Android UI(Switch)详解
- 第15日看点:中国女排冲击冠军 谌龙PK李宗伟
- 方法调用
- Caffe+Ubuntu 15.04+CUDA 7.0新手安装配置指南
- 面向对象编程-廖雪峰
- Filter过滤器的应用--拦截未登录用户
- Handler消息机制
- UILabel自适应高度
- 页面有中文查询数据库,返回空,properties文件解决中文乱码
- c/c++预处理过程详解(二)之条件编译及预定义的宏
- Cell 的简单自适应高度
- 分布式--简单介绍分布式算法
- 【CSS——必备的基础】
- GPU处理图像 Shader的入门