Struts拦截器相关操作的案例

  介绍

小编给大家分享一Struts拦下截器相关操作的案例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

实现aop的方式

用于实现行动之前,之后执行

一般用于事物操作。

一般用于对某些未授权的页面访问的时候,进行拦截操作,拦截非法访问。

开箱即用拦截器

& lt; !——拦截器——比;   & lt; interceptor-ref name=皃arams"/比;& lt; !——传递属性拦截器——比;   & lt; interceptor-ref name=皌imer"/比;& lt; !——测算执行时间,在

必须有传递属性这个拦截器

运行输出日志如下

2019-03-24 03:50:19.231(调试)com.opensymphony.xwork2.ognl.SecurityMemberAccess.isAccessible (SecurityMemberAccess.java: 67)——(目标:com.ming检查访问。HelloWorldAction@33e67d25成员:公共. lang。字符串com.ming.HelloWorldAction.getName(),属性名称):   2019-03-24 03:50:19.232[信息]com.opensymphony.xwork2.interceptor.TimerInterceptor.doLog (TimerInterceptor.java: 205)——执行行动[//你好!执行]女士花了12

可以看到这一个行动共运行耗时12 ms

<>强自定义拦截器

需要继承该抽象类,并实现其方法即com.opensymphony.xwork2.interceptor.AbstractInterceptor抽象类

代码如下

包com.ming;      进口com.opensymphony.xwork2.ActionInvocation;   进口com.opensymphony.xwork2.interceptor.AbstractInterceptor;      公开课MyInterceptor延伸AbstractInterceptor {/* *   *覆盖处理拦截   *   * @param调用   */@Override   公共字符串拦截(ActionInvocation调用){抛出异常   返回null;   }   }

实现该类的拦截方法

包com.ming;      进口com.opensymphony.xwork2.ActionInvocation;   进口com.opensymphony.xwork2.interceptor.AbstractInterceptor;   进口org.apache.logging.log4j.LogManager;   进口org.apache.logging.log4j.Logger;      公开课MyInterceptor延伸AbstractInterceptor {/* *   *覆盖处理拦截   *   * @param调用   */@Override   公共字符串拦截(ActionInvocation调用){抛出异常   日志记录器=LogManager.getLogger ();//执行结果前   字符串输出=班薭efore";   logger.info(输出);//开始执行行动   字符串的结果=invocation.invoke ();//执行结果后   输出=班薬fter";   logger.info(输出);//继续传递到下一个拦截器   返回结果;   }   }

更改配置文件

& lt; !——拦截器——比;   & lt; interceptor-ref name=皃arams"/比;& lt; !——传递属性拦截器——比;   & lt; interceptor-ref name=皌imer"/比;& lt; !——测算执行时间——比;   & lt; interceptor-ref name=癕yInterceptor"/比;   & lt; !——成功返回页面——比;   & lt;结果名称=皊uccess"祝辞/HelloWorld.jsp   & lt;结果名称=癳rror"祝辞/error.html

效果如下

控制台输出结果如下

2019-03-24 04:37:24.086(调试)com.opensymphony.xwork2.ognl.SecurityMemberAccess.isAccessible (SecurityMemberAccess.java: 67)——(目标:com.ming检查访问。HelloWorldAction@5121691d,成员:公共空com.ming.HelloWorldAction.setName(以),属性名称):   2019-03-24 04:37:24.087[信息]com.ming.MyInterceptor.intercept (MyInterceptor.java: 19) -嗨   (调试)2019-03-24 04:37:24.089 com.opensymphony.xwork2.DefaultActionInvocation.invokeAction (DefaultActionInvocation.java: 430)——执行动作方法=执行   (调试)2019-03-24 04:37:24.106 com.opensymphony.xwork2.ognl.SecurityMemberAccess.isAccessible (SecurityMemberAccess.java: 67)——(目标:com.ming检查访问。HelloWorldAction@5121691d成员:公共. lang。字符串com.ming.HelloWorldAction.execute()抛出. lang。例外,属性:null]   (调试)2019-03-24 04:37:24.143 com.opensymphony.xwork2.ognl.SecurityMemberAccess.isAccessible (SecurityMemberAccess.java: 67)——(目标:org.apache.struts2.result检查访问。ServletDispatcherResult@2e4369c6,成员:公共空org.apache.struts2.result.StrutsResultSupport.setLocation(以),属性:位置)   (调试)2019-03-24 04:37:24.143 com.opensymphony.xwork2.ognl.SecurityMemberAccess.isAccessible (SecurityMemberAccess.java: 67)——(目标:org.apache.struts2.result检查访问。ServletDispatcherResult@2e4369c6,成员:公共空org.apache.struts2.result.StrutsResultSupport.setLocation(以),属性:位置)   (调试)2019-03-24 04:37:24.150 org.apache.struts2.result.ServletDispatcherResult.doExecute位置(ServletDispatcherResult.java: 127) -转发:/error.html   (调试)2019-03-24 04:37:24.158 com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler.nullPropertyValue (InstantiatingNullHandler.java: 98)——进入nullPropertyValue[目标=[com.ming。HelloWorldAction@5121691d com.opensymphony.xwork2。DefaultTextProvider@2e34626e],财产=struts]   2019-03-24 04:37:24.175[信息]com.ming.MyInterceptor.intercept (MyInterceptor.java: 26) -嗨   2019-03-24 04:37:24.176[信息]com.opensymphony.xwork2.interceptor.TimerInterceptor.doLog (TimerInterceptor.java: 205)——执行行动[//你好!执行]女士花了89

Struts拦截器相关操作的案例