web.xml中 filter解析

          AdminFilter.java:
          package org.bluechant.mvc.filter;

          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.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          import javax.servlet.http.HttpSession;

          import org.bluechant.mvc.core.GlobalSources;

          /**
           * 
          @author CHAOS
           * @date 2012-02-28 12:49
           * filter for check wheather user already login in ,
           * if not , send redirect to the login page 
           * if already login , forward user's request to the target request URL
           
          */

          public class AdminFilter implements Filter 
              
              
          private String loginPage ;
              
              
          private String loginAction ;
              
              
          private String userLoginTag ;
              
          //FilterConfig可用于訪問Filter的配置信息
              private FilterConfig config;

              
          //執行過濾的核心方法
              public void doFilter(ServletRequest req, ServletResponse res,
                      FilterChain chain) 
          throws IOException, ServletException {
                  
                  HttpServletRequest request 
          = (HttpServletRequest) req;
                  HttpServletResponse  response 
          = (HttpServletResponse )res;
                  HttpSession session 
          = request.getSession(true);

                  
          //獲取客戶請求的頁面
                  String urlPath = request.getServletPath();
                  
          //如果session范圍的user為null,即表明沒有登錄
                  
          //且用戶請求的既不是登錄頁面,也不是處理登錄的頁面if( session.getAttribute("user") == null

                  
          boolean flag = needNotFilter(urlPath);
                  
          //不需要進行攔截的頁面
                  if(!flag){
                      Object obj 
          = session.getAttribute(userLoginTag);
                      System.out.println(
          "the session userLoginTag value is :"+obj);
                      
          if(obj!=null){
                          flag 
          = true ;
                      }

                  }

                  
          if(flag){
                      chain.doFilter(req, res);
                  }
          else{
                      
          //攔截不通過的時候跳轉到的目標//forward到登錄頁面
                      response.sendRedirect(request.getContextPath()+loginPage);
                  }

              }

              
          //只有在”/login.html“ || “/account!login.do” 情況下才進行攔截通過,否則攔截不通過跳到登陸頁面
              private boolean needNotFilter(String urlPath){
                  
          if(urlPath.endsWith(loginPage) || urlPath.endsWith(loginAction)){
                      
          return true ;
                  }

                  
          return false ;
              }


              
          /**
               * init params
               
          */

              
          public void init(FilterConfig config) throws ServletException {
                  loginPage 
          = config.getInitParameter("loginPage");
                  loginAction 
          = config.getInitParameter("loginAction");
                  userLoginTag 
          = config.getInitParameter("userLoginTag");
                  System.out.println(
          "the loginPage value is :"+loginPage);
                  System.out.println(
          "the loginAction value is :"+loginAction);
                  System.out.println(
          "the userLoginTag value is :"+userLoginTag);
                  
          this.config = config;
                  
          //以前頁面登陸的時候session進行設置HttpSession session = request.getSession(true);
                  
          //session.setAttribute(GlobalSources.user_login_tag, user);
                  GlobalSources.user_login_tag = userLoginTag ;//session放到GlobalSources,bean里,
          用GlobalSources.user_login_tag獲得

              }


              
          public void destroy(){
                  
                  
          this.config = null;
              }


          }


          web.xml中對應filter文件:
           <filter>
                <filter-name>adminFilter</filter-name>
                <filter-class>org.bluechant.mvc.filter.AdminFilter</filter-class>
                    <init-param>
                         <param-name>loginAction</param-name>
                         <param-value>/account!login.do</param-value>
                    </init-param>
                    <init-param>
                         <param-name>loginPage</param-name>
                         <param-value>/login.html</param-value>
                    </init-param>
                    <init-param>
                         <param-name>userLoginTag</param-name>
                         <param-value>account_login_check</param-value>
                    </init-param>  
           </filter>
           
           <filter>
                    <filter-name>userSourceFilter</filter-name>
                    <filter-class>org.bluechant.mvc.filter.AccountRoleFilter</filter-class>
           </filter>
           
           <filter-mapping>
                    <filter-name>adminFilter</filter-name>
                    <url-pattern>*.do</url-pattern><!-- 表明凡是訪問跳轉*.do形式的跳轉,都要運行名字為adminFilter的過濾器 -->
           </filter-mapping>
           
           <filter-mapping>
                    <filter-name>userSourceFilter</filter-name>
                    <url-pattern>*.do</url-pattern>
           </filter-mapping>

          posted on 2012-05-24 10:40 youngturk 閱讀(898) 評論(0)  編輯  收藏 所屬分類: web.xml解析

          <2012年5月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          公告

          this year :
          1 jQuery
          2 freemarker
          3 框架結構
          4 口語英語

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          EJB學習

          Flex學習

          learn English

          oracle

          spring MVC web service

          SQL

          Struts

          生活保健

          解析文件

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 开原市| 白山市| 临桂县| 于田县| 义马市| 黑水县| 绥化市| 深圳市| 益阳市| 紫云| 福建省| 玉环县| 长汀县| 胶南市| 西峡县| 当涂县| 奈曼旗| 卓资县| 屏东市| 拜城县| 龙州县| 铅山县| 中宁县| 娄底市| 襄汾县| 贡山| 绵阳市| 沈阳市| 祁东县| 伊春市| 绥阳县| 博客| 弋阳县| 渝中区| 盖州市| 无棣县| 嘉义县| 连云港市| 远安县| 玉林市| 梧州市|