麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

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 | 亚洲天堂在线电影 | 中文在线观看www | 202z中文字幕第一页 | 狠狠婷婷综合久久久久久妖精 | 麻豆视频观看 | a级毛片免费观看在线播放 日本aaa一级片 | 亚洲精品成人av在线 | 欧美视频一区二区三区在线观看 | 草b视频在线观看 | 日韩视频一 | 免费亚洲视频在线观看 | 中文字幕在线亚洲 | 亚洲生活片 | 91短视频免费 | 国产日产精品一区四区介绍 | 精品国产乱码一区二区三区四区 | 日韩a毛片免费观看 | 久久久久久久一区二区三区 | 黄视频免费在线观看 | 被啪羞羞视频在线观看 | 国产一区日韩精品 | 精品国产一区二区三区久久久蜜月 | 亚洲极色| 日韩视频一区二区三区在线观看 | 免费黄色在线电影 | 关键词| 精品亚洲夜色av98在线观看 | 欧产日产国产精品乱噜噜 | 精品国产一区二区三 | 依人九九宗合九九九 | 91久久在线观看 | 午夜视频亚洲 | 成人三级视频网站 | 亚洲免费观看视频 | 国产精品白嫩白嫩大学美女 | 久草在线综合 | 精品一区二区三区免费毛片爱 | 99re久久最新地址获取 | 一级免费在线视频 |