我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

java表单重复提交代码,前端表单重复提交

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

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

成都创新互联公司是专业的龙文网站建设公司,龙文接单;提供做网站、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行龙文网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

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中怎么防止页面重复提交

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 struts2 表单重复提交的问题NullPointerException

是username没有拿到值。文件框你还是用struts2自带的标签的文本框,再尝试下。

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表单重复提交代码,前端表单重复提交
链接分享:http://mswzjz.cn/article/dsighhc.html

其他资讯