国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

Struts2——攔截器(interceptor)

2024-04-27 15:05:34
字體:
來源:轉載
供稿:網友

1、攔截器與過濾器

1、攔截器屬于struts框架,只能攔截action及其方法 2、過濾器屬于web容器,過濾一切請求(action,servlet,hsp,html等) 3、實現方法:攔截器——動態代理;過濾器——函數回調。

2、攔截器與攔截器棧(stark)

1、多個攔截器組成攔截器棧 2、二者的引用方法一致

3、攔截器的實現步驟

1、編寫攔截器(接口Interceptor//繼承AbstractInterceptor) 2、在struts.xml中配置攔截器 3、在action中引用配置好的攔截器

4、攔截器常用配置

1、當引用了自定義的攔截器后,默認配置攔截器失效; 2、當引用了自定義的攔截器后,又想使默認攔截器,可配置成攔截器棧,再引用到action 3、當多個action都要引用同一個攔截器時,可配置為默認攔截器 <package name="interceptor" namespace="/" extends="struts-default"> <!-- 攔截器/棧配置部分 --> <interceptors> <!-- 配置攔截器 --> <interceptor name="time" class="com.interceptor.TimeInterceptor"></interceptor> <!-- 配置攔截器棧 --> <interceptor-stack name="mystack"> <interceptor-ref name="time"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </interceptor-stack> </interceptors> <!-- 配置默認攔截器/棧 --> <default-interceptor-ref name="mystack"></default-interceptor-ref> <action name="hello" class="com.action.HelloAction"> <result>/index.jsp</result> <!-- 攔截器/棧引用部分 --> <interceptor-ref name="time"></interceptor-ref> </action> </package>

5、方法攔截器(攔截action的方法)

java類//改為繼承的類是MethodFilterInterceptorpublic class ListInterceptor extends MethodFilterInterceptorstruts.xml需要注意的配置<interceptor name="" class=""> <param name="includeMethods">被攔截的方法名</param> <param name="excludeMethods">不被攔截的方法名</param></interceptor>

6、案例:權限控制

login.jsp<body> <form action="login" method="post"> 請輸入姓名<input type="text" name="name"><br> <input type="submit" value="登錄"><br> </form> <a href="hello">去隱藏頁面</a></body>success.jsp為了便與測試該頁放在WEB-INF下(無法直接訪問)<body> <h1>user:${user}name:${name},歡迎您來到登錄后才能顯示的頁面!</h1></body> LoginAction.javapublic class LoginAction extends ActionSupport{ PRivate String name; @Override public String execute() throws Exception { // TODO 自動生成的方法存根 //把用戶名保存到session ActionContext.getContext().getSession().put("user", name); System.out.println("execute----------"+"put(user, name)"); return super.execute(); } public String getName() { return name; } public void setName(String name) { this.name = name; }} LoginInterceptor.javapublic class LoginInterceptor extends AbstractInterceptor{ //注意:如果是接口Interceptor是xwork2包下的 @Override public String intercept(ActionInvocation arg0) throws Exception { // TODO 自動生成的方法存根 //現獲取發起請求的action的名(沒有后綴),判斷是否為登錄的action String ActionName=arg0.getProxy().getActionName(); if (ActionName.equals("login")) { return arg0.invoke(); } Object object=arg0.getInvocationContext().getSession().get("user"); if (object==null) { System.out.println("LoginIntercept----------"+"object==null"); return Action.LOGIN; } return arg0.invoke(); }} HelloAction.javapublic class HelloAction extends ActionSupport{ private String name; @Override public String execute() throws Exception { // TODO 自動生成的方法存根 System.out.println("hello-------name="+ActionContext.getContext().getSession().get("user")); return super.execute(); } public String getName() { return name; } public void setName(String name) { this.name = name; }}struts.xml <package name="interceptor" namespace="/" extends="struts-default"> <interceptors> <interceptor-stack> <interceptor name="loginInterceptor" class="com.interceptor.LoginInterceptor"> </interceptor> <interceptor-stack name="mystack"> <interceptor-ref name="loginInterceptor"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </interceptor-stack> </interceptors> <!-- 配置默認攔截器/棧 --> <default-interceptor-ref name="mystack"></default-interceptor-ref> <!-- 配置默認result --> <global-results> <result name="login">/login.jsp</result> </global-results> <action name="hello" class="com.action.HelloAction"> <result>/WEB-INF/success.jsp</result> </action> <action name="login" class="com.action.LoginAction"> <result>/WEB-INF/success.jsp</result> </action> </package>測試hello

這里寫圖片描述

測試login

這里寫圖片描述

再測試hello

這里寫圖片描述


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乃东县| 宁远县| 边坝县| 梅河口市| 钟山县| 韶关市| 霍林郭勒市| 全州县| 长沙市| 长治县| 博爱县| 芮城县| 吉水县| 应用必备| 上高县| 山丹县| 新密市| 监利县| 县级市| 潮安县| 孟津县| 元谋县| 嘉善县| 阿鲁科尔沁旗| 龙海市| 玛纳斯县| 平远县| 易门县| 凌海市| 棋牌| 星子县| 鄢陵县| 遂昌县| 南城县| 宁波市| 扶绥县| 教育| 德昌县| 那曲县| 阿拉善盟| 罗平县|