攔截器再應用學習

          攔截器
          如果用戶登錄后可以訪問action中的所有方法
          user.jsp{
          request.getSession().setAttribute(
          "user""itcast");
          //專門設置用戶是否登錄狀態,session來專門標注用戶是否登錄
          }
          退出登錄
          quit.jsp{
          request.getSession().removeAttribute(
          "user");
          //將session去掉就行了..
          }
          如果用戶沒有登錄不允許訪問action中的方法,并且提示

          1.定義攔截器
          1.1實現com.opensymphony.xwork2.ActionInvocation.Interceptor接口
              @Override
              
          public void destroy() {//當此類被摧毀的時候執行
                  
              }

              @Override
              
          public void init() {//實例化自動執行
                  
              }
          public String intercept(ActionInvocation invocation) throws Exception {
                  
          // TODO Auto-generated method stub
                  Object user = ActionContext.getContext().getSession().get("user");
                  
          if(user!=null)//判斷用戶是否登錄
                      invocation.invoke();//執行被攔截到的方法,不掉用,被攔截的action方法

          不會被執行
                  ActionContext.getContext().put(
          "message""you have not right");
                  
          return "success";//定義全局
              }//當攔擊到action就會執行此方法
          1.2注冊攔截器 在struts的package中注冊攔截器
          <package name="employee" namespace="/control/employee" extends="struts-default">
                  
          <interceptors> <!-- 注冊攔截器 -->
                      
          <interceptor name="permission" 

          class="cn.itcast.interceptor.PermissionInterceptor"></interceptor>
                      
          <!-- 使用攔截器棧可以使用自定義攔截器,且 不失去系統自定義攔截器功能 

          -->
                      
          <interceptor-stack name="permissionStack">
                          
          <!-- 系統默認攔截器 -->
                          
          <interceptor-ref name="defaultStack"></interceptor-ref>
                          
          <!-- 自定義攔截器的引入 -->
                          
          <interceptor-ref name="permission"></interceptor-ref>
                      
          </interceptor-stack>
                  
          </interceptors>
                  
          <!--默認包里面全用此攔截器  1 與 @@對應-->
                  
          <default-interceptor-ref name="permissionStack"></default-interceptor-ref>
                  
          <global-results>
                      
          <result name="success">/WEB-INF/page/message.jsp</result>
                  
          </global-results>
                  
                  
                  
          <action name="list_*" class="cn.itcast.action.HelloWorldAction" 

          method
          ="{1}">
                      
          <!-- 使用攔截器 @@ -->
                      
          <!-- <interceptor-ref name="permissionStack"></interceptor-ref>
                      
          <interceptor-ref name="增加自定義新攔截器"></interceptor-ref> -->
                  
          </action>
              
          </package>

          1.3 需要定義攔截器棧,否則自定義攔截器會覆蓋struts自帶的攔截器,使struts失去自身的攔截器功能
          /control/employee

          posted on 2012-06-07 11:55 youngturk 閱讀(176) 評論(0)  編輯  收藏 所屬分類: struts2

          <2012年6月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          導航

          統計

          公告

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

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          EJB學習

          Flex學習

          learn English

          oracle

          spring MVC web service

          SQL

          Struts

          生活保健

          解析文件

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 广元市| 通州区| 平南县| 高青县| 枣强县| 贺州市| 阿尔山市| 巴东县| 涿鹿县| 彩票| 西城区| 宝坻区| 康平县| 鄂托克旗| 莱芜市| 江永县| 年辖:市辖区| 千阳县| 都匀市| 铜梁县| 吴川市| 鸡西市| 成安县| 陆良县| 防城港市| 大安市| 东丽区| 双峰县| 巴马| 英德市| 乌拉特中旗| 安庆市| 洪雅县| 彭水| 佳木斯市| 巩义市| 府谷县| 格尔木市| 耿马| 若羌县| 乌兰察布市|