社区
Java EE
帖子详情
求教struts1.2防止重复提交的方法
技术开发到天荒地老
2007-03-05 11:08:11
我看书上写的用Token来处理,要先在一个action里saveToken(request),之后htmlFormTag里面有个renderToken方法把token值放到页面里,在表单提交的action里用isValidToken()来验证。
我按照以上做法,页面里并未生成hidden的token值,于是验证总是通不过。希望用过这种防止重复提交的朋友帮帮忙。
...全文
1216
11
打赏
收藏
求教struts1.2防止重复提交的方法
我看书上写的用Token来处理,要先在一个action里saveToken(request),之后htmlFormTag里面有个renderToken方法把token值放到页面里,在表单提交的action里用isValidToken()来验证。 我按照以上做法,页面里并未生成hidden的token值,于是验证总是通不过。希望用过这种防止重复提交的朋友帮帮忙。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
○福泽天下○
2007-03-06
打赏
举报
回复
mark
yaschiro
2007-03-06
打赏
举报
回复
o
yaschiro
2007-03-06
打赏
举报
回复
o
KevinXie
2007-03-06
打赏
举报
回复
struts有自带的Token(令牌)的机制来解决重复提交(包括后退,刷新等).举例:
假设:假设有一个新增用户的填写表单页面,填写完后点击"提交"按钮完成数据库录入功能,要求不能重复提交(指类似刷新页面的情况).此时,需要有两个action(第一个action用来生成hidden的token值.第二个action用来校验token值,通过判断来决定是不是重复提交,不是则提交操作,否则提示错误)和至少一个页面(保存token值和填写用户信息的录入页面)来完成校验是否重复提交.此处有两个页面来完成.
为了方便,用户表只有两个字段用户名<username>和密码<password>:
具体逻辑如下:
index.jsp--链接-->PrepareAddUserAction.java--转发并生成token-->addUser.jsp--提交-->
AddUserAction.java--首先校验'是否重复提交',是提示错误信息,不是,执行数据库操作.
部分相关代码(省略formbean的代码):
========index.jsp========
<html><head><title>测试</title></head><body>
<a href="<%=request.getContextPath()%>/PrepareAddUserAction.java">新增用户</a>
</body></html>
=========PrepareAddUserAction.java=========
package com.tseyimwah.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class PrepareAddUserAction extends Action {
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws HibernateException {
.........//相关方法
saveToken(request); //在下一个页面addUser.jsp生成hidden类型的token值
return mapping.findForward("addUser");//页面跳转
}
}
==========addUser.jsp=============
此处代码没有什么要求,含有form的普通struts页面,代码省略,里面的"提交"按纽给AddUserAction.java,即<html:form action="/AddUserAction.do" method="post">
============AddUserAction.java=====
package com.tseyimwah.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class AddUserAction extends Action {
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws HibernateException {
//判断token值,如果是重复提交跳转到错误页面则提示出错信息,否则执行相关的数据库操作
if (!isTokenValid(request)){
request.setAttribute(GlobalKeys.MESSAGE_ID, "不允许重复提交!");//设置出错信息
return (mapping.findForward("errorPage"));
} else
resetToken(request); //重新设置token值,可不用
}
......
......//其他的相关方法,如设置相关属性值,调用相关的数据库操作等
return (mapping.findForward("addUserSucess"));//新增用户成功的页面
}
这只是将相关的必要代码写出,根据需要可以改写相关的代码.
技术开发到天荒地老
2007-03-05
打赏
举报
回复
请求 发到表单所在页面需要预处理一下
========================================
我是这样的:PrepareAction(saveToken())===>regsiter.jsp===>RegAction(isValidToken();resetToken()).不知道你的预处理是不是这个意思啊?这样还是不行啊
interpb
2007-03-05
打赏
举报
回复
请求 发到表单所在页面需要预处理一下
技术开发到天荒地老
2007-03-05
打赏
举报
回复
的页面要有
html:form 才可以生成 hidden 值
================================
当然有啦,要不表单怎么提交啊
interpb
2007-03-05
打赏
举报
回复
你的页面要有
html:form 才可以生成 hidden 值
saiypm
2007-03-05
打赏
举报
回复
同步令牌就能解决
技术开发到天荒地老
2007-03-05
打赏
举报
回复
问题还没解决,希望高手提供成功案例一个。
uni-app 微信小程序 搜索关键字后 结果中的关键字变色
实现搜索关键字,搜索到的内容中把包含的此字变为蓝色。 3.JavaScript代码写法。步骤1、中布局引用的
方法
$options.filters.formatTitle。注意点:因为是运行到小程序里面。所以设置颜色的时候要使用 标签才能使颜色生效。实现方式如下:此方式是uniapp开发运行到微信小程序的代码。如图:想实现搜索关键字,搜索到的内容中把包含的此字变为蓝色。此fileters和methods
方法
平级。
uniapp(全端兼容 - 实现列表根据搜索的关键字标记高亮,搜索框中输入关键词搜索后,出现的列表里匹配关键词进行加粗高亮显示功能效果,搜索框搜索关键字列表内容标红(详细示例代码,一键复制开箱即用!)
uniapp小程序h5公众号网页安卓苹果ios系统手机app,uniapp小程序h5网页实现搜索引擎搜索关键字与文章一致时,字体变红的效果,uniapp网页h5小程序根据搜索词使得搜索结果中的关键词改变颜色,uniapp搜索结果与搜索关键字匹配的位置变色,uniapp安卓苹果h5网站小程序平台下将搜索出来的关键字标红,uniapp如何实现搜索结果高亮显示关键字,uni-app关键字搜索高亮标红,uniapp实现搜索关键词高亮的详细教程,如何实现列表按照关键字改变颜色高亮红色,uniapp中搜索关键词,使文本
uniapp [全端兼容] - 实现级联选择器带搜索框组件,多级联动选择器加入搜索功能并列出选择项与标红搜索关键字,uniApp让级联选择器带搜索示例源码(移动端H5网页、微信小程序、苹果安卓App)
uniapp带搜索框的级联选择器,uniapp 改写uni-data-picker级联选择器(带搜索)新增列出选择和删除功能,实现选择器可进行搜索,uniapp级联选择器搜索功能,给uniapp官网的级联选择器(uni-data-picker)uniapp实现带有搜索框的多级选择器组件,多级联动选择器有搜索并列出标红关键字,uniapp选择器,包含一级,二级级联,三级级联,四级联动,Uniapp多选级联选择器,怎么添加搜索功能,带有搜索功能选择器插件,uniapp实现多级选择器可进行搜索,添加搜索,UniA
uni-app 微信小程序搜索关键字标红显示
搜索关键字标红 修改字符串中部分字符的样式
uni-app 微信小程序 搜索关键字后结果变色
搜索关键字 在搜索结果中变色
Java EE
67,535
社区成员
225,852
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章