JAVA 过滤器 我写在SpirngMVC上的

java web 过滤器    这个是我 SpirngMVC 配置的过滤器

配置 web.xml


<!-- 添加Login 过滤器 -->
    <filter >
      <filter-name >loginFilter</ filter-name>
      <filter-class >yc.base.LoginFilter</ filter-class>
      <init-param >
<span style="white-space:pre">		</span><!--配置需要建议的 Session -->
                   <param-name> checkSessionKey</param-name >
                   <param-value>currentUser</param-value >
             </init-param>
      <init-param >
              <!--配置不需要过滤的 URL--->
             <param-name> notCheckURLList</param-name >
             <param-value> /access/login</param-value >
      </init-param >
    </filter >

       <filter-mapping>
             <filter-name> loginFilter</filter-name >
             <url-pattern> /*</ url-pattern>
       </filter-mapping>


LoginFilter 类


/**
* @author Administrator
* @version 1.0
* @see 登陆的过滤器
* */
public class LoginFilter implements Filter {

     private List<String> notCheckURLList = new ArrayList<String>();
     private String sessionKey = null;
     private List<String> sessionKeyList = new ArrayList<String>();
     protected FilterConfig filterConfig = null;
    
     @Override
     public void destroy() {
               notCheckURLList.clear();
               sessionKeyList.clear();
         
     }

     @Override
     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
               FilterChain filterChain) throws IOException, ServletException {
          // TODO Auto-generated method stub
         
          HttpServletRequest request = (HttpServletRequest) servletRequest;
          HttpServletResponse response = (HttpServletResponse) servletResponse;
         
          HttpSession session = request.getSession();
          if (sessionKey == null) {
               filterChain.doFilter(request, response);
               return;
          }
          String url=request.getRequestURI();
         
         
          if(!checkRequestURIIntNotFilterList(request)){
               if(!isSessionUser(session)){
                    //response.sendError(403);
                    //写你的过滤提示
                   
               }
          }else{
               //不过滤执行URI
               filterChain.doFilter(servletRequest, servletResponse);
          }
         
         
     }

     @Override
     public void init(FilterConfig filterConfig) throws ServletException {
          // TODO Auto-generated method stub
          this.filterConfig = filterConfig;

          //for url
          String notCheckURLListStr = filterConfig.getInitParameter("notCheckURLList");

          //for notCheckURLList
          if (notCheckURLListStr != null) {
               StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";");
               notCheckURLList.clear();
               while (st.hasMoreTokens()) {
                    notCheckURLList.add(st.nextToken());
               }
          }
         
          //for sessionKey
          sessionKey = filterConfig.getInitParameter("checkSessionKey");
          if (sessionKey != null) {
               StringTokenizer stt = new StringTokenizer(sessionKey, ";");
               sessionKeyList.clear();
               while (stt.hasMoreTokens()) {
                    sessionKeyList.add(stt.nextToken());
               }
          }
     }
    
     /*
     * 验证不需要过滤的url
     * 返回 boolean 类型
     * */
     private boolean checkRequestURIIntNotFilterList(HttpServletRequest request) {
          String uri = request.getServletPath() + (request.getPathInfo() == null ? "" : request.getPathInfo());
          for(String urlOne : notCheckURLList){
               if(uri.equalsIgnoreCase(urlOne)){
                    return true;
               }
          }
          return false;
     }

     /*
     * 校验session中是否含有当前登陆的user
     * */
     private boolean isSessionUser(HttpSession session) {
               for(String keyOne: sessionKeyList){
                    if(null != keyOne && session.getAttribute(keyOne) != null){
                         return true;
                    }
               }
               return false;
     }
}


这是我的第一篇文章我以后会坚持写下去的





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值