Struts2中防止表单的重复提交

Struts2中防止表单的重复提交
Struts2中防止表单的重复提交

Struts2中防止表单的重复提交

在学习编程的过程中,我觉得不止要获得课本的知识,

更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,更多Java学习,请搜索疯狂Java;

struts2的token令牌

1、javaweb控制表单重复提交

(1)在jsp页面上使用隐藏域

这样做,每次正常跳转到该页面隐藏域都会产生不同的value的值,此时属于正常操作

如果提交表单的时候,出现隐藏域的值相同,说明表单重复提交(2)在Action类中

先获取session中存放的token的值,String sessionToken = session.getAttibuter

("sessionToken");

首先会获取页面表单隐藏域(token.html)的值,String token = request.getParameter("token.html");

同时放置到session中,session.setAttibuter("sessionToken",token);

判断表单是否重复提交

if(sessionToken.equal(token)){//表单重复提交

}

else{//表单没有重复提交

}

2、struts实现表单重复提交

(1)在某个页面验证表单重复提交,此时要添加标签,该标签可以产生如下代码:

(2)由于token拦截器没有放置到默认栈中,所以当使用token表单重复提交的时候,需要在struts.xml中加载token拦截器

(3)需要在指定的Action的配置文件struts.xml中,使用invalid.token返回到对应的错误页面

/model/message.jsp

(4)如果加载表单重复提交的拦截器,那么此时对访问当前Action中所有的方法都进行拦截器,

我们希望对Action中某个方法进行表单重复提交的校验,此时,添加includeMethods参数

定义:

save

(5)在错误页面显示表单重复提交的错误信息,错误信息通过标签s:actionerror显示


(6)实现国际化,将表单重复提交改成中文

struts.messages.invalid.token=The form has already been processed or no token

was supplied, please try again.

疯狂Java培训的课程采用针对性培养,全面提升学员就业能力,重点加强训练职业素质。老师辛勤的讲解,让学员充分感受Java的魅力,充分激发每个学员对于编程的热爱,让学员在半年的时间内掌握8-10万的代码量,成为真正的技术高手,疯狂Java采用企业全真模拟开发训练,迅速积累项目经验。让学员迅速获得其他人需要花费两年才能获得的工作技能,无忧就业!

SCME_STRUTS2试卷

--------------------------------------装--------------------------------------订------------------------------线---------------------------------------- **学院课程考试试卷 课程名称:《使用Struts2开发基于MVC设计模式的企业级应用》(A)卷 年级:班级: 姓名:_______________ 学号:_________________ 考试(考查) 闭卷 选择题(每题2分,共计100分) 1.在控制器类中一般需要添加相应属性的( A )和(C )。(选两项) A.setter方法 B.as方法 C.getter方法 D.is方法 2.业务控制器需要在( B )配置文件中进行配置 A.web.xml B.struts.xml C.struts2.xml D.webwork.xml 3.不属于Struts 2表单标签库的是( D )。 A. B. C. D.标签的property属性指定字段的名字,对应ActionForm bean中的一个属性,代码如下: 的对应的userForm bean属性 private String login_Name; public String getLogin_Name() { return login_Name; } public void setLogin_Name(String login_Name) { this.login_Name = login_Name; } 3,:生成HTML标签,使用方法与相同。 启用 停用 4,:生成HTML