token 防止页面重复提交

来源:互联网 发布:it consultis 编辑:程序博客网 时间:2024/06/06 00:20

很多时候要防止重复提交,比如论坛在发表提问的时候,要是不控制那就可以一直提交~

使用方法:论坛为例

ask.do :为跳到提问页面的action

ask.jsp:为提问页面

askok.do:为提问成功提交的action

askok.jsp:处理提问之后的跳转的jsp

 

首先在ask这个action里面加入saveToken(request);这是为了在提问页面即ask.jsp页面生成一个隐藏的表单

 <input type="hidden" name="org.apache.struts.taglib.html.TOKEN" value="a6b9ff6834284444001b8206723b654d">

在ask。jsp页面做以下处理:使用form为<html:form  method="post" action="askok.do">  因此要引入这个标签 否则不会生成这个隐藏表单。

form写法 1.1之后不写name 没有这个属性 但要在struts-config。xml里面配置这个actionform 我们可以定义为question  同时要配置askok这个action里面要写入对应的form

<action path="/askok" type="....." name="question">必须写上这个否则会报找不到FORM的错误

如果要在ask。jsp这个页面做js处理要用到FORM name的话可以直接写 question   因为struts自动生成了这个form的name 生成之后的:<form name="bangquestion" method="post" action="/askok.do">

ask.jsp 这个页面自动生成加入FORM name

 

然后在askok.do里面写if (isTokenValid(ac.getRequest(),true)) {

添加提问

}else

{

跳转提示

}


2.如果是直接跳转到页面,未经过action跳转的,可以在页面form中action里写 上 saveToken(request);