myformts.jsp.html
来自「java类库详细讲解」· HTML 代码 · 共 221 行
HTML
221 行
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>Implementing a Form That Prevents Duplicate Submissions in a JSP Page
(Java Developers Almanac Example)
</TITLE>
<META CONTENT="Patrick Chan" NAME="AUTHOR">
<META CONTENT="Code Examples from The Java Developers Almanac 1.4" NAME="DESCRIPTION">
<META CONTENT="Addison-Wesley/Patrick Chan" NAME="OWNER">
<META CONTENT="3/20/02" NAME="revision">
<STYLE TYPE="text/css">
<!-- BODY CODE {font-family: Courier, Monospace; font-size: 11pt} TABLE, BODY {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt} PRE {font-family: Courier, Monospace; font-size: 10pt} H3 {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11pt} A.eglink {text-decoration: none} A:hover.eglink {text-decoration: underline} -->
</STYLE>
</HEAD>
<BODY>
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD rowspan="3"><A HREF="/?l=ex"><IMG BORDER="0" ALIGN="BOTTOM" HSPACE="10" SRC="/egs/almanac14a.jpg"></A></TD><TD VALIGN="top"><font face="Times" size="6"><b>The Java Developers Almanac 1.4</b></font>
<br>
Order this book from <a href="/cgi-bin/scripts/redirect.pl?l=ex&url=http://www.amazon.com/exec/obidos/ASIN/0201752808/xeo">Amazon</a>.
</TD>
</TR>
<TR>
<TD align="right" valign="bottom">
<FORM method="get" action="/cgi-bin/search/find.pl">
<INPUT size="25" name="words" type="text"><INPUT value="Search" type="submit">
</FORM>
</TD>
</TR>
</TABLE>
<HR color="#6666cc">
<DIV ALIGN="LEFT">
<A HREF="/">Home</A>
>
<A HREF="../index.html">List of Packages</A>
>
<B><A HREF="../javax.servlet.jsp/pkg.html">javax.servlet.jsp</A></B><font color="#666666" SIZE="-2">
[18 examples]
</font>
>
<B><A HREF="../javax.servlet.jsp/pkg.html#Java%20Server%20Pages">Java Server Pages</A></B><font color="#666666" SIZE="-2">
[7 examples]
</font>
</DIV><P>
<h3>
e1049.
Implementing a Form That Prevents Duplicate Submissions in a JSP Page</h3>
After the user submits a form for processing, it is possible for the
user to inadvertently hit the back button and resubmit the form again.
<a href="../javax.servlet.jsp/myform.jsp.html" class="eglink"><font size="-1"><b>e1048</b> Implementing a Form in a JSP Page</font></a> implements such a form. It is
possible to prevent this possibility if necessary. The strategy
involves the use of a timestamp that is saved in the session as well
as embedded on the form. When the form is submitted for processing,
the timestamp in the form is compared to the value saved in the
session. If the timestamps do not match, it is assumed that either
the form has expired or has been submitted.
<P> This example builds on the one in
<a href="../javax.servlet.jsp/myform.jsp.html" class="eglink"><font size="-1"><b>e1048</b> Implementing a Form in a JSP Page</font></a>. Refer to that example for more
information about this example.
<pre>
<%-- Instantiate the form validation bean and supply the error message map --%>
<%@ page import="com.mycompany.*" %>
<jsp:useBean id="form" class="com.mycompany.MyForm" scope="request">
<jsp:setProperty name="form" property="errorMessages" value='<%= errorMap %>'/>
</jsp:useBean>
<%
// Ask the browser not to cache the page
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
// If process is true and a timestamp is present, attempt to validate and process the form
String timestamp = request.getParameter("timestamp");
if ("true".equals(request.getParameter("process")) && timestamp != null) {
// Check timestamp
if (!timestamp.equals(session.getAttribute("com.mycompany.MyForm.timestamp"))) {
response.sendRedirect(<font color="#0066ff"><i>"formAlreadyDone.jsp"</i></font>);
return;
}
%>
<jsp:setProperty name="form" property="*" />
<%
if (form.process()) {
// Save a new timestamp in the session
timestamp = ""+System.currentTimeMillis();
session.setAttribute("com.mycompany.MyForm.timestamp", timestamp);
// Go to success page
response.sendRedirect(<font color="#0066ff"><i>"formDone.jsp"</i></font>);
return;
}
} else {
timestamp = ""+System.currentTimeMillis();
session.setAttribute("com.mycompany.MyForm.timestamp", timestamp);
}
%>
<html>
<head><title>A Simple Form That Prevents Duplicate Submissions</title></head>
<body>
<%-- When submitting the form, resubmit to this page --%>
<form action='<%= request.getRequestURI() %>' method="POST">
<%-- email --%>
<font color=red><%= form.getErrorMessage("email") %></font><br>
Email: <input type="TEXT" name="email" value='<%= form.getEmail() %>'>
<br>
<%-- zipcode --%>
<font color=red><%= form.getErrorMessage("zipcode") %></font><br>
Zipcode: <input type="TEXT" name="zipcode" value='<%= form.getZipcode() %>'>
<br>
<input type="SUBMIT" value="OK">
<input type="HIDDEN" name="process" value="true">
<%-- Save the timestamp in the form --%>
<input type="HIDDEN" name="timestamp" value="<%= timestamp %>">
</form>
</body>
</html>
<%!
// Define error messages
java.util.Map errorMap = new java.util.HashMap();
public void jspInit() {
errorMap.put(MyForm.ERR_EMAIL_ENTER, "Please enter an email address");
errorMap.put(MyForm.ERR_EMAIL_INVALID, "The email address is not valid");
errorMap.put(MyForm.ERR_ZIPCODE_ENTER, "Please enter a zipcode");
errorMap.put(MyForm.ERR_ZIPCODE_INVALID, "The zipcode must be 5 digits");
errorMap.put(MyForm.ERR_ZIPCODE_NUM_ONLY, "The zipcode must contain only digits");
}
%>
</pre>
<P><table width="600" CELLSPACING="0" CELLPADDING="2" BORDER="0">
<tr>
<td bgcolor="#6666cc" align="center"><font color="#ffffff">
Related Examples
</font></td>
</tr>
</table>
e1045. <a class="eglink" href="basic.html?l=rel">
The Quintessential JSP Page
</a>
<br>
e1046. <a class="eglink" href="code.html?l=rel">
Running Java Code in a JSP Page
</a>
<br>
e1047. <a class="eglink" href="attr.html?l=rel">
Saving Data in a JSP Page
</a>
<br>
e1048. <a class="eglink" href="myform.jsp.html?l=rel">
Implementing a Form in a JSP Page
</a>
<br>
e1050. <a class="eglink" href="precompile.html?l=rel">
Precompiling a JSP Page
</a>
<br>
e1051. <a class="eglink" href="nosession.html?l=rel">
Preventing the Creation of a Session in a JSP Page
</a>
<br>
<table width="600" CELLSPACING="0" CELLPADDING="2" BORDER="0">
<tr>
<td align="left">
<br>
See also:
<a class="eglink" href="/egs/javax.servlet.jsp/pkg.html?l=rel#Java%20Server%20Pages%20Headers">
Java Server Pages Headers
</a>
<a class="eglink" href="/egs/javax.servlet.jsp/pkg.html?l=rel#Java%20Server%20Pages%20Input">
Java Server Pages Input
</a>
<a class="eglink" href="/egs/javax.servlet.jsp/pkg.html?l=rel#Java%20Server%20Pages%20Output">
Java Server Pages Output
</a>
</td>
</tr>
</table>
<br>
<br>
<FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="0">
© 2002 Addison-Wesley.
</FONT>
</BODY>
</HTML>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?