java之Filter用法(实现请求的拦截过滤,以及权限判断)

Filter实现登陆权限的过滤实例

               Fileter简介:

                                  Filter 主要是实现拦截客户端到达servlet到页面请求,并且能够修改请求(HttpServletRequest)的头和数据。

                                (实现登陆的登陆判断,以及相关权限的判断)

                                Filter还可以实现在HttpServletResponse到达客户端的拦截,可以检查修改(HttpServletResponse)的头和数据

            1、Filter实现类

  public class DoLogin implements Filter{
 
 //获取配置参数信息
 private FilterConfig config;
 //初始化
 public void init(FilterConfig config)
 {
  this.config=config;
 }
 //实现销毁
 public void destroy()
 {
  this.config=null;
 }
 //实现doFilter方法
 public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
  throws IOException,ServletException
 {
  //获取Filter的配置参数
  String encoding=config.getInitParameter("encoding");
  String loginPage=config.getInitParameter("LoginPage");
  String proPage=config.getInitParameter("ProPage");
  //设置编码集
  request.setCharacterEncoding(encoding);
  //把强求转化为HttpServletRequest
  HttpServletRequest hreq=(HttpServletRequest)request; 
  //获取登录信息
  HttpSession session=hreq.getSession(true);
  //获取请求页面
  String hreqPath=hreq.getServletPath();
  //判断页面信息,登录user有信息,登录页面时login.jsp或者是prologin.jsp
  if(session.getAttribute("user")==null
    &&!hreqPath.endsWith(loginPage)
    &&!hreqPath.endsWith(proPage))
  {
   //跳转到登录页面
   request.setAttribute("tip", "你还没有登录");
   request.getRequestDispatcher(loginPage).forward(request, response);
  }
  else
  {
   //放行
   chain.doFilter(request, response);
   
  }
  
 }
}

2、配置web.xml

    <filter>
    <filter-name>dologin</filter-name>
    <filter-class>lee.DoLogin</filter-class>
    <init-param>
     <param-name>encoding</param-name>
     <param-value>GBK</param-value>
    </init-param>
    <init-param>
     <param-name>LoginPage</param-name>
     <param-value>/login.jsp</param-value>
    </init-param>
    <init-param>
     <param-name>ProPage</param-name>
     <param-value>/proLogin.jsp</param-value>
    </init-param>
   </filter>
   <!-- 拦截URL-->
   <filter-mapping>
    <filter-name>dologin</filter-name>
    <url-pattern>/*</url-pattern>
   </filter-mapping>
</web-app>

3、在web容器中创建3个页面login.jsp  ;prologin.jsp;other.jsp

4、最终结果展示:登陆系统以后可以任意查看其它页面,而没有登陆时,查看其它页面将会被拦截返回登陆页,并给出提示信息。



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值