Struts2 防止表单重复提交笔记
下面我们来看一个例子
<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy7241')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy7241>public class HelloServlet extends HttpServlet {
private int i = 0;
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String userName = req.getParameter("name");
String password = req.getParameter("password");
int count = 0;
for (int i = 0; i < 1000; i ) {
count ;
}
resp.getWriter().println(
i ": hello" userName " your password is " password);
i ;
}
}
input.jsp
<body>
<form action="Hello"method="post">
<input type="text"name="name"><br>
<input type="text"name="password"><br>
<input type="submit"value="submit">
</form>
</body>
测试(提交后刷新页面):
我们看到,在提交之后,刷新页面,同样会触发服务端的操作!
session方式防止重复提交
<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy6602')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy6602>InputServlet.java
public class InputServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String token = String.valueOf(System.currentTimeMillis());
req.setAttribute("token",token);
req.getSession().setAttribute("token",token);
RequestDispatcher rd = req.getRequestDispatcher("/input.jsp");
rd.forward(req,resp);
}
}
HelloServlet.java
public class HelloServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String reqToken = req.getParameter("token");
String sessionToken = (String) req.getSession().getAttribute("token");
if (reqToken == null || !reqToken.equals(sessionToken)) {
resp.getWriter().println("repeat submit");
return;
}
//删除session中的token
req.getSession().removeAttribute("token");
String userName = req.getParameter("name");
String password = req.getParameter("password");
int count = 0;
for (int i = 0; i < 1000; i ) {
count ;
}
resp.getWriter().println(
": hello" userName " your password is " password);
}
}
input.jsp
<body>
<form action="Hello"method="post">
<input type="text" name="name">
<br>
<input type="text" name="password">
<br>
<input type="hidden" name="token"
value=<%=request.getAttribute("token")%>/>
<br />
<input type="submit" value="submit">
</form>
</body>
测试(访问InputServlet):
您可能感兴趣的文章:
Struts2 防止表单重复提交笔记
struts2之防止表单重复提交
php防止表单重复提交的小例子
php token防止表单重复提交的实例代码
js实现防止表单重复提交的代码
Asp.net防刷新重复提交与防后退的方法
jquery 防止表单重复提交代码
asp.net防止后退与重复提交表单的简单方法
Struts2处理结果的学习笔记
php防止用户刷新 重复提交的方法