介绍
小编给大家分享一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)——执行行动[//你好!执行]女士花了89Struts拦截器相关操作的案例