「java防止数据重复提交」java如何防止重复提交

博主:adminadmin 2022-12-27 10:03:14 59

今天给各位分享java防止数据重复提交的知识,其中也会对java如何防止重复提交进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

在java jsp中怎么处理用户多次点击提交按钮造成数据重复

java jsp处理用户多次点击提交按钮造成数据重复,最常见的方法是点击按钮提交之后,让线程休眠几秒再执行,如下代码:

1.提交的表单页面

%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%

!DOCTYPE HTML

html

  head

    titleForm表单/title

  /head

  

  body

      form action="${pageContext.request.contextPath}/servlet/DoFormServlet" method="post"

        用户名:input type="text" name="username"

        input type="submit" value="提交" id="submit"

    /form

  /body

/html

2.处理提交表单的servlet,里面有提供防止重复提交的代码,如下:

package xdp.gacl.session;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class DoFormServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        //客户端是以UTF-8编码传输数据到服务器端的,所以需要设置服务器端以UTF-8的编码进行接收,否则对于中文数据就会产生乱码

        request.setCharacterEncoding("UTF-8");

        String userName = request.getParameter("username");

        try {

            //让当前的线程睡眠3秒钟,模拟网络延迟而导致表单重复提交的现象

            Thread.sleep(3*1000);

        } catch (InterruptedException e) {

            e.printStackTrace();

        }

        System.out.println("向数据库中插入数据:"+userName);

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        doGet(request, response);

    }

}

java里边防止重复提交的token机制不太会搞,使用token需要什么工具吗?急等

1.在Struts中,如何实现防止表单的重复提交操作?

Struts的Token(令牌)机制能够很好的解决表单重复提交的问题,

基本原理是:

 

1) 服务器端在处理请求到达之前,会将 请求 中包含的令牌值与保存在当前 用户会话 中的令牌值进行比较,看是否匹配。

2) 在处理完该请求后,且在答复客户端之前,会产生一个新的令牌值,该令牌值除传给客户端以外,也会将 用户会话 中保存的旧的令牌值进行替换。

3) 这样如果用户回退到刚才的提交页面并再次提交的话,客户端传过来的令牌值就和服务器端的令牌值不一致,从而有效地防止了重复提交的发生。

 

2.Struts使用Token机制,来防止恶意的破坏和重复提交问题,也就是点击后退后在再提交,这是Struts无法发现的

 

 

3.在form中生成一个token码,在session中也保存有一个同样的token码,

当表单提交后,判断两个token码相等后,就会改变session中的这个token码,

当然在用回退后,form的token码是不会变的,在提交,还会判断两个token码是否相等,如果不等就会抛出异常,证明这是过时的垃圾数据。

作用:Token机制可以解决表单的重复提交;

产生token的两种方式: 

1. form表单的post请求,使用隐藏域input type="hidden" name="token" value="${token}";

2. 直接使用超级链接html:link action="" trasantion="true",可以直接在链接后面添加token值。

java中怎么有效避免刷新重复提交问题

令牌模式,提交的时候产生一个随机码,相同的随机码提交的时候提示不能重复提交

java后台接口 怎么防止重复提交

防止重复提交的方法很多,例如:

1、Meta法

在你的表单页里HEAD区加入这段代码:

META HTTP-EQUIV="pragma" CONTENT="no-cache"

META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate"

META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"

2、令牌法

生成一个令牌保存在用户session中,在form中加一个hidden域,显示该令牌的值,form提交后重新生成一个新的令牌,将用户提交的令牌和session中的令牌比较,如不同则为重复提交。

3、禁用按钮法

input type="button" value="提交" onclick="this.disabled=true;this.form.submit()"

4、struts配置法

修改struts-config.xml文件,在action里面有一个redirect重新定向的属性,struts中默认的是false,添加这个属性,改成true,在forword中写上要跳转页面的绝对或者相对地址就行了

修改如下:

action-mappings

action attribute="newsActionForm" name="newsActionForm" input="/addnews.jsp" path="/newsAction" parameter="method" scope="request" type="com.yongtree.news.action.NewsAction"

forward name="list" path="/listnews.jsp" redirect="true"/forward

forward name="error" path="/addnews.jsp"/forward

/action

/action-mappings

java如何防止重复提交

你说的应该是页面的提交数据,你可以把取到的数据存到cookie里,因为他的作用范围是一次会话,当response做出响应他就失效了。

在java中怎么防止页面重复提交

1.新建两个文件

index.jsp -- 表单页面

success.jsp -- 结果提示页面

2

2.代码分别如下:

3

3.新建TokenServlet,代码如下

4

4.运行index.jsp,输入用户名,点击提交

5

5.正常跳转结果页面

6

6.但当我在这个页面点击刷新的时候,出现如下提示

7

7.点击重试,发现又一次调用了servlet,这就是一个重复提交

8

8.多刷新几次,注意看URL地址,现在仍然是servlet

9

9.以前说重定向可以解决表单重复提交的问题,我们修改Servlet代码如下

10.再次测试,发现重定向到了success.jsp ,再点击刷新的话也不会出现重复提交了

11.那问题解决了么?再看,当我点击浏览器中的返回,然后再点击提交,如此反复,仍然在重复调用Servlet,这也是重复提交

12.现在修改Index.jsp

13.修改servlet代码

14.新建token文件,代码如下

15.在浏览器中测试(注,这里如果再使用Eclipse自带浏览器的话,会出现缓存问题,所以使用正常的浏览器火狐或者IE)

16.hidden中的token 和session中的token是相同的

17.当点击浏览器中的后退按钮,再次进行操作,发现不能重复提交

18.这是因为session中的token已经被移除掉了

19.而返回后刷新页面,相当于新开一个index.jsp 重新获取token 赋值给session,这时可以正常提交了

java防止数据重复提交的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java如何防止重复提交、java防止数据重复提交的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-27,除非注明,否则均为首码项目网原创文章,转载请注明出处。