struts2框架中Action必須實現execute方法?和Struts參數傳遞

分類:編程 時間:2017-03-31

分兩種情況。
1)如果你的Action類是繼承自ActionSupport的話,確切的說是重寫了execute方法,ActionSupport裏的默認實現
就是返回"success"視圖。因此,你可以不實現execute方法,只要你的struts.xml裏有"success"對應的result即可。

2)如果你的Action類沒有繼承ActionSupport,而你又沒有在struts.xml中對應<action>標簽中用method屬性指定
你自己的方法的話,默認就要找execute方法,這時是必須要實現execute方法的,否則Struts2會找不到對應的
方法而報錯。不過,大部分情況下都是繼承ActionSupport的(比如輸入驗證、文件上傳等功能就要求必須繼承)。

還有,不管你寫沒寫execute方法,還是可以用<action>標簽的method屬性指定其他方法的。

例子:其中${}用的是
<action name="export" class="exportVoucherAction" method="export" >
   <result name="Error" type="redirect">/jsp/common/PDFError.jsp?errorCode=${errorCode} </result>
</action>

傳遞參數在另外一個頁面顯示:
    errorCode=URLEncoder.encode(ExceptionConstant.EVS512+":"+Dispatch.call(disp, "GetLastErr").getString(),"utf-8");
    return "Error";


在action中取出。
<div style="color:#F00">Errormessage:<%=URLDecoder.decode(new String(request.getParameter("errorCode").getBytes("ISO8859-1"),"UTF-8"),"UTF-8") %>

使用URLEncoder和URLDecoder的進行編碼與解碼原因是因為:瀏覽器將輸入用戶輸入請求的URL首先進行編碼晨自己操作系統的編碼,然後再發送給服務器
每個操作系統,每個平臺的編碼方式與規則是不一樣的,這樣就需要用這兩個類進行編碼,非常好用。
而且在發送時候進行URLEncoder編碼的時候,很多時候發送的參數是post請求的,這樣在服務器端轉發,比方說請求轉發的時候,暴露給用戶的URL其實是編碼後的
,信息就不會直接暴露給用戶,起到了相對安全的作用。
Tags: 瀏覽器 success return action common

文章來源:


ads
ads

相關文章
ads

相關文章

ad