码迷,mamicode.com
首页 > 其他好文 > 详细

配置登录过滤器

时间:2016-11-14 20:26:23      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:ack   main   ppi   转发   online   str   color   servlet   stat   

用途:进入页面时判断用户是否登录,如果没有登录返回某个页面(如登录界面)。

代码:web.xml

<filter>

  <filter-name>onlineFilter</filter-name>

  <filter-class>com.***.***.OnlineFilter</filter-class>   <!--  项目中的类,***改为自己项目的包命  -->

</filter>

<filter-mapping>

  <filter-name>onlineFilter</filter-name>

  <url-pattern>*.html</url-pattern>           <!--  过滤那些请求(后缀为html的)  -->

</filter-mapping>

<filter-mapping>

  <filter-name>onlineFilter</filter-name>

  <url-pattern>*.jsp</url-pattern>            <!--  过滤那些请求(后缀为jspl的)  -->

</filter-mapping>

 

  OnlineFilter.java

package com.cyimayi.filter;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class OnlineFilter extends HttpServlet implements javax.servlet.Filter {    //实现javax.servlet.Filter接口

    private static final long serialVersionUID = 1L;

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;
        HttpSession session = req.getSession();
        String[] arr = {"/login.html", "/main.jsp", "/alipay/alipayapi.jsp", "/alipay/notify_url.jsp", "/alipay/return_url.jsp"};  

    //放行的页面,项目名开始(如www.abc.com/abc/aa.jsp, abc为项目名的话就填/aa.jsp
        List<String> temp = Arrays.asList(arr);    //将数据转成list
        if(!temp.contains(req.getServletPath())) {     // 对页面进行放行
            if (session.getAttribute("admin") == null) { //判断用户是否登录,此处可为自己的其他条件。
                res.sendRedirect("../login.html");      //重定向
                return;
            }
        }

   /*

    * chain.doFilter(request, response);

    * 他的作用是将请求转发给过滤器链上下一个对象。这里的下一个指的是下一个filter,如果没有filter那就是你请求的资源。

    * 一般filter都是一个链,web.xml 里面配置了几个就有几个。一个一个的连在一起

    */
        chain.doFilter(request, response);
    }

    public void init(FilterConfig filterConfig) {
        //System.out.println("OnlineFilter initialized.");
    }

    public void destroy() {
        //System.out.println("OnlineFilter destroied");
    }
}

 

配置登录过滤器

标签:ack   main   ppi   转发   online   str   color   servlet   stat   

原文地址:http://www.cnblogs.com/vhaisong/p/6062922.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!