jsp页面:
<%@ page contentType="text/html;charset=gbk"%>
<%@ page language="java" %>
<%@ page import="java.util.*"%>
<%
response.setHeader("Cache-Control", "no-cache");
String username="";//session.getAttribute("username")==null?"":(String)session.getAttribute("username");
%>
<%
Random rand = new Random();
Integer flag =new Integer(rand.nextInt());
String str_flag = flag.toString();
session.setAttribute("flag",str_flag);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>test</title>
</head>
<body>
<table>
<form id="form1" action="usercheck.test" name="form1">
<tr>
<td width="25%" height="25" align="right">帐户:</td>
<td>
<input type=hidden name="flag" value="<%=str_flag%>"/>
<input name="username" type="text" class="text" id="account" value="<%=username %>" maxlength="10"/>
<span id="account_span"></span>
</td>
<td height="25" colspan="2">
<input id="jccf" style="margin-left:300px" type="button" name="Submit" onclick="checkusername();" value="提交"/>
</td>
</tr>
<tr>
<td>第四行赋的值是:</td>
<td><script>document.write(document.form1.flag.value)</script></td>
</tr>
</table>
</form>
<script script="javascript">
function checkusername()
{
form1.submit();
}
document.getElementById('username').focus();
</script>
</body>
</head>
Java:
package cn;
import java.io.*;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.*;
import cn.hello;
public class completeservlet extends HttpServlet{
hello h = new hello();
String session = "";
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
PrintWriter out= response.getWriter();
String returninfo ="";
String returnselectinfo = "";
String username = "";
username = request.getParameter("username").toString().trim();
Integer flag1 = new Integer(Integer.parseInt(request.getParameter("flag")));
String l_strflag1 = flag1.toString();
if(l_strflag1.equals(session.getAttribute("flag")))
{
returninfo =h.test(username);
returnselectinfo = h.SelectTest(username);
out.println("test is starting.....");
out.println("<P>");
out.println(returninfo);
out.println("<P>");
out.println(returnselectinfo);
out.println("<P>");
out.println("username:" + username);
session.removeAttribute("flag");
}
else
{
out.println("Don't submit repeatly.");
out.println(session.getAttribute("flag"));
out.println(flag1.toString());
session.removeAttribute("flag");
}
}
}
分享到:
相关推荐
本篇文章将探讨如何有效地防止JSP页面中的表单重复提交,确保系统的稳定性和数据的准确性。 一、理解表单重复提交的问题 当用户点击提交按钮后,由于网络延迟或浏览器刷新等原因,可能导致同一份表单数据多次发送...
在Web应用程序开发中,尤其是在使用Java Server Pages (JSP)技术时,一个常见的问题是重复提交数据。当用户不小心刷新了页面或按下了浏览器的“后退”按钮时,可能会导致同一份数据被提交多次,从而对数据库造成不必...
### Struts Token机制防止页面刷新及重复提交 在Web应用开发过程中,特别是在使用MVC框架如Apache Struts进行开发时,防止表单重复提交是一个重要的安全措施。表单重复提交通常发生在用户点击“提交”按钮后,由于...
以下是一些防止JSP网页刷新重复提交数据的方法: 1. 提交后禁用提交按钮:这是一种常见的做法,即在用户点击提交按钮后,通过JavaScript禁用该按钮,使其不可再点击。例如,可以在HTML表单中添加`onclick`事件,...
通过这种方法,我们可以有效地防止因页面刷新导致的表单重复提交问题。需要注意的是,这种方法依赖于HTTP会话(session),服务器需要有开启会话跟踪(session tracking)的支持,并且标识符的生成需要考虑线程安全...
在Web开发中,一个常见的问题就是防止用户意外或恶意地重复提交表单,这可能导致数据的不一致性和服务器负载的增加。Struts2提供了一种称为“令牌”或“Token Session”的机制来解决这个问题。 令牌机制的工作原理...
**问题2:JSP页面刷新导致的重复数据添加** 使用Redirect Action Result可以有效地防止因用户刷新页面而导致的重复数据添加。在Struts1中,可以使用类似Struts2的做法,即在Action中返回一个重定向的Action Forward...
Struts2作为一个流行的Java Web框架,为解决表单重复提交提供了多种方法。 首先,关于表单重复提交的原因,有以下几点: 1. 服务器或网络延迟导致用户多次点击提交按钮。 2. 用户在表单提交后刷新浏览器页面。 ...
- **页面重定向**:表单提交成功后,立即重定向到一个新的页面,避免用户因页面刷新而重复提交。 总的来说,处理JSP表单重复提交的方法多种多样,开发者应根据实际项目需求和环境选择最适合的方案。理解这些机制并...
防止表单重复提交的方法通常有两种:客户端解决方案和服务器端解决方案。 1. 客户端解决方案: - JavaScript禁用提交按钮:在提交表单时,可以通过JavaScript立即禁用提交按钮,避免用户连续点击。 - 使用Ajax...
在Web开发中,处理用户提交的数据时,防止重复提交是一个常见的需求,特别是对于那些可能会改变系统状态的操作,如添加、删除或修改数据。Struts2提供了一种名为“token”的机制来解决这个问题。 **什么是Token机制...
7. 使用重定向解决页面刷新带来的数据重复提交的问题。在 Struts 的 action 中使用 redirect 属性,修改 Struts-config.xml 文件,添加 redirect 属性,设置为 true。 ...
Struts Token机制是一种防止表单重复提交的有效策略,尤其在处理关键操作时,如金融交易或数据修改,防止用户意外或恶意多次点击提交按钮导致的数据重复性问题。下面将详细介绍Struts Token的工作原理、实现方式及其...
总结起来,防止表单重复提交的方法包括JavaScript控制、PRG模式以及令牌机制。JavaScript方法简单易行,但局限性较大;PRG模式适用于防止刷新导致的重复提交,但不适用于后退操作;令牌机制则更为全面,可以覆盖所有...
持久化存储确保了当页面刷新时,不会重新初始化计数器的值。 2. **HTTP无状态性**:HTTP协议本身是无状态的,这意味着服务器不会记住客户端的任何信息。因此,我们需要一个机制来跟踪每个用户的访问,例如使用...
例如,在用户提交表单后,由于网络延迟或其他原因导致用户多次点击提交按钮或浏览器缓存导致页面刷新时,可能会出现数据的重复提交。这不仅会导致数据库数据不一致的问题,还可能引发业务逻辑错误,如订单重复等。...
表单重复提交可能发生在用户点击提交按钮后,由于网络延迟或刷新页面等原因,导致请求被多次发送到服务器。如果不加以控制,可能会导致同一份数据被处理多次,从而对数据库造成不必要的影响。 二、Token机制的原理 ...
在本文中,我们将深入探讨如何通过XML配置来解决Struts中的重复提交问题。 首先,理解重复提交的原因。在Web应用中,用户点击提交按钮后,如果网络延迟或刷新页面,同一个请求可能被发送多次。Struts框架默认情况下...