旗下导航:搜·么
当前位置:网站首页 > JAVA教程 > 正文

Struts拦截器的相干操纵引见(附代码)【JAVA教程】,java

作者:搜教程发布时间:2019-11-27分类:JAVA教程浏览:28评论:0


导读:本篇文章给人人带来的内容是关于Struts阻拦器的相干操纵引见(附代码),有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。完成aop的体式格局用于完成acti...

本篇文章给人人带来的内容是关于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到达锁的目标

本篇文章到这里就已悉数完毕了,更多其他精彩内容能够关注ki4网的Java视频教程栏目!

以上就是Struts阻拦器的相干操纵引见(附代码)的细致内容,更多请关注ki4网别的相干文章!

标签:java


欢迎 发表评论: