servlets的表单提交响应

简介: METHOD属性 METHOD属性是一个必须的属性,它指定Web浏览器将表单数据传送到服务器过程中所用的方法。在传送表单数据上有两种方法可供选择:POST和GET。 POST方法会使Web浏览器分两步传送数据。

METHOD属性


METHOD属性是一个必须的属性,它指定Web浏览器将表单数据传送到服务器过程中所用的方法。在传送表单数据上有两种方法可供选择:POST和GET。
POST方法会使Web浏览器分两步传送数据。浏览器首先尝试与在ACTION属性中指定的服务器进行连接,当连接完成,再将表单数据通过这个特定传输通道(separate transmission)传送给服务器。服务器要以标准方式读取表单的参数。
GET方法会使Web浏览器连接服务器并通过这个单一传输通道传送表单数据。浏览器将会把表单数据追加到ACTION所指定的URL之后(就像命令行参数一样)并用问号将URL与参数值分隔开。
你要用哪一种方法呢?这里有一个指定方针:
·如果表单只有少量的输入域,那么就使用GET方法。由于所有的数据都是通过单独传输方式发送的,这样也就可以得到很高的效率。
·由于一些服务器限制命令行参数的长度(这是GET方法的工作方式),对于很大的表单或是含有超长字符串值参数的表单,我们将只能选用POST方法。
·如果你很注重安全问题,那么就使用POST方法。由于GET方法把表单数据就像命令行参数一样加在URL后传送,因此通过网络探测器或是分析服务器的记录文件都可以很容易地获取所传数据的具体值。而对于POST方法来说,数据将通过特定传输通道传送。

 

传送附加参数
你可以把附加参数非常方便地通过ACTION属性所指定的统一资源地址传送出去。你只要对附加变量进行编码并把人他们按命令行参数的方式添加上去。让我们举个例子,如果你有两个参数名为“a”“b”,你可以按照“application/x-www-form-urlencoded”方法(参看表8.2)将这些参数编码如下:
a=3&b=24

 

下面是一个输入邮箱地址,年龄,姓名等提交单的输入界面

 

HTML代码:

<html>
<head>
<title>Customer Survey</title>
</head>
<body>
<h1><center>Customer Survey</center></h1>
<hr><br>

<form method=POST action="http://localhost:9090/examples/servlets/servlet/EchoSurvey">
<table border=0>
<tr>
 <td align=right>Name:</td>
 <td colspan=2 align=left><input type=text name=name size=40></td>
</tr>
<tr>
 <td align=right>Email Address:</td>
 <td colspan=2 align=left><input type=text name=email size=40></td>
</tr>
<tr valign=top>
 <td align=right>Age:</td>
 <td align=left>
  <input type=radio name=age value="<18">Less than 18<br>
  <input type=radio name=age value="18-25">18-25
 </td>
 <td align=left> 
  <input type=radio name=age value="26-40">26-40<br>
  <input type=radio name=age value=">40">Over 40
 </td>
</tr>
<tr valign=top> 
 <td align=right>Operation System:</td>
 <td align=left>
  <select name=os size=.5 multiple>
   <option>Win/95
   <option>NT
   <option>Solaris
   <option>HP-UX
   <option>Other
  </select> 
 </td> 
</tr> 

<tr>
 <td></td>
 <td><input type=checkbox name=more value="yes">
  Send me more information
 </td> 
</tr> 
<tr>
 <td align=right>Comments:</td>
 <td colspan=2 align=left>
 <textarea name=comments cols=40 rows=4>
 </textarea>
 </td> 
</tr> 
<tr>
 <td></td>
 <td>
  <input type=reset value="Clear Form">
  <input type=submit value="Submit">
 </td>
</tr>
</html>

 

提交的EchoSurvey.java代码为

  1 import javax.servlet.*;
  2 import javax.servlet.http.*;
  3 
  4 /**
  5 * <p>This is a simple servlet that will echo survey information
  6 * that was entered into an HTML form.
  7 */
  8 
  9 public class EchoSurvey extends HttpServlet
 10 {
 11     /**
 12     * <p>Performs the HTTP POST operation
 13     *
 14     * @param req The request from the client
 15     * @param resp The response from the servlet
 16     */
 17 
 18     public void doPost(HttpServletRequest req,
 19         HttpServletResponse resp) throws ServletException, java.io.IOException
 20     {
 21         // Set the content type of the response
 22         resp.setContentType("text/html");
 23 
 24         // Create a PrintWriter to write the response
 25         java.io.PrintWriter out =
 26         new java.io.PrintWriter(resp.getOutputStream());
 27 
 28         // Print a standard header
 29         out.println("<html>");
 30         out.println("<head>");
 31         out.println("<title>Survey Complete</title>");
 32         out.println("</head>");
 33         out.println("<body>");
 34         out.println("<h1><center>Your survey has been processed!");
 35         out.println("</center></h1><hr><br>");
 36         out.println("Values were:");
 37         out.println("<dir>");
 38 
 39         // Get the name
 40         String name = req.getParameter("name");
 41         out.println("Name=" + name + "<br>");
 42 
 43         // Get the email address
 44         String email = req.getParameter("email");
 45         out.println("Email=" + email + "<br>");
 46 
 47         // Get the age
 48         String age = req.getParameter("age");
 49         out.println("Age=" + age + "<br>");
 50 
 51         // Get the operating system. There could be more than one
 52         // value
 53         String values[] = req.getParameterValues("os");
 54         out.print("Operating Systems=");
 55         if (values != null) {
 56             for (int i = 0; i < values.length; i++) {
 57                 if (i > 0) out.print(", ");
 58                 out.print(values[i]);
 59         }
 60     }
 61     out.println("<br>");
 62 
 63     // Get the 'more information' flag
 64     String more = req.getParameter("more");
 65     out.println("More information=" + more + "<br>");
 66 
 67     // Get the comments
 68     String comments = req.getParameter("comments");
 69     out.println("Comments:<br>");
 70     out.println("<dir>");
 71 
 72     // Comment lines are separated by a carriage return/line feed
 73     // pair - convert them to an HTML line break <br>
 74     out.println(toHTML(comments));
 75     out.println("</dir>");
 76 
 77     out.println("</dir>");
 78 
 79     // Wrap up
 80     out.println("</body>");
 81     out.println("</html>");
 82     out.flush();
 83 }
 84 
 85 /**
 86 * <p>Initialize the servlet. This is called once when the
 87 * servlet is loaded. It is guaranteed to complete before any
 88 * requests are made to the servlet
 89 *
 90 * @param cfg Servlet configuration information
 91 */
 92 
 93 public void init(ServletConfig cfg) throws ServletException
 94 {
 95     super.init(cfg);
 96 }
 97 
 98 /**
 99 * <p>Destroy the servlet. This is called once when the servlet
100 * is unloaded.
101 */
102 
103 public void destroy()
104 {
105     super.destroy();
106 }
107 
108 /**
109 * <p>Convert any carriage return/line feed pairs into
110 * an HTML line break command (<br>)
111 *
112 * @param line Line to convert
113 * @return line converted line
114 */
115 private String toHTML(String line)
116 {
117     String s = "";
118 
119     if (line == null) {
120     return null;
121 }
122 
123 // Cache the length of the line
124 int lineLen = line.length();
125 
126 // Our current position in the source line
127 int curPos = 0;
128 
129 // Loop through the line and find all of the carriage
130 // return characters (0x0D). If found, convert it into
131 // an HTML line break command (<br>). If the following
132 // character is a line feed (0x0A) throw it away
133 while (true) {
134 
135     // Make sure we don't run off the end of the line
136     if (curPos >= lineLen) {
137         curPos = 0;
138         break;
139     }
140 
141     int index = line.indexOf(0x0D, curPos);
142 
143     // No more characters found
144     if (index == -1) {
145         break;
146     }
147 
148     // Add any data preceding the carriage return
149     if (index > curPos) {
150         s += line.substring(curPos, index);
151     }
152 
153     // Add the line break command
154     s += "<br>";
155 
156     // Adjust our position
157     curPos = index + 1;
158 
159     // If the next character is a line feed, skip it
160     if (curPos < lineLen) {
161         if (line.charAt(curPos) == 0x0A) {
162             curPos++;
163         }
164     }
165 }
166 
167 // Be sure to add anything after the last carriage return
168 // found
169     if (curPos > 0) {
170         s += line.substring(curPos);
171     }
172     return s;
173     }
174 }

输入完数据,单击submit按钮,显示的页面为:

 

相关文章
|
1月前
|
JSON 前端开发 数据库连接
AJAX响应状态
【10月更文挑战第29天】了解和正确处理各种AJAX响应状态码是开发高效、稳定的Web应用程序的重要环节。通过对不同状态码的判断和相应处理,可以为用户提供更好的交互体验,确保应用程序在各种情况下都能正确地响应用户的操作。
|
2月前
|
前端开发 JavaScript
回顾前端页面发送ajax请求方式
回顾前端页面发送ajax请求方式
39 18
|
7月前
|
XML 前端开发 JavaScript
AJAX如何向服务器发送请求?
AJAX如何向服务器发送请求?
107 0
|
前端开发 JavaScript
原生js发送ajax请求---ajax请求篇(一)
在原生js中我们使用的是XMLHttpRequest对象来发送ajax请求
235 0
|
前端开发 开发者
ajax 第二例:发送 POST 请求| 学习笔记
快速学习 ajax 第二例:发送 POST 请求。
444 0
ajax 第二例:发送 POST 请求| 学习笔记
|
XML 前端开发 JavaScript
详细解析Ajax的使用之向服务器发送GET请求
详细解析Ajax的使用之向服务器发送GET请求 上篇文章讲的如何使用Ajax发送get请求,这篇文章说如何使用Ajax发送post请求。 HTML代码: &lt;h1&gt;ajax的post请求&lt;/h1&gt; &lt;button id=&quot;btn&quot;&gt;发送请求&lt;/button&gt; 1 2 JavaScript代码: var oBtn = document.getElementById(&quot;btn&quot;); // 1.初始化请求对象 var xhr; if (window.XMLHttpRequest) { xhr = new XML
|
JSON 前端开发 JavaScript
详细解析Ajax的使用之向服务器发送GET请求
详细解析Ajax的使用之向服务器发送GET请求 前面一篇博客我们讲到了如何使用form表单像服务器发送请求,但是请求方式是同步的,效率太低,现在我们讲一下如何使用Ajax的技术向服务器发送异步请求。 HTML代码: &lt;h1&gt;ajax的get请求&lt;/h1&gt; &lt;button id=&quot;btn&quot;&gt;获取数据&lt;/button&gt; &lt;p&gt;姓名:&lt;span id=&quot;user&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;年龄:&lt;span id=&quot;age&quot;&gt;&lt;/span&gt;&lt;/p&gt; 1 2 3 4 JavaScript代码: var oBtn =
表单提交错误
当需要将表单提交的时候,附加的信息不应放在提交的跳转地址,而是应该使用隐藏域去附加信息
表单提交错误
ajax4-ajax获取服务器端的响应
ajax4-ajax获取服务器端的响应
88 0
ajax4-ajax获取服务器端的响应
|
JSON 前端开发 数据格式
Ajax服务端响应JSON数据
Ajax服务端响应JSON数据
119 0
Ajax服务端响应JSON数据