Dieser Artikel bietet Ihnen eine Einführung in die relevanten Operationen des Struts-Interceptors (mit Code). Ich hoffe, dass er für Freunde hilfreich ist.
Die Methode zur Implementierung von aop
wird im Allgemeinen für Transaktionsvorgänge verwendet Bestimmte nicht autorisierte Aktionen Beim Zugriff auf die Seite wird der Abfangvorgang ausgeführt, um illegale Zugriffe abzufangen
Der Out-of-Box-Interceptor
<!-- 拦截器 --> <interceptor-ref name="params"/> <!-- 传递属性拦截器 --> <interceptor-ref name="timer"/> <!-- 测算执行时间 -->
muss ein Pass-Attribut für diesen Interceptor haben
Das laufende Ausgabeprotokoll lautet wie folgt:
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.
Sie können sehen, dass die Ausführung dieser Aktion insgesamt 12 ms dauert
Benutzerdefinierter InterceptorSie müssen diese abstrakte Klasse erben und ihre Methode implementieren. com.opensymphony.xwork2.interceptor.AbstractInterceptor Abstrakte Klasse Der Code lautet wie folgt
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; } }
Implementieren Sie die Interceptor-Methode dieser Klasse
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; } }
Ändern Sie die Konfigurationsdatei
<!-- 拦截器 --> <interceptor-ref name="params"/> <!-- 传递属性拦截器 --> <interceptor-ref name="timer"/> <!-- 测算执行时间 -->/HelloWorld.jsp /error.html
Wirkung Folgendes
Die Konsolenausgabe lautet wie folgt
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.
Sie können sehen, dass die Interceptoren, da 3 Interceptoren konfiguriert sind werden nacheinander ausgeführt.
Zwei Vorgänge werden vor und nach der Ausführung ausgeführtDies ist aspektorientierte ProgrammierungSie können hier Transaktionssperren hinzufügen, wenn mehrere Tomcat-Instanzen gelesen werden Gleichzeitig kann der Sperrvorgang in der Datenbank ausgeführt und Redis zum Erreichen des Sperrzwecks verwendet werden
Java-Video-Tutorial
-Spalte der chinesischen PHP-Website!
Das obige ist der detaillierte Inhalt vonEinführung in verwandte Operationen des Struts-Interceptors (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!