SpringMVC的請求:獲取請求參數(shù)

服務器端要獲得請求的參數(shù)扰楼,有時還需要進行數(shù)據(jù)的封裝,SpringMVC可以接收如下類型參數(shù):

基本類型參數(shù)

POJO類型參數(shù)

數(shù)組類型參數(shù)

集合類型參數(shù)

1.獲得請求參數(shù):獲得基本類型參數(shù)

請求路徑:http://localhost:8080/springmvc1/quick11?username=zhangsan&age=12

@RequestMapping(value="/quick11")

@ResponseBody

public void save11(String username,int age) throws IOException {

System.out.println(username);

System.out.println(age);}

2.獲得請求參數(shù):獲得POJO類型參數(shù)

Controller中的業(yè)務方法的POJO參數(shù)的屬性名與請求參數(shù)的name一致蝴光,參數(shù)值會自動映射匹配。

public class User {

private String username;

private int age;

public String getUsername() {return username; }

public void setUsername(String username) {this.username=username;}

public int getAge() {return age;}

public void setAge(int age) {this.age=age;}

@Override

public String toString() {return"User{"+"username='"+ username +'\''+", age="+ age +'}';}}

@RequestMapping(value="/quick12")

@ResponseBody

public void save12(User user) throws IOException {

System.out.println(user);}

3.獲得請求參數(shù):獲得數(shù)組類型參數(shù)

Controller中的業(yè)務方法數(shù)組名稱與請求參數(shù)的name一致窖式,參數(shù)值會自動映射匹配贝椿。

@RequestMapping(value="/quick13")

@ResponseBody

public void save13(String[] strs) throws IOException {

System.out.println(Arrays.asList(strs));}

4.獲得請求參數(shù):獲得集合類型參數(shù)1

獲得集合參數(shù)時州邢,要將集合參數(shù)包裝到一個POJO中才可以袖瞻。

<form action="${pageContext.request.contextPath}/user/quick14"method="post">

<%--表明是第一個User對象的username age--%>

<input type="text"name="userList[0].username"><br/>

<input type="text"name="userList[0].age"><br/>

<input type="text"name="userList[1].username"><br/>

<input type="text"name="userList[1].age"><br/>

<input type="submit"value="提交">

</form>

public class VO {

private List<User> userList;

public List<User> getUserList() {return userList;}

public void setUserList(List<User> userList) {this.userList=userList;}

@Override

public String toString() {return"VO{"+"userList="+ userList +'}';}}

@RequestMapping(value="/quick14")

@ResponseBody

public void save14(VO vo) throws IOException {System.out.println(vo);}

5.獲得請求參數(shù):獲得集合類型參數(shù)2

當使用ajax提交時伐蒂,可以指定contentType為json形式煞躬,那么在方法參數(shù)位置使用@RequestBody可以直接接收集合數(shù)據(jù)而無需使用POJO進行包裝。

<script src="${pageContext.request.contextPath}/js/jquery-3.3.1.js"></script>

<script>

var userList = new Array();

userList.push({username:"zhangsan",age:18});

userList.push({username:"lisi",age:28});

$.ajax({type:"POST",url:"

${pageContext.request.contextPath}/user/quick15",data:JSON.stringify(userList),

contentType:"application/json;charset=utf-8"});

</script>

@RequestMapping(value="/quick15")

@ResponseBody

public void save15(@RequestBody List<User> userList) throws IOException {

System.out.println(userList);}

6.獲得請求參數(shù):靜態(tài)資源訪問的開啟

7.獲得請求參數(shù):配置全局亂碼過濾器

8.獲得請求參數(shù):參數(shù)綁定注解@RequestParam

當請求的參數(shù)名稱與Controller的業(yè)務方法參數(shù)名稱不一致時逸邦,就需要通過@RequestParam注解顯示的綁定恩沛。

<form action="${pageContext.request.contextPath}/quick16" method="post">

<input type="text" name="name"><br>

<input type="submit" value="提交"><br>

</form>

@RequestMapping(value="/quick16")

@ResponseBody

public void save16(@RequestParam(value="name",required= false,defaultValue="itcast") String username) throws IOException {

System.out.println(username);}

9.獲得請求參數(shù):Restful風格的參數(shù)的獲取

Restful風格的請求是使用“url+請求方式”表示一次請求目的的,HTTP 協(xié)議里面四個表示操作方式的動詞如下:

GET:用于獲取資源? ? ? ? ? ? ? 例:/user/1? ? ?GET : 得到 id =1 的 user

POST:用于新建資源? ? ? ? ? ? 例:/user? ? ? ?POST: 新增 user

PUT:用于更新資源? ? ? ? ? ? ? ?例:/user/1? ?PUT: 更新 id=1 的 user

DELETE:用于刪除資源? ? ? ? 例:/user/1? ?DELETE: 刪除 id=1 的 user

上述url地址/user/1中的1就是要獲得的請求參數(shù)缕减,在SpringMVC中可以使用占位符進行參數(shù)綁定雷客。地址/user/1可以寫成/user/{id},占位符{id}對應的就是1的值桥狡。在業(yè)務方法中我們可以使用@PathVariable注解進行占位符的匹配獲取工作搅裙。

http://localhost:8080/springmvc1/quick17/zhangsan

@RequestMapping(value="/quick17/{name}")

@ResponseBody

public void save17(@PathVariable(value="name") String username) throws IOException {

System.out.println(username);}

10.獲得請求參數(shù):自定義類型轉(zhuǎn)換器

SpringMVC 默認已經(jīng)提供了一些常用的類型轉(zhuǎn)換器,例如客戶端提交的字符串轉(zhuǎn)換成int型進行參數(shù)設置裹芝。但是不是所有的數(shù)據(jù)類型都提供了轉(zhuǎn)換器呈宇,沒有提供的就需要自定義轉(zhuǎn)換器,例如:日期類型的數(shù)據(jù)自定義轉(zhuǎn)換器局雄。

public class DateConverter implements Converter<String, Date> {

public Date convert(String dateStr) {

//將日期字符串轉(zhuǎn)換成日期對象 返回

SimpleDateFormat format= new SimpleDateFormat("yyyy-MM-dd");

Date date= null;

try {date= format.parse(dateStr);

} catch (ParseException e) {e.printStackTrace();}

return date;}}

@RequestMapping(value="/quick18")

@ResponseBody

public void save18(Date date) throws IOException {

System.out.println(date);}

11.獲得請求參數(shù):獲得Servlet相關(guān)API

SpringMVC支持使用原始ServletAPI對象作為控制器方法的參數(shù)進行注入,常用的對象如下:

HttpServletRequest存炮、HttpServletResponse炬搭、HttpSession

@RequestMapping(value="/quick19")

@ResponseBody

public void save19(HttpServletRequest request, HttpServletResponse response, HttpSession

session) throws IOException {

System.out.println(request);

System.out.println(response);

System.out.println(session);}

12.獲得請求參數(shù):獲得請求頭信息

使用@RequestHeader可以獲得請求頭信息蜈漓,相當于web階段學習的request.getHeader(name)

@RequestHeader注解的屬性如下:

value:請求頭的名稱

required:是否必須攜帶此請求頭

@RequestMapping(value="/quick20")

@ResponseBody

public void save20(@RequestHeader(value="User-Agent",required= false) String user_agent)

throws IOException {

System.out.println(user_agent);}

使用@CookieValue可以獲得指定Cookie的值

@CookieValue注解的屬性如下:

value:指定cookie的名稱

required:是否必須攜帶此cookie

@RequestMapping(value="/quick21")

@ResponseBody

public void save21(@CookieValue(value="JSESSIONID") String jsessionId) throws IOException{

System.out.println(jsessionId);}

13.獲得請求參數(shù):文件上傳

表單:

<form action="${pageContext.request.contextPath}/user/quick23" method="post" enctype="multipart/form-data">

名稱<input type="text"name="username"><br/>

文件1<input type="file" name="uploadFile"><br/>

文件2<input type="file" name="uploadFile"><br/>

<input type="submit"value="提交">

</form>

添加依賴:

<dependency>

<groupId>commons-fileupload</groupId>

<artifactId>commons-fileupload</artifactId>

<version>1.3.1</version>

</dependency>

<dependency>

<groupId>commons-io</groupId>

<artifactId>commons-io</artifactId>

<version>2.3</version>

</dependency>

配置多媒體解析器:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

<property name="defaultEncoding" value="UTF-8"/>

<property name="maxUploadSize"? value="500000"/>

</bean>

多文件上傳,只需要將頁面修改為多個文件上傳項宫盔,將方法參數(shù)MultipartFile類型修改為MultipartFile[]即可

@RequestMapping(value="/quick23")

@ResponseBody

public void save23(String username, MultipartFile[] uploadFile) throws IOException {

System.out.println(username);

for (MultipartFile multipartFile : uploadFile) {

String originalFilename= multipartFile.getOriginalFilename();

multipartFile.transferTo(new File("C:\\upload\\"+originalFilename));}}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末融虽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子灼芭,更是在濱河造成了極大的恐慌有额,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件彼绷,死亡現(xiàn)場離奇詭異巍佑,居然都是意外死亡,警方通過查閱死者的電腦和手機寄悯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門萤衰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人猜旬,你說我怎么就攤上這事脆栋。” “怎么了洒擦?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵椿争,是天一觀的道長。 經(jīng)常有香客問我熟嫩,道長秦踪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任邦危,我火速辦了婚禮洋侨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘倦蚪。我一直安慰自己希坚,他們只是感情好,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布陵且。 她就那樣靜靜地躺著裁僧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪慕购。 梳的紋絲不亂的頭發(fā)上聊疲,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音沪悲,去河邊找鬼获洲。 笑死,一個胖子當著我的面吹牛殿如,可吹牛的內(nèi)容都是我干的贡珊。 我是一名探鬼主播最爬,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼门岔!你這毒婦竟也來了爱致?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤寒随,失蹤者是張志新(化名)和其女友劉穎糠悯,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妻往,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡互艾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蒲讯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忘朝。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖判帮,靈堂內(nèi)的尸體忽然破棺而出局嘁,到底是詐尸還是另有隱情,我是刑警寧澤晦墙,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布悦昵,位于F島的核電站,受9級特大地震影響晌畅,放射性物質(zhì)發(fā)生泄漏但指。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一抗楔、第九天 我趴在偏房一處隱蔽的房頂上張望棋凳。 院中可真熱鬧,春花似錦连躏、人聲如沸剩岳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拍棕。三九已至,卻和暖如春勺良,著一層夾襖步出監(jiān)牢的瞬間绰播,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工尚困, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蠢箩,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像谬泌,于是被迫代替她去往敵國和親示弓。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容