亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Struts2(十四)攔截器實現權限管理

2019-11-14 23:36:50
字體:
來源:轉載
供稿:網友
Struts2(十四)攔截器實現權限管理一、認識攔截器

攔截器也是一個類

攔截器可以在Action被調用之前和之后執行代碼

框架很多核心功能是攔截器實現的

攔截器的特點:

攔截器自由組合,增強了靈活性、擴展性、有利于系統解耦

攔截器可以攔截Action請求

在訪問的Action執行之前和執行之后執行代碼實現某項功能

Struts2:

大部分功能是在攔截器中實現的如:接收輸入的參數,數據驗證,文件上傳,國際化等

應用程序:

需要在Action執行的前后執行特定功能

Action執行時間統計,Action訪問權限管理

Action添加功能,Action代碼不動使用攔截器實現功能

二、攔截器工作方式

三、自帶的一些攔截器

Struts2還有很多攔截器。

四、攔截器棧

從結構上 :攔截器棧就是一組攔截器

從功能上:攔截器棧也是攔截器

五、默認攔截器

六、計算運行Action的時間

MyTimerInterceptor

package com.pb.web.interceptor;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class MyTimerInterceptor extends AbstractInterceptor {        //實現父類的方法    @Override    public String intercept(ActionInvocation invocation) throws Exception {        //執行前的時間         long startTime=System.currentTimeMillis();        System.out.

struts.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"    "http://struts.apache.org/dtds/struts-2.3.dtd"><struts>    <!--  禁用動態方法調用-->    <constant name="struts.enable.DynamicMethodInvocation" value="false" />    <!--  啟用開發模式后,更改設置不用重啟Tomcat-->    <constant name="struts.devMode" value="true" />    <!-- 包默認繼承strus-default -->    <package name="default" namespace="/" extends="struts-default">    <interceptors>    <interceptor name="myTimer" class="com.pb.web.interceptor.MyTimerInterceptor"></interceptor>    </interceptors>       <action name="hello" class="com.pb.web.action.HelloAction" method="hello">       <result name="success">/index.jsp</result>       <result name="input">/index.jsp</result>       <result name="error">/index.jsp</result>       <!--  啟用自定義的攔截器-->       <interceptor-ref name="myTimer"/>       <!-- 同時啟用struts2默認的攔截器名稱為defaultStack -->       <interceptor-ref name="defaultStack"/>       </action>    </package></struts>
七、自定義攔截器

struts2有三種方法自定義攔截器

  • 實現interceptor接口
  • 繼承AbstractInterceptor類
  • 繼承MethodFilterInterceptor類

八、簡單例子實現登錄后某個頁面才能訪問

登錄后才能訪問/WEB-INF/page/security.jsp

實體類

package com.pb.entity;/* * 用戶類 */public class User {    private String username;    private String passWord;            public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }        }
package com.pb.web.action;import java.util.Map;import org.apache.struts2.interceptor.sessionAware;import com.opensymphony.xwork2.ActionSupport;import com.pb.entity.User;public class LoginAction extends ActionSupport implements SessionAware {    private User user;    private Map<String, Object> session;    //登錄    public String login(){        if("admin".equals(user.getUsername())&&"admin".equals(user.getPassword())){            session.put("user", user);            return SUCCESS;        }        return ERROR;    }        public User getUser() {        return user;    }    public void setUser(User user) {        this.user = user;    }    @Override    public void setSession(Map<String, Object> session) {        this.session=session;            }    public Map<String, Object> getSession() {        return session;    }        }

攔截器

package com.pb.web.interceptor;import java.util.Map;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;import com.pb.entity.User;public class MyInterceptor extends AbstractInterceptor {    @Override    public String intercept(ActionInvocation invocation) throws Exception {        Map<String, Object> session=ActionContext.getContext().getSession();        //獲取session中保持的用戶信息        User user=(User) session.get("user");        if(user!=null){            //如果用戶已經登錄,繼續執行剩余的攔截器和Action            return invocation.invoke();        }else{            //如果用戶尚未登錄,返回到登錄頁面            return Action.LOGIN;        }            }}

struts.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"    "http://struts.apache.org/dtds/struts-2.3.dtd"><struts>   <package name="default" namespace="/" extends="struts-default">   <interceptors>   <!--定義權限驗證攔截器 -->   <interceptor name="myInterceptor" class="com.pb.web.interceptor.MyInterceptor"></interceptor>   <!--定義攔截器棧 -->   <interceptor-stack name="myStack">   <!--使用默認的攔截器 -->   <interceptor-ref name="defaultStack"  />      <interceptor-ref name="myInterceptor"  />   </interceptor-stack>   </interceptors>   <!--  定義全局結果返回login時,返回登錄頁面-->   <global-results>   <!--以重定向的方式跳轉  -->   <result name="login" type="redirect">/login.jsp</result>   </global-results>   <!-- action-->   <action name="login" class="com.pb.web.action.LoginAction" method="login">   <!--  結果判斷和頁面跳轉-->   <result name="success">/loginSuccess.jsp</result>   <result name="error">/error.jsp</result>   </action>   <action name="security">   <interceptor-ref name="myStack" />   <result name="success"> /WEB-INF/page/security.jsp   </result>      </action>   </package></struts>
九、攔截器使用和與過濾器的不同之處

與過濾器的相同之處:

  • 功能相似
  • 原理相似
  • 方法相似

與過濾器的不同之處:

  • 攔截器用于攔截Action請求,而過濾器幾乎可以過濾所有的請求
  • 攔截器中可以獲取Action的當前執行狀態,而過濾器不可以
  • 過濾器是Servlet中概念,在Web.xml中配置;攔截器是Struts2/Webwork中的概念在struts.xml中配置


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97精品伊人久久久大香线蕉| 中文字幕九色91在线| www亚洲精品| 77777亚洲午夜久久多人| 最近中文字幕日韩精品| 精品久久久久久电影| 欧美性xxxx极品hd欧美风情| 久久久999国产| 少妇高潮久久久久久潘金莲| 日韩av免费看网站| 日韩欧美亚洲一二三区| 精品丝袜一区二区三区| 亚洲精品第一国产综合精品| 日本国产一区二区三区| 欧美野外猛男的大粗鳮| yellow中文字幕久久| 亚洲国产精彩中文乱码av在线播放| 国产成人免费91av在线| 国产精品一区久久久| 久久香蕉精品香蕉| 国外视频精品毛片| 欧美俄罗斯乱妇| 国产伦精品免费视频| 亚洲一区二区少妇| 久久国产天堂福利天堂| 91av在线免费观看视频| 久久91精品国产91久久跳| 亚洲欧美中文字幕在线一区| 亚洲理论片在线观看| 国产欧美日韩免费看aⅴ视频| 91久久久久久久一区二区| 国产精品扒开腿做| 欧美激情免费观看| 亚洲免费影视第一页| 亚洲激情在线观看视频免费| 亚洲最新av在线| 欧美精品久久一区二区| 欧美另类99xxxxx| 亚洲国产精品久久久久秋霞不卡| 国模精品系列视频| 亚洲色图综合网| 亚洲尤物视频网| 亚洲老头老太hd| 欧美黄色性视频| 亚洲免费人成在线视频观看| 91精品国产电影| 在线视频日韩精品| 欧美日韩国产精品| 97精品国产97久久久久久| 国产精品福利网站| 色噜噜狠狠狠综合曰曰曰| 麻豆国产精品va在线观看不卡| 日韩极品精品视频免费观看| 久久影视电视剧凤归四时歌| 亚洲国产精品电影在线观看| 久久久久久久久久国产精品| 亚洲国产又黄又爽女人高潮的| 最近2019中文字幕第三页视频| 欧美裸体视频网站| 九九久久久久99精品| 欧美精品videofree1080p| 亚洲国产99精品国自产| 欧美日韩精品在线视频| 国产日韩精品电影| 色悠久久久久综合先锋影音下载| 国产精品中文久久久久久久| 成人黄色av网| 欧美视频一二三| 78色国产精品| 欧美精品免费在线观看| www.日韩欧美| 美日韩丰满少妇在线观看| 日韩免费av片在线观看| 日韩高清有码在线| 国产视频自拍一区| 欧美区二区三区| 狠狠久久五月精品中文字幕| 国产精品久久久久久久久久尿| 欧美国产日韩xxxxx| 97国产真实伦对白精彩视频8| 国产深夜精品福利| 日韩亚洲欧美中文在线| 国外成人在线直播| 欧美另类极品videosbest最新版本| 日韩在线观看视频免费| 国产精品久久久久久亚洲调教| 亚洲第一视频在线观看| 国产精品一区二区久久久| 中文国产亚洲喷潮| 这里只有精品在线播放| 日韩不卡在线观看| 这里只有精品视频在线| 国产成人亚洲综合青青| 色99之美女主播在线视频| 成人国产精品一区二区| 欧洲美女7788成人免费视频| 国产精品久久久久高潮| 国产成人精品一区二区| 亚洲网址你懂得| 日韩专区中文字幕| 国产精品免费久久久久久| 国产精品视频免费观看www| 一个人www欧美| 欧美日韩一区二区三区在线免费观看| 日韩综合中文字幕| 亚洲香蕉在线观看| 日韩美女视频免费看| 欧美性猛交视频| 一区二区三区视频免费在线观看| 国产精品高清在线| 久热精品视频在线免费观看| 57pao国产精品一区| 亚洲自拍偷拍网址| 国产精品视频在线播放| 91丝袜美腿美女视频网站| 91黑丝高跟在线| 日本国产精品视频| 久久九九热免费视频| 久久深夜福利免费观看| 国产精品九九久久久久久久| 懂色aⅴ精品一区二区三区蜜月| 色阁综合伊人av| 国产精品网站入口| 国产精品精品视频一区二区三区| 国产成人精品免高潮在线观看| 韩国精品美女www爽爽爽视频| 欧美极品欧美精品欧美视频| 黄网动漫久久久| 亚洲精品国产综合区久久久久久久| 亚洲人成电影在线观看天堂色| 68精品国产免费久久久久久婷婷| 国产精品第100页| 国产精品久久久久秋霞鲁丝| 欧美日韩国产999| 欧美性理论片在线观看片免费| 2019精品视频| 国产一区二区三区在线| 欧美精品在线网站| 日韩电影中文字幕在线观看| 中文字幕久久久av一区| 久久男人资源视频| www日韩中文字幕在线看| 日韩禁在线播放| 亚洲美女自拍视频| 国产精品高潮呻吟久久av无限| 成人国产精品色哟哟| 国产精品爽爽ⅴa在线观看| 68精品国产免费久久久久久婷婷| 亚洲精品一区久久久久久| 国产精品久久久久久久久久久久| 欧美一区二区三区四区在线| 18性欧美xxxⅹ性满足| www.日韩av.com| 91在线无精精品一区二区| 97国产一区二区精品久久呦| 国产精品直播网红| 97色在线视频观看| 影音先锋欧美在线资源| 国产亚洲视频在线观看| 日韩免费在线视频| www.亚洲天堂| 久久久免费观看| 26uuu亚洲国产精品| 亚洲精品自在久久|