91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Struts攔截器相關操作的案例

發布時間:2020-10-29 11:09:25 來源:億速云 閱讀:280 作者:小新 欄目:編程語言

小編給大家分享一下Struts攔截器相關操作的案例,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

實現aop的方式

用于實現action之前,之后執行

一般用于事物操作.

一般用于對某些未授權的頁面訪問的時候,進行攔截操作,攔截非法訪問.

開箱即用攔截器

<!-- 攔截器 -->
<interceptor-ref name="params"/>  <!-- 傳遞屬性攔截器 -->
<interceptor-ref name="timer"/> <!-- 測算執行時間 -->

必須有傳遞屬性這個攔截器

運行輸出日志如下

2019-03-24 03:50:19.231 [DEBUG] com.opensymphony.xwork2.ognl.SecurityMemberAccess.isAccessible(SecurityMemberAccess.java:67) - Checking access for [target: com.ming.HelloWorldAction@33e67d25, member: public java.lang.String com.ming.HelloWorldAction.getName(), property: name]
2019-03-24 03:50:19.232 [INFO ] com.opensymphony.xwork2.interceptor.TimerInterceptor.doLog(TimerInterceptor.java:205) - Executed action [//hello!execute] took 12 ms.

可以看到這個action一共運行耗時12ms

自定義攔截器

需要繼承該抽象類,并實現其方法 即 com.opensymphony.xwork2.interceptor.AbstractInterceptor 抽象類

代碼如下

package com.ming;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class MyInterceptor extends AbstractInterceptor {
    /**
     * Override to handle interception
     *
     * @param invocation
     */
    @Override
    public String intercept(ActionInvocation invocation) throws Exception {
        return null;
    }
}

實現該類的interceptor方法

package com.ming;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class MyInterceptor extends AbstractInterceptor {
    /**
     * Override to handle interception
     *
     * @param invocation
     */
    @Override
    public String intercept(ActionInvocation invocation) throws Exception {
        Logger logger = LogManager.getLogger();
        // 執行結果前
        String output = "hi before";
        logger.info(output);
        
        // 開始執行Action
        String result = invocation.invoke();
        
        // 執行結果后
        output = "hi after";
        logger.info(output);
        
        // 繼續傳遞到下一個攔截器
        return result;
    }
}

更改配置文件

<!-- 攔截器 -->
<interceptor-ref name="params"/>  <!-- 傳遞屬性攔截器 -->
<interceptor-ref name="timer"/> <!-- 測算執行時間 -->
<interceptor-ref name="MyInterceptor"/>
<!-- 成功返回頁面 -->
<result name="success">/HelloWorld.jsp</result>
<result name="error">/error.html</result>

效果如下

控制臺輸出結果如下

2019-03-24 04:37:24.086 [DEBUG] com.opensymphony.xwork2.ognl.SecurityMemberAccess.isAccessible(SecurityMemberAccess.java:67) - Checking access for [target: com.ming.HelloWorldAction@5121691d, member: public void com.ming.HelloWorldAction.setName(java.lang.String), property: name]
2019-03-24 04:37:24.087 [INFO ] com.ming.MyInterceptor.intercept(MyInterceptor.java:19) - hi before
2019-03-24 04:37:24.089 [DEBUG] com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:430) - Executing action method = execute
2019-03-24 04:37:24.106 [DEBUG] com.opensymphony.xwork2.ognl.SecurityMemberAccess.isAccessible(SecurityMemberAccess.java:67) - Checking access for [target: com.ming.HelloWorldAction@5121691d, member: public java.lang.String com.ming.HelloWorldAction.execute() throws java.lang.Exception, property: null]
2019-03-24 04:37:24.143 [DEBUG] com.opensymphony.xwork2.ognl.SecurityMemberAccess.isAccessible(SecurityMemberAccess.java:67) - Checking access for [target: org.apache.struts2.result.ServletDispatcherResult@2e4369c6, member: public void org.apache.struts2.result.StrutsResultSupport.setLocation(java.lang.String), property: location]
2019-03-24 04:37:24.143 [DEBUG] com.opensymphony.xwork2.ognl.SecurityMemberAccess.isAccessible(SecurityMemberAccess.java:67) - Checking access for [target: org.apache.struts2.result.ServletDispatcherResult@2e4369c6, member: public void org.apache.struts2.result.StrutsResultSupport.setLocation(java.lang.String), property: location]
2019-03-24 04:37:24.150 [DEBUG] org.apache.struts2.result.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:127) - Forwarding to location: /error.html
2019-03-24 04:37:24.158 [DEBUG] com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler.nullPropertyValue(InstantiatingNullHandler.java:98) - Entering nullPropertyValue [target=[com.ming.HelloWorldAction@5121691d, com.opensymphony.xwork2.DefaultTextProvider@2e34626e], property=struts]
2019-03-24 04:37:24.175 [INFO ] com.ming.MyInterceptor.intercept(MyInterceptor.java:26) - hi after
2019-03-24 04:37:24.176 [INFO ] com.opensymphony.xwork2.interceptor.TimerInterceptor.doLog(TimerInterceptor.java:205) - Executed action [//hello!execute] took 89 ms.

可以看到,由于配置了3個攔截器,攔截器被順序執行.
在執行前后分別執行了兩個操作

這就是面向切面編程
此處可以添加事物 鎖  其中鎖可以用redis實現,達到同時多個tomcat實例讀取數據庫的時候,進行加鎖操作,使用redis達到鎖的目的

以上是Struts攔截器相關操作的案例的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

杭州市| 德钦县| 休宁县| 德保县| 门源| 卓尼县| 元氏县| 屏东县| 昌吉市| 榆中县| 普兰县| 翁牛特旗| 龙里县| 延津县| 宣威市| 绥中县| 扎囊县| 镇江市| 安陆市| 临澧县| 洛宁县| 广丰县| 盈江县| 乌恰县| 肃南| 金阳县| 元朗区| 平利县| 华亭县| 维西| 彭水| 洛南县| 祁阳县| 赤壁市| 扎兰屯市| 三江| 崇州市| 益阳市| 公主岭市| 翼城县| 米泉市|