jsp + struts 怎么防止重复提交啊

renanxing 2009-03-20 01:28:17
各位大哥,我现在用的是jsp+hibernate+struts+spring技术,做一 网站,不知道怎么防止重复提交,请各位大哥帮个忙,给个方法!谢谢啊
...全文
189 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaowu_wings 2009-03-20
  • 打赏
  • 举报
回复
令牌机制,代码在楼上
liang__ 2009-03-20
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 renanxing 的回复:]
OUYANGKANG 大哥,怎么在struts-config里配置token check啊,在页面和action里还得控制么?
[/Quote]

google一下多好啊。
djjchobits 2009-03-20
  • 打赏
  • 举报
回复
建一个Insert.jsp页面代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html:html locale="true">
<head>
<html:base />
<title>insert.jsp</title>
</head>
<body>
<html:form action="insert" method="post">
<bean:message key="label.name"/><html:text property="name" />
<bean:message key="label.phone"/><html:text property="phone"/>
<bean:message key="label.address"/><html:text property="address"/>
<html:submit ><bean:message key="modify.add"/></html:submit>
<html:reset><bean:message key="button.reset"/></html:reset>
</html:form>
<html:errors/>
</body>
</html:html>
建一个InsertAction代码如下:
//Created by MyEclipse Struts
// XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_4.1.1/xslt/JavaClass.xsl

package com.yourcompany.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.yourcompany.bean.ListBean;
import com.yourcompany.struts.form.ModifyForm;

/**
* MyEclipse Struts
* Creation date: 02-20-2007
*
* XDoclet definition:
* @struts.action validate="true"
*/
public class InsertAction extends Action {
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
ModifyForm modifyForm = (ModifyForm) form;
//得到token
String token_request =request.getParameter("org.apache.struts.taglib.html.TOKEN");
//打出来看看是什么东东
System.out.println("token in request is:"+ token_request);
ActionErrors errors = new ActionErrors();
//判断token是否有效,如果为假证明有重复提交,声明一个错误信息,并反馈出来
if(!isTokenValid(request)){
errors.add("insettoken",new ActionError("error.invalid.token"));

saveErrors(request, errors);
saveToken(request);
return (new ActionForward(mapping.getInput()));
}
//当用户首次提交时返!isTokenValid()返回true
else{
resetToken(request);
}
int result=new ListBean().add(modifyForm);

if(result==1){
return mapping.findForward("addlist");
}else{
return mapping.findForward("error");
}
}

}
建一个PrepareInsertAction代码如下:
package com.yourcompany.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;

/**
* MyEclipse Struts
* Creation date: 02-20-2007
*
* XDoclet definition:
* @struts.action validate="true"
*/
public class PrepareInsertAction extends Action {
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
System.out.print("hello PrepareInsertAction");
//创建一个新的令牌
saveToken(request);
return mapping.findForward("inserttoken");
}
}
renanxing 2009-03-20
  • 打赏
  • 举报
回复
OUYANGKANG 大哥,怎么在struts-config里配置token check啊,在页面和action里还得控制么?
sun403 2009-03-20
  • 打赏
  • 举报
回复
jsp页面做一个验证码,要不就用session控制页面显示
suncheng_hong 2009-03-20
  • 打赏
  • 举报
回复
很简单啊。每当save之后重定向redirect到另一个页面就可以了。这样再刷新也没有用的。
当然用struts的token也可以。
ouyangxiaokang6 2009-03-20
  • 打赏
  • 举报
回复
在你的struts-config.xml里面配置token check,专门防止二次提交的
yinyuehan823 2009-03-20
  • 打赏
  • 举报
回复
token
fireelf000 2009-03-20
  • 打赏
  • 举报
回复
struts本身提供的防止重复提交的方法
saveToken和isTokenValid这两个方法
lzt2008 2009-03-20
  • 打赏
  • 举报
回复
传参数,你可以将第一次的值传为:save
以后传为:update
dragon_fire 2009-03-20
  • 打赏
  • 举报
回复
验证码 或是利用struts的token 拦截器
mysky191_chi 2009-03-20
  • 打赏
  • 举报
回复
前台设置button的状态,enable/disable,通过JS转换状态
zqmlf2000 2009-03-20
  • 打赏
  • 举报
回复
token
sunhuaiwei 2009-03-20
  • 打赏
  • 举报
回复
每做完一个按钮提交的程序后,你可以重新定向一次,这样按钮不会重复提交,也可以做个判断,进行出来
三月暖阳 2009-03-20
  • 打赏
  • 举报
回复
用前台的js验证吧
zhaokaide 2009-03-20
  • 打赏
  • 举报
回复
可以用struts 的saveToken 来做
也可以在页面上提交的时候用js来控制按狃的使用
qqqqqwwqqq 2009-03-20
  • 打赏
  • 举报
回复
1.做个验证码

2.定义一个变量a在session里 登陆成功的时候 定义a并设置为1 重复提交的时候 查询a 如果a为1 则返回false 否则就可以登录
内容概要:本文针对无刷直流电机驱动的电子机械制动(EMB)执行器,建立了考虑Stribeck摩擦特性的非线性耦合动力学模型,并在Simulink环境中完成了系统级仿真分析。研究综合集成了电机动力学、齿轮传动机构与制动执行机构的动力学特性,构建了高保真的机电一体化系统模型。重点引入Stribeck摩擦模型以精确描述低速工况下执行器内部存在的静摩擦、粘滞摩擦与库仑摩擦之间的过渡行为,有效提升了系统在启停、反向运动等瞬态过程中的动态响应仿真精度。通过多工况仿真验证了模型的有效性,能够准确反映摩擦引起的爬行、滞后与定位误差等非线性现象,为EMB系统的高性能控制算法设计(如摩擦补偿、滑模控制)与结构优化提供了高可信度的仿真平台。; 适合人群:从事汽车电子制动系统、电机驱动控制、机电系统建模与仿真研究的研究生、科研人员及工程技术人员,需具备扎实的机械动力学、自动控制理论基础和MATLAB/Simulink仿真能力。; 使用场景及目标:①用于高精度电子机械制动系统的设计验证与性能预测;②为消除摩擦非线性影响的先进控制策略(如自适应控制、智能控制)提供精确的被控对象模型;③深入探究Stribeck摩擦等非线性因素对系统动态性能(如响应延迟、稳态误差)的作用机理; 阅读建议:读者应结合提供的Simulink模型文件,深入剖析Stribeck摩擦模块的数学实现与参数辨识方法,建议通过改变输入指令(如阶跃、正弦)和负载条件进行对比仿真,以直观理解非线性摩擦对系统动态特性的影响。

81,111

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧