您的位置:首页 > 编程语言 > Java开发

struts2 结果类型的作用 type & 防止表单重复提交

2011-05-16 19:36 253 查看
实际上在Struts2框架中,一个完整的结果视图配置文件应该是:

1

<

action

name

=

"Action名称"

class

=

"Action类路径"

method

=

"方法名"

>

2


<

result

name

=

"逻辑视图名称"

type

=

"结果类型"

>

3


<

param

name

=

"参数名称"

>参数值</

param

>

4


</

result

>

5

</

action

>

结果类型的作用

返回类型在Struts2框架下的struts-default.xml中可以找到所支持的结果类型.

常用的有3种:

1、请求转发(dispatcher)

这是Struts2的默认结果类型。

请求转发只能请求转发至同一个web应用。

利用请求转发浏览器地址栏不会发生变化。

利用请求转发调用者与被调用者之间共享相同的request对象和response对象,他们属于同一个访问请求和响应。

2、重定向(redirect)

重定向不仅可以指定到一个web应用,还能够制定到任何JSP资源。

重定向的访问结束后,浏览器的地址栏中显示URL变化。

重定向的调用者与被调用者使用各自的的request对象和response对象,他们属于两个独立的访问请求和响应过程。

重定向之后会丢失前一次访问的数据信息。

3、Action链(chain)

Action链是通过一个chain的拦截器实现的。

第一个Action执行成功后有chain拦截器负责发出第二个Action的请求,Action链中所有Action都共享一个值栈,当执行Action的时候,会将自身的数据全部压入值栈。



注意是怎样从action1的参数传给action2的

防止表单重复提交

方法一就是重定向的方式,如上图,方法二是 session token (session令牌)





通过Session Token(Session令牌):当客户端请求页面时,服务器会通过token标签生成一个随机数,并且将该随机数放置到session当中,然后将该随机数发向客户端;如果客户第一次提交,那么会将该随机数发往服务器端,服务器会接收到该随机数并且与session中所保存的随机数进行比较,这时两者的值是相同的,服务器认为是第一次提交,并且将更新服务器端的这个随机数值;如果此时再次重复提交,那么客户端发向服务器端的随机数还是之前的那个,而服务器端的随机数则已经发生了变化,两者不同,服务器就认为这是重复提交,进而转向invalid.token所指向的结果页面。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: