Serlet表單
Servlet 表單資料
由 sf0501 建立,youj 最後一次修改 2016-08-26 19:20:23
Servlet 表單資料
很多情況下,需要傳遞一些資訊,從瀏覽器到 Web 伺服器,最終到後臺程式。瀏覽器使用兩種方法可將這些資訊傳遞到 Web 伺服器,分別為 GET 方法和 POST 方法。
GET 方法
GET 方法向頁面請求傳送已編碼的使用者資訊。頁面和已編碼的資訊中間用 ? 字元分隔,如下所示:
http://www.test.com/hello?key1=value1&key2=value2
GET 方法是預設的從瀏覽器向 Web 伺服器傳遞資訊的方法,它會產生一個很長的字串,出現在瀏覽器的位址列中。如果您要向伺服器傳遞的是密碼或其他的敏感資訊,請不要使用 GET 方法。GET 方法有大小限制:請求字串中最多隻能有 1024 個字元。
這些資訊使用 QUERY_STRING 頭傳遞,並可以通過 QUERY_STRING 環境變數訪問,Servlet 使用 doGet() 方法處理這種型別的請求。
POST 方法
另一個向後臺程式傳遞資訊的比較可靠的方法是 POST 方法。POST 方法打包資訊的方式與 GET 方法基本相同,但是 POST 方法不是把資訊作為 URL 中 ? 字元後的文字字串進行傳送,而是把這些資訊作為一個單獨的訊息。訊息以標準輸出的形式傳到後臺程式,您可以解析和使用這些標準輸出。Servlet 使用 doPost() 方法處理這種型別的請求。
使用 Servlet 讀取表單資料
Servlet 處理表單資料,這些資料會根據不同的情況使用不同的方法自動解析:
- getParameter():您可以呼叫 request.getParameter() 方法來獲取表單引數的值。
- getParameterValues():如果引數出現一次以上,則呼叫該方法,並返回多個值,例如複選框。
- getParameterNames():如果您想要得到當前請求中的所有引數的完整列表,則呼叫該方法。
使用 URL 的 GET 方法例項
下面是一個簡單的 URL,將使用 GET 方法向 HelloForm 程式傳遞兩個值。
下面是處理 Web 瀏覽器輸入的 Hello.java Servlet 程式。我們將使用 getParameter() 方法,可以很容易地訪問傳遞的資訊:
/**
* Servlet表單資料
* GET 方法向頁面請求傳送已編碼的使用者資訊。頁面和已編碼的資訊中間用 ? 字元分隔,如下所示:
http://www.test.com/hello?key1=value1&key2=value2
POST 方法
另一個向後臺程式傳遞資訊的比較可靠的方法是 POST 方法。POST 方法打包資訊的方式與 GET 方法基本相同,但是 POST 方法不是把資訊作為 URL 中 ? 字元後的文字字串進行傳送,而是把這些資訊作為一個單獨的訊息。訊息以標準輸出的形式傳到後臺程式,您可以解析和使用這些標準輸出。
*使用 Servlet 讀取表單資料
Servlet 處理表單資料,這些資料會根據不同的情況使用不同的方法自動解析:
getParameter():您可以呼叫 request.getParameter() 方法來獲取表單引數的值。
getParameterValues():如果引數出現一次以上,則呼叫該方法,並返回多個值,例如複選框。
getParameterNames():如果您想要得到當前請求中的所有引數的完整列表,則呼叫該方法。
*
*/
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Hello
*/
@WebServlet("/Hello")
/*使用URL的GET方法例項*/
public class Hello extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* Default constructor.
*/
public Hello() {
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
/*
* response.setCharacterEncoding()
web Server相應瀏覽器的請求資料
setContentType:response.setContentType()
web Server相應瀏覽器的輸出資料
*/
response.setContentType("text/html charset=GBK");
//設定字元編碼
String title="使用GET方法讀取表單資料";
response.setCharacterEncoding("GBK");
PrintWriter writer=response.getWriter();
String docType="<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
writer.println(docType+
"<html>\n"
+ "<head><title>"+title+"</title></head>\n"
+ "<body bgcolor=\"f0f0f0\">\n"
+ "<h1 align=\"center\">"+title+"</h1>\n"
+ "<ul>\n"+"<li><b>名字</b>:"+
request.getParameter("first_name")+"\n"
+ "<ul>\n"+"<li><b>姓氏</b>:"+
request.getParameter("last_name")+"\n"+
"</ul>\n"+"</body></html>");
}
}
使用表單的 GET 方法例項
下面是一個簡單的例項,使用 HTML 表單和提交按鈕傳遞兩個值。我們將使用相同的 Servlet Hello 來處理輸入。
包含兩個輸入框的HTML:
hello.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="Hello" method="get">
姓:<input type="text" name="first_name"><br>
名:<input type="text" name="last_name"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
使用表單的 POST 方法例項
讓我們對上面的 Servlet 做小小的修改,以便它可以處理 GET 和 POST 方法。下面的 HelloForm.java Servlet 程式使用 GET 和 POST 方法處理由 Web 瀏覽器給出的輸入。
hello.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="Hello" method="POST">
姓:<input type="text" name="first_name"><br>
名:<input type="text" name="last_name"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
Hello.java:
/**
* Servlet表單資料
* GET 方法向頁面請求傳送已編碼的使用者資訊。頁面和已編碼的資訊中間用 ? 字元分隔,如下所示:
http://www.test.com/hello?key1=value1&key2=value2
POST 方法
另一個向後臺程式傳遞資訊的比較可靠的方法是 POST 方法。POST 方法打包資訊的方式與 GET 方法基本相同,但是 POST 方法不是把資訊作為 URL 中 ? 字元後的文字字串進行傳送,而是把這些資訊作為一個單獨的訊息。訊息以標準輸出的形式傳到後臺程式,您可以解析和使用這些標準輸出。
*使用 Servlet 讀取表單資料
Servlet 處理表單資料,這些資料會根據不同的情況使用不同的方法自動解析:
getParameter():您可以呼叫 request.getParameter() 方法來獲取表單引數的值。
getParameterValues():如果引數出現一次以上,則呼叫該方法,並返回多個值,例如複選框。
getParameterNames():如果您想要得到當前請求中的所有引數的完整列表,則呼叫該方法。
*
*/
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Hello
*/
@WebServlet("/Hello")
/*使用URL的GET方法例項*/
public class Hello extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* Default constructor.
*/
public Hello() {
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
/*
* response.setCharacterEncoding()
web Server相應瀏覽器的請求資料
setContentType:response.setContentType()
web Server相應瀏覽器的輸出資料
*/
response.setContentType("text/html charset=GBK");
//設定字元編碼
String title="使用GET方法讀取表單資料";
response.setCharacterEncoding("GBK");
PrintWriter writer=response.getWriter();
String docType="<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
writer.println(docType+
"<html>\n"
+ "<head><title>"+title+"</title></head>\n"
+ "<body bgcolor=\"f0f0f0\">\n"
+ "<h1 align=\"center\">"+title+"</h1>\n"
+ "<ul>\n"+"<li><b>名字</b>:"+
request.getParameter("first_name")+"\n"
+ "<ul>\n"+"<li><b>姓氏</b>:"+
request.getParameter("last_name")+"\n"+
"</ul>\n"+"</body></html>");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
// 處理 POST 方法請求的方法
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
將複選框資料傳遞到 Servlet 程式
當需要選擇一個以上的選項時,則使用複選框。
下面是一個 HTML 程式碼例項 hello.html,一個帶有三個複選框的表單
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="Hello" method="POST">
數學:<input type="checkbox" name="maths" checked="checked"><br>
物理:<input type="checkbox" name="physics"><br>
化學: <input type="checkbox" name="chemistry" checked="checked"><br>
<input type="submit" value="你喜歡哪一個">
</form>
</body>
</html>
下面是 CheckBox.java Servlet 程式,處理 Web 瀏覽器給出的複選框輸入。
/**
* Servlet表單資料
* GET 方法向頁面請求傳送已編碼的使用者資訊。頁面和已編碼的資訊中間用 ? 字元分隔,如下所示:
http://www.test.com/hello?key1=value1&key2=value2
POST 方法
另一個向後臺程式傳遞資訊的比較可靠的方法是 POST 方法。POST 方法打包資訊的方式與 GET 方法基本相同,但是 POST 方法不是把資訊作為 URL 中 ? 字元後的文字字串進行傳送,而是把這些資訊作為一個單獨的訊息。訊息以標準輸出的形式傳到後臺程式,您可以解析和使用這些標準輸出。
*使用 Servlet 讀取表單資料
Servlet 處理表單資料,這些資料會根據不同的情況使用不同的方法自動解析:
getParameter():您可以呼叫 request.getParameter() 方法來獲取表單引數的值。
getParameterValues():如果引數出現一次以上,則呼叫該方法,並返回多個值,例如複選框。
getParameterNames():如果您想要得到當前請求中的所有引數的完整列表,則呼叫該方法。
*
*/
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Hello
*/
@WebServlet("/Hello")
/*使用URL的GET方法例項*/
public class Hello extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* Default constructor.
*/
public Hello() {
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
/*
* response.setCharacterEncoding()
web Server相應瀏覽器的請求資料
setContentType:response.setContentType()
web Server相應瀏覽器的輸出資料
*/
response.setContentType("text/html charset=GBK");
//設定字元編碼
String title="讀取複選框資料";
response.setCharacterEncoding("GBK");
PrintWriter writer=response.getWriter();
String docType="<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
writer.println(docType+
"<html>\n"
+ "<head><title>"+title+"</title></head>\n"
+ "<body bgcolor=\"f0f0f0\">\n"
+ "<h1 align=\"center\">"+title+"</h1>\n"
+ "<ul>\n"+"<li><b>數學</b>:"+
request.getParameter("maths")+"\n"
+"<li><b>物理</b>:"+
request.getParameter("physics")+"\n"
+"<li><b>化學</b>:"+
request.getParameter("chemistry")+"\n"+
"</ul>\n"+"</body></html>");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
讀取所有的表單引數
以下是通用的例項,使用 HttpServletRequest 的 getParameterNames() 方法讀取所有可用的表單引數。該方法返回一個列舉,其中包含未指定順序的引數名。
一旦我們有一個列舉,我們可以以標準方式迴圈列舉,使用 hasMoreElements() 方法來確定何時停止,使用 nextElement() 方法來獲取每個引數的名稱。
Hello.java:
/**
* Servlet表單資料
* GET 方法向頁面請求傳送已編碼的使用者資訊。頁面和已編碼的資訊中間用 ? 字元分隔,如下所示:
http://www.test.com/hello?key1=value1&key2=value2
POST 方法
另一個向後臺程式傳遞資訊的比較可靠的方法是 POST 方法。POST 方法打包資訊的方式與 GET 方法基本相同,但是 POST 方法不是把資訊作為 URL 中 ? 字元後的文字字串進行傳送,而是把這些資訊作為一個單獨的訊息。訊息以標準輸出的形式傳到後臺程式,您可以解析和使用這些標準輸出。
*使用 Servlet 讀取表單資料
Servlet 處理表單資料,這些資料會根據不同的情況使用不同的方法自動解析:
getParameter():您可以呼叫 request.getParameter() 方法來獲取表單引數的值。
getParameterValues():如果引數出現一次以上,則呼叫該方法,並返回多個值,例如複選框。
getParameterNames():如果您想要得到當前請求中的所有引數的完整列表,則呼叫該方法。
*
*/
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Hello
*/
@WebServlet("/Hello")
/*使用URL的GET方法例項*/
public class Hello extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* Default constructor.
*/
public Hello() {
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
/*
* response.setCharacterEncoding()
web Server相應瀏覽器的請求資料
setContentType:response.setContentType()
web Server相應瀏覽器的輸出資料
*/
response.setContentType("text/html charset=GBK");
//設定字元編碼
String title="讀取所有的表單引數";
response.setCharacterEncoding("GBK");
PrintWriter writer=response.getWriter();
String docType="<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
writer.println(docType+
"<html>\n"
+ "<head><title>"+title+"</title></head>\n"
+ "<body bgcolor=\"f0f0f0\">\n"
+ "<h1 align=\"center\">"+title+"</h1>\n"
+"<table width=\"100%\" border=\"1\" align=\"center\">\n"
+"<tr bgcolor=\"#949494\">\n"
+"<th>引數名稱</th><th>引數值</th>\n"+
"</tr>\n");
Enumeration paramNames=request.getParameterNames();
do {
String paramName=(String)paramNames.nextElement();
writer.print("<tr><td>"+paramName+"</td>\n<td>");
String [] paramValues=request.getParameterValues(paramName);
//String paramValue=paramValues[0];
if(paramValues.length==1) {
String paramValue=paramValues[0];
if(paramValues.length==0) {
writer.println("<i>No value</i>");}
else {
writer.println(paramValue);
}
}
else {
writer.println("<ul>");
for(int i=0;i<paramValues.length;i++) {
writer.println("<li>"+paramValues[i]);
}
writer.println("</ul>");
}
}while(paramNames.hasMoreElements());
writer.println("</tr>\n</table>\n</body></html>");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
下面是一個 HTML 程式碼例項 hello.html,一個帶有三個複選框的表單:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="Hello" method="POST">
數學:<input type="checkbox" name="maths" checked="checked"><br>
物理:<input type="checkbox" name="physics" checked="checked"><br>
化學: <input type="checkbox" name="chemistry" checked="checked"><br>
<input type="submit" value="你喜歡哪一個">
</form>
</body>
</html>
遇到的問題
- servlet向頁面傳送文字時出現亂碼現象,解決方法在:
- html頁面run on server 彈出404介面,解決方法:hello.html的路徑放置不正確,將html放在WebContent根目錄下,正確執行。工程資料夾結構如圖:
相關推薦
Serlet表單
Servlet 表單資料 由 sf0501 建立,youj 最後一次修改 2016-08-26 19:20:23 Servlet 表單資料 很多情況下,需要傳遞一些資訊,從瀏覽器到 Web 伺服器,最終到後臺程式。瀏覽器使用兩種方法可將這些資訊傳遞到 Web 伺服器,分
JavaWeb網上圖書商城完整項目--day02-4.regist頁面提交表單時對所有輸入框進行校驗
word except 繼承 stub jstl use cti bmi imp 1、現在我們要將table表中的輸入的參數全部提交到後臺進行校驗,我們提交我們是按照表單的形式提交,所以我們首先需要在table表外面添加一個表單 <%@ page lang
HTML5表單
action 網頁 不能 use 定時 tip 顯示 b2c file 新增的input輸入類型 HTML5中增加了表單方面的諸多功能,包括增加input輸入類型、表單元素、form屬性和input屬性等。 新的input輸入類型 email類型的input元素是一種專門
阻止表單autocomplete
form表單 單元素 orm 存在 toc 點擊 nbsp 瀏覽器 解決辦法如下 在使用form表單提交時,表單元素默認會記錄用戶的操作,當點擊瀏覽器的返回頁面時,這個值仍然存在,有時候需要不能滿足需求,解決辦法如下: <input type="text" auto
[HTML]表單控件、iframe、datails、meter、time、fieldset、mark
單選 spa 多行 普通 -html tag sel legend doctype 一、表單元素 1.input:空標記 屬性: type:文本框、密碼框、單選按鈕、復選框 value:當前表單元素的值,可以是提交給服務器的值,也可以是默認顯示的初始值 name:名稱,要提
微信公眾平臺開發之萬能表單
平臺 體驗 src .net 等等 art net 獎勵 功能 微信公眾平臺開發之萬能表單是為了方便我們得到用戶的信息。我們能夠在後臺設置不論什麽須要用戶填寫的信息,比方:電話,姓名,性別,工作等等信息,當然我們也能夠設置一定的獎勵,僅僅要完好這些信息就能夠得到一定
純H5+c3實現表單驗證
mail ida 網址 put 滿足 字段 address ini css3 客戶端驗證是網頁客戶端程序最常用的功能之一,我們之前使用了各種各樣的js庫來進行表單的驗證。HTML5其實早已為我們提供了表單驗證的功能。至於為啥沒有流行起來估計是兼容性的問題還有就是樣式太醜陋了
JQuery中內容操作函數、validation表單校驗
調用方法 scrip 註意 語言 rul asc javascrip 最前面插入 獲取 JQuery:內容體拼接(可以直接拼接元素節點和內容節點) JQuery實現: 方案1:A.append(B); == B.appendTo(A);A的後面拼接B
從零開始學習html(五)與瀏覽者交互,表單標簽——下
定位 開始 系統 isp ctr 程序 顯示 text 輸入 六、使用下拉列表框進行多選 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-T
JavaScript基礎 submit按鈕配合form的onsubmit實現表單的提交與驗證
java asc body bmi 是我 技術 pos true value 鎮場詩: 清心感悟智慧語,不著世間名與利。學水處下納百川,舍盡貢高我慢意。 學有小成返哺根,願鑄一良心博客。誠心於此寫經驗,願見文者得啟發。—————————————————————
JavaScript基礎 submit按鈕結合onclick事件 實現表單的提交與驗證
ret vs2015 基礎 result oct 學習資源 charset 簡單 添加 鎮場詩: 清心感悟智慧語,不著世間名與利。學水處下納百川,舍盡貢高我慢意。 學有小成返哺根,願鑄一良心博客。誠心於此寫經驗,願見文者得啟發。————————————————
AngulairJS表單輸入驗證與mvc
oot 表單 名稱 操作 數據庫 root min 位置 input AngulairJS表單輸入驗證 1.表單中,常用的驗證操作有:$dirty 表單有填寫記錄、$valid 字段內容合法的、$invalid 字段內容是非法的、$pristine 表單沒有填寫記錄、$er
Flask入門之flask-wtf表單處理
color _for 驗證 sage 視圖 cnblogs 信息 jin boot 參考文章 1. 使用 WTForms 進行表單驗證 第11集 #Sample.py # coding:utf-8 from flask import Flask,render_templ
表單驗證
java pwd word 用戶註冊 -1 style 字符 text date <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></
HTML表單
掌握 的人 繼續 靈感 表單 比較 努力 什麽 變化 今天是5.8啦,也算是休息之後第一天學習。拿著自己昨天的作業,還覺得挺好蠻不錯的,有時候就得自己鼓勵鼓勵自己嘛。 上午陳老師講了些HTML表單的知識,發現很多HTML標簽都是英文的合成詞或者簡寫,掌握起來還是比較容易
php表單提交 圖片、音樂、視頻、文字,四種類型共同提交到數據庫
class 文件 loaded 頁面 ins 需要 ech video 文件是否存在 這個問題一直困擾了我好幾天,終於在今天讓我給解決了,難以掩飾的激動。 其實在之前沒有接觸到這種問題,只是表單提交數據而已,再就是圖片,四種類型同時提交還真是沒遇到過,做了一個系統,其中有
Thinkphp表單自動驗證
分割 增加 back () uniq 表示範圍 數據庫 redirect style 之前項目經常用到,沒做總結。 自動驗證是Thinphp模型層提供的一種數據驗證方法,可以在使用create創建數據對象的時候自動進行數據驗證。 原理: create()方法收集表單($_P
JaveWeb 公司項目(4)----- Easyui的表單驗證
過程 -- 目前 要求 今天 和數 希望 小項目 web 前面三篇博文講述的是界面的搭建和數據的傳輸,可以看出目前我做的這個小項目已經有了一個大體的雛形,剩下的就是細節部分的打磨和一些友好的人機交互設計,今天做的是表單的驗證,作為初學者,著實花了一番功夫,所以寫一篇博文將這
通過JS組裝表單
js 組裝表單場景:例如我們做一個支付功能,肯定需要與第三方支付公司進行對接,比如【網關支付】是需要跳轉到第三方的充值頁面的,但是第三方只提供了後臺接口,我們可以通過調用第三方的接口獲取到我們需要的數據,然後通過在前端通過JS組裝一個Form表單跳轉到第三方的充值頁面去。//業務處理跳轉網關支付頁面funct
html表單筆記
htm pos ora multipl put 多行輸入 action ffi col <body> <!-- html中的表單 --> <form action="提交的地址" method="post"> &