37.使用PreResultListener实现回调
轉(zhuǎn)自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html
在進行本實例前請前復習:五.2自定義攔截器。因為PreResultListener對象一般是綁定在攔截器上使用。
下面我們新建struts2PreResultListener項目進行測試。
步驟一,建立類,實現(xiàn)PreResultListener接口,主要代碼如下:
package com.asm;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.PreResultListener;
public class MyPreResultListener implements PreResultListener {
?????? public void beforeResult(ActionInvocation invocation, String res) {
????????????? // System.out.println(invocation.getAction());
????????????? // System.out.println(invocation.getResultCode());
????????????? /**回調(diào)Action中的方法:
????????????? ?* LoginAction lg = (LoginAction) invocation.getAction(); try {
????????????? ?* lg.execute(); } catch (Exception e) { e.printStackTrace(); }
????????????? ?*/
????????????? System.out.println("檢驗到PreResultListener被執(zhí)行");
?????? }
}?????????????????????????????????????????????????????? 8888888
步驟二,copy前面在自定義攔截器中用到的三個攔截器,并綁定MyPreResultListener對象,首先是在MyInterceptor類中,我們只需要修改intercept方法即可,代碼如下:
public String intercept(ActionInvocation invocation) throws Exception {
????????????? invocation.addPreResultListener(new MyPreResultListener());
????????????? System.out.println("開始攔截");
????????????? String result = invocation.invoke();
????????????? System.out.println("結束攔截");
????????????? return result;
}
隨后在MyMethodFilterInterceptor類中作類似修改。為了區(qū)別,我們在MyAbstractInterceptor類中不綁定MyPreResultListener對象。
步驟三,編寫struts.xml文件,主要配置內(nèi)容如下:
<struts>
?????? <package name="interceptor" extends="struts-default">
????????????? <interceptors>
???????????????????? <interceptor name="myIpt" class="com.asm.MyInterceptor">
???????????????????? </interceptor>
???????????????????? <interceptor name="myAbs"
??????????????????????????? class="com.asm.MyAbstractInterceptor">
???????????????????? </interceptor>
???????????????????? <interceptor name="myMet"
??????????????????????????? class="com.asm.MyMethodFilterInterceptor">
???????????????????? </interceptor>
????????????? </interceptors>
?
????????????? <action name="login" class="com.asm.LoginAction">
???????????????????? <interceptor-ref name="myIpt"></interceptor-ref>
???????????????????? <interceptor-ref name="myAbs"></interceptor-ref>
???????????????????? <interceptor-ref name="myMet"></interceptor-ref>
???????????????????? <result name="success">/success.jsp</result>
????????????? </action>?????????????????????????
?????? </package>
</struts>
步驟四,編寫相應的jsp頁面,發(fā)布測試。
說明:此實例的只是簡要地演示了PreResultListener的使用,所以相對簡單。對于其它相關操作,我們可以從MyPreResultListener類注釋掉的內(nèi)容中找到一此端倪。強調(diào):從執(zhí)行結果來看,PreResultListener對象會在返回結果前執(zhí)行,請注意結合攔截器執(zhí)行的順序來看。此實例目前作為了解。
總結
以上是生活随笔為你收集整理的37.使用PreResultListener实现回调的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VMware推出TrustPoint产品
- 下一篇: vim 安装