⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myformts.jsp.htm

📁 这个压缩包里的都是超级经典的java例子
💻 HTM
字号:
<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">
<META CONTENT="no-cache" HTTP-EQUIV="Pragma">
<LINK href="/almanac.css" media="screen" type="text/css" rel="stylesheet">
</HEAD>
<BODY>
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD></TD>
</TR>
</TABLE>
<br>
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD></TD>
</TR>
<TR>
<TD rowspan="3"><A HREF="/?l=ex"><IMG BORDER="0" ALIGN="BOTTOM" HSPACE="10" SRC="/egs/almanac14a.jpg"></A></TD><TD VALIGN="top">
<h1>The Java Developers Almanac 1.4</h1>
<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">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD valign="top"><script type="text/javascript">
<!--
google_ad_client = "pub-6001183370374757";
google_ad_width = 120;
google_ad_height = 600;
google_ad_format = "120x600_as";
google_ad_channel = "4777242811";
google_ad_type = "text_image";
google_color_border = "FFFFFF";
google_color_bg = "FFFFFF";
google_color_link = "6666CC";
google_color_url = "6666CC";
google_color_text = "000000";
//--></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script></TD><TD>&nbsp;&nbsp;&nbsp;</TD><TD valign="top">
<DIV ALIGN="LEFT">
<A HREF="/">Home</A>
    &gt;
    <A HREF="../index.html">List of Packages</A>
    &gt;

    
    <A HREF="../javax.servlet.jsp/pkg.html">javax.servlet.jsp</A><font color="#666666" class="xsmall-font">
        &nbsp;[18 examples]
    </font>
        &gt;
        <B><A HREF="../javax.servlet.jsp/pkg.html#Java Server Pages">Java Server Pages</A></B><font color="#666666" class="xsmall-font">
            &nbsp;[7 examples]
            </font>
</DIV><P>
  <h3>e1050. 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"><b>e1049</b> Implementing a Form in a JSP Page</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"><b>e1049</b> Implementing a Form in a JSP Page</a>. Refer to that example for more
information about this example.


<pre>    &lt;%-- Instantiate the form validation bean and supply the error message map --%&gt;
    &lt;%@ page import="com.mycompany.*" %&gt;
    &lt;jsp:useBean id="form" class="com.mycompany.MyForm" scope="request"&gt;
        &lt;jsp:setProperty name="form" property="errorMessages" value='&lt;%= errorMap %&gt;'/&gt;
    &lt;/jsp:useBean&gt;
    
    &lt;%
        // 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")) &amp;&amp; timestamp != null) {
            // Check timestamp
            if (!timestamp.equals(session.getAttribute("com.mycompany.MyForm.timestamp"))) {
                response.sendRedirect(<font color="#0066ff"><i>"formAlreadyDone.jsp"</i></font>);
                return;
            }
    %&gt;
            &lt;jsp:setProperty name="form" property="*" /&gt;
    &lt;%
            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);
        }
    %&gt;
    
    &lt;html&gt;
    &lt;head&gt;&lt;title&gt;A Simple Form That Prevents Duplicate Submissions&lt;/title&gt;&lt;/head&gt;
    &lt;body&gt;
    
    &lt;%-- When submitting the form, resubmit to this page --%&gt;
    &lt;form action='&lt;%= request.getRequestURI() %&gt;' method="POST"&gt;
        &lt;%-- email --%&gt;
        &lt;font color=red&gt;&lt;%= form.getErrorMessage("email") %&gt;&lt;/font&gt;&lt;br&gt;
        Email: &lt;input type="TEXT" name="email" value='&lt;%= form.getEmail() %&gt;'&gt;
        &lt;br&gt;
    
        &lt;%-- zipcode --%&gt;
        &lt;font color=red&gt;&lt;%= form.getErrorMessage("zipcode") %&gt;&lt;/font&gt;&lt;br&gt;
        Zipcode: &lt;input type="TEXT" name="zipcode" value='&lt;%= form.getZipcode() %&gt;'&gt;
        &lt;br&gt;
    
        &lt;input type="SUBMIT" value="OK"&gt;
        &lt;input type="HIDDEN" name="process" value="true"&gt;
    
        &lt;%-- Save the timestamp in the form --%&gt;
        &lt;input type="HIDDEN" name="timestamp" value="&lt;%= timestamp %&gt;"&gt;
    &lt;/form&gt;
    
    &lt;/body&gt;
    &lt;/html&gt;
    &lt;%!
        // 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");
        }
    %&gt;
</pre>
<P><table width="600" CELLSPACING="0" CELLPADDING="2" BORDER="0">
<tr>
<td bgcolor="#6666cc" align="center"><font color="#ffffff">
            &nbsp;<b>Related Examples</b></font></td>
</tr>
</table>


e1046. <a class="eglink" href="basic.html?l=rel">
    The Quintessential JSP Page
</a>
<br>

e1047. <a class="eglink" href="code.html?l=rel">
    Running Java Code in a JSP Page
</a>
<br>

e1048. <a class="eglink" href="attr.html?l=rel">
    Saving Data in a JSP Page
</a>
<br>

e1049. <a class="eglink" href="myform.jsp.html?l=rel">
    Implementing a Form in a JSP Page
</a>
<br>

e1051. <a class="eglink" href="precompile.html?l=rel">
    Precompiling a JSP Page
</a>
<br>

e1052. <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>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.servlet.jsp/pkg.html?l=rel#Java%20Server%20Pages%20Input">
    Java Server Pages Input
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.servlet.jsp/pkg.html?l=rel#Java%20Server%20Pages%20Output">
    Java Server Pages Output
</a>&nbsp;&nbsp;

</td>
</tr>
</table>

<br>

<br>
<FONT class="xsmall-font">
&copy; 2002 Addison-Wesley.
</FONT></TD><TD>&nbsp;&nbsp;&nbsp;</TD><TD valign="top"><A href="http://compositesw.com/devzone?ref=javaalmanac"><IMG alt="Click Here" height="600" width="120" border="0" src="/csw_oad_120x600_final.gif"></A></TD>
</TR>
</TABLE>
</BODY>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<META CONTENT="NO-CACHE" HTTP-EQUIV="PRAGMA">
</HEAD>
</HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -