request獲取表單資料
在servlet中獲取前臺傳來的資料,我們通常用的是request.getParameter("")來進行獲取值
然而還有其他的獲取方法,下面開始介紹
1.request.getInputStream()
2.request.getReader()
要根據<form>表單提交資料的編碼方式選擇不同的方法。
HTML中的form表單的一個關鍵屬性 enctype:
1. enctype=application/x- www-form-urlencoded
這種編碼方式是預設的編碼方式。
編碼後的結果通常是field1=value2&field2=value2&… 的形式,如 name=aaaa&password=bbbb。
通常使用的表單也是採用這種方式編碼的,Servlet 的 API 提供了對這種 編碼方式解碼的支援,只需要呼叫 ServletRequest 類中的 getParameter()方法就可以得到使用者表單中的欄位和資料。
不足:
這種編碼方式( application/x-www-form-urlencoded )雖然簡單,但對於傳輸大塊的二進位制資料顯得力不從心。
2. 對於傳輸大塊的二進位制數這類資料,瀏覽器採用了另一種編碼方式,即 "multipart/form-data" 的編碼方式:
瀏覽器可以很容易將表單內的資料和檔案放在一起傳送。這種編碼方式先定義好一個不可能在資料中出現的字串作為 分界符,然後用它將各個資料段分開,而對於每個資料段都對應著 HTML 頁面表單
3.需要注意的是:
request.getParameter()、 request.getInputStream()、request.getReader()這三種方法是有衝突的,因為流只能被讀一次。
比如:
當form表單內容採用 enctype=application/x-www-form-urlencoded編碼時,先通過呼叫request.getParameter() 方法得到引數後,再呼叫request.getInputStream()或request.getReader()已經得不到流中的內容,因為在呼叫 request.getParameter()時系統可能對錶單中提交的數據以流的形式讀了一次,反之亦然。
當form表單內容採用enctype=multipart/form-data編碼時,即使先呼叫request.getParameter()也得不到資料,所以這時呼叫request.getParameter()方法對 request.getInputStream()或request.getReader()沒有衝突,即使已經呼叫了 request.getParameter()方法也可以通過呼叫request.getInputStream()或request.getReader()得 到表單中的資料,而request.getInputStream()和request.getReader()在同一個響應中是不能混合使用的,如果混合使用就會拋異常。
如:
- BufferedReader reader = request.getReader();
- while ((line = reader.readLine()) != null)
- jb.append(line);
- String jbstring=jb.toString();
- String uname=request.getParameter("uname");
- System.out.println("uname:"+uname);
(uname 列印的值為: uame:null) .
(note :
本人最近做一個專案竟然還用jbstring.split("&");jbstring1.split("=");的方法把裡面的name 和password 等一串值單讀出來真是笨死了。
頁面端傳遞資料方式為:
[javascript] view plain copy- var params={
- ajaxurlwithparam:"createmail2.do",
- method:"POST",
- data:{uname:uname,password:password,passwordconf:passwordconf,mobile:mobile,verifycode:verifycode,domain:domain,version:version}
- };
注意jquery 中的datatype 指的是預期伺服器返回的資料型別。 而不是傳送的資料型別。如:
[javascript] view plain copy- //reg.js
- var params={ ajaxurlwithparam:"createmail2.do",
- method:"POST",
- data:{uname:uname,password:password,passwordconf:passwordconf,mobile:mobile,verifycode:verifycode,domain:domain,version:version}
- };
- regresult=ajaxRequest(params);
- //function.js
- function ajaxRequest(params){
- .....
- $.ajax({
- type : method,
- url : ajaxurl,
- async : ifasync,
- data : data,
- dataType : 'json', //
- success : function(result) {
- re=result;
- }
- });
- return re;
- }
而從sevlet 得到的字串是(request.getReader())為:
(uname=aptech1&password=123456&passwordconf=123456&mobile=13277042784&verifycode=0489&domain=163.com&version=regvf1)
不是json 字串格式。所以 Jquery .ajax {datatype:} 只是伺服器返回來的資料型別不要以為datatype:json 就以為他也是以json 資料格式傳送。
如果不指定,jQuery 將自動根據 HTTP 包 MIME 資訊來智慧判斷,比如XML MIME型別就被識別為XML。在1.4中,JSON就會生成一個JavaScript物件,而script則會執行這個指令碼。隨後伺服器端返回的資料會根據這個值解析後,傳遞給回撥函式。可用值:
"xml": 返回 XML 文件,可用 jQuery 處理。
"html": 返回純文字 HTML 資訊;包含的script標籤會在插入dom時執行。
"script": 返回純文字 JavaScript 程式碼。不會自動快取結果。除非設定了"cache"引數。'''注意:'''在遠端請求時(不在同一個域下),所有POST請求都將轉為GET請求。(因為將使用DOM的script標籤來載入)
"json": 返回 JSON 資料 。
"jsonp": JSONP 格式。使用 JSONP 形式呼叫函式時,如 "myurl?callback=?" jQuery 將自動替換 ? 為正確的函式名,以執行回撥函式。
"text": 返回純文字字串
)
相關推薦
request獲取表單資料
在servlet中獲取前臺傳來的資料,我們通常用的是request.getParameter("")來進行獲取值然而還有其他的獲取方法,下面開始介紹 1.request.getInputStream() 2.request.getReader()
java學習路程(javaEE)之獲取表單資料、獲取引數、request域、會話技術(Cookie)
一.獲取表單資料 //設定瀏覽器資料格式 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOExcept
小程式學習之旅----表單元件 button checkbox form input label radio slider switch textarea 獲取表單資料
<view class='input'> <input placeholder="請輸入內容1" confirm-type="done" type='text' focus="true" bindinput='doInput'/> </view> <
Struts2框架自學之路——Action獲取表單資料的方式以及表單資料的封裝
目錄 Action獲取表單資料的方式 通過ActionContext類獲取 使用ServletActionContext類獲取 通過特定介面訪問 在Action中操作域物件 Action中原始方式封裝表單資料 Struts2中表單資料的封裝 屬性封裝
Struts2_day02---結果頁面配置、獲取表單資料、封裝資料到集合
一、 結果頁面配置 (1)區域性結果頁面 1)對每個action進行單獨配置。 2)在<action>內部配置 (2)全域性結果頁面 :統一配置多個action 作用:使多個具有相同返回值的action返回到相同頁面 優點:統一配置,減少程式碼量
struts2中模型化獲取表單資料
class屬性:action全路徑,對應伺服器的路徑 method屬性:action裡面預設執行的方法execute
獲取表單資料(二)
<%@ page contentType="text/html;charset=gb2312"%> <%! public String codeToString(String str) {//處理中文字串的函式 String s=str;
servlet獲取表單資料
1.sevlet獲取表單資料 在很多的情況下,我們需要在瀏覽器,Web伺服器和後臺程式之間傳遞資料。瀏覽器使用兩種方法可將這些資訊傳遞到Web伺服器,分別為Get方法和Post方法。 2.Get方法,Post方法 get方法:GET方法是預設的從瀏覽器向Web伺服器傳遞
Java Web獲取表單資料
1、 表單,是一種可以由使用者輸入,並提交給伺服器端的一個圖形介面,有如下性質: (1)表單中可以輸入一些內容,這些輸入功能由控制元件提供,叫做表單元素 (2)表單中一般都有一個按鈕負責提交 (3)單擊提交按鈕,表單元素中的內容會自動提交給伺服器端 (4)
Django 獲取表單資料
能搜尋次問題就說明您對Django的基本配置views的基本寫法有所瞭解我就其他方面的做過都的描述了。 表單的基本資料型別 text、password、radio、checkbox、emai
微信小程式獲取表單資料
最簡單的方式我們呼叫bindinput方法 當鍵盤進行輸入的時候會觸發input的事件 “` bindValue (e) { //value就是表單中的資料 let value = e.detail.value; }
Servlet的5種方式實現表單提交(註冊小功能),後臺獲取表單資料
用servlet實現一個註冊的小功能 ,後臺獲取資料。 註冊頁面: 註冊頁面程式碼 : <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title&g
servlet之獲取表單資料
1.寫一個.java檔案——實體類(用於儲存表單資料) 假設是一個使用者註冊的表單,那麼就要寫一個user.java。它的屬性要和能從表單上獲得的資料進行對應。 2.寫html表單,並使用action將表單提交至對應對映地址 關於表單的介紹可
layui怎麼獲取表單資料?
獲取form中的資料: jsp: <form class="layui-form"> <button id="btnSubmit" lay-filter="btnSubmit" lay-submit>儲存</button> </form>
jquery批量設定和獲取表單資料
大家在獲取表單資料和給表單賦值的時候是否也會像下面這樣寫: 要是表單很長的話真是要淚奔。。。 有人說獲取資料可以給jquery新增serializeObject方法: ** * 表單序列
Struts2獲取表單資料的方式
有四種方式可以獲取jsp表單提交的資料: 第一種:定義屬性值,通過Setters方法獲取 <form action="user/LoginAction.html" method="post"> 賬號: <inp
Struts2獲取表單資料並封裝到實體類的方法
原連結1.採用ActionContext物件的方式public String execute() throws Exception { // 獲取ActionContext物件 ActionContext context = ActionCon
Servlet 通過表單上傳檔案和獲取表單資料的最簡單方式
注意:本文所描述的方法需要Servlet 3.0 及以上版本的支援。 一、伺服器端Servlet程式碼: import javax.servlet.ServletException; imp
smartupload實現檔案上傳時獲取表單資料
實現檔案上傳的form表單必須滿足兩個條件:method="post" enctype="multipart/form-data" 表單中enctype="multipart/form-data"的意思是設定表單的MIME編碼。預設情況,這個編碼格式是a
Action 中獲取表單資料的三種方式
Action 中獲取表單提交資料的三種方式:(1)使用ActionContext類來獲取。(2)使用ServletActionContext類獲取。(3)使用介面注入的方式獲取。先來說說獲取表單資料的直