struts2框架中Action必须实现execute方法?和Struts参数传递

分两种情况。
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其实是编码后的
,信息就不会直接暴露给用户,起到了相对安全的作用。

你可能感兴趣的:(Struts参数传递)