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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值