Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装
閱讀目錄
- 1. 通過HttpServletRequest獲得請求參數(shù)和數(shù)據(jù)
- 2. 處理方法形參名==請求參數(shù)名
- 3. 如果形參名跟請求參數(shù)名不一樣怎么辦呢?用@RequestParam注解
- 4. 用實(shí)體類接收
- 最后,如何選擇?
瀏覽器總會向服務(wù)器傳遞一些參數(shù),那么Spring MVC如何接收這些參數(shù)?
先寫個(gè)簡單的html,向服務(wù)器傳遞一些書籍信息,如下:
再寫個(gè)視圖result.jsp
<%@page pageEncoding="utf-8" contentType="text/html;charset=utf-8" %> <html> <head> <title>返回結(jié)果</title> </head> <body style="color:blue;font-size:18px"> 您輸入的書籍信息為:<br> 書籍的名稱:${bookname }<br><br> 書籍的作者:${author }<br><br> 書籍的出版社:${press }<br><br> 書籍的ISBN:${isbn }<br><br> 書籍的豆瓣評分:${douban }<br><br> </body> </html> 回到頂部1. 通過HttpServletRequest獲得請求參數(shù)和數(shù)據(jù)
tomcat類容器會自動將請求的參數(shù)封裝到HttpServletRequest中
package net.sonng.mvcdemo.controller;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; 回到頂部2. 處理方法形參名==請求參數(shù)名
將處理方法的形參名設(shè)為跟傳遞來的參數(shù)名稱相同,Spring會自動將參數(shù)值傳遞進(jìn)來
package net.sonng.mvcdemo.controller;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView;用這種方式可能導(dǎo)致編碼錯(cuò)誤,這里沒有request參數(shù),那就在web.xml中添加個(gè)過濾器
<filter><filter-name>utf8Filter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>utf8Filter</filter-name> <servlet-name>springmvc</servlet-name> </filter-mapping> 回到頂部3. 如果形參名跟請求參數(shù)名不一樣怎么辦呢?用@RequestParam注解
處理方法該成這樣:
package net.sonng.mvcdemo.controller;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import net.sonng.mvcdemo.entity.Book; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView;@RequestParam可以將指定的請求參數(shù)賦值給形參,該注解有4個(gè)參數(shù)
----name:指定請求參數(shù)名
----value:跟name屬性相同
----required:boolean類型,該參數(shù)是否必須綁定。注意這是指是否必須有這個(gè)參數(shù),而不是參數(shù)的值是否為null。如果該屬性設(shè)置為true,但是又沒有對應(yīng)的參數(shù)傳遞來,那么會拋出異常:Required String parameter '參數(shù)名' is not present
----defaultValue:如果沒有該參數(shù),那么使用使用默認(rèn)值
4. 用實(shí)體類接收
寫個(gè)實(shí)體類,其實(shí)例變量名稱跟傳遞來的參數(shù)名稱相同,并將該實(shí)體類作為處理方法的形參,Spring會自動將請求參數(shù)封裝到該實(shí)體類對象中
先寫個(gè)Book實(shí)體類,注意實(shí)例變量名跟傳遞的參數(shù)名相同
package net.sonng.mvcdemo.entity;public class Book { private String bookname; //實(shí)體類的形參名跟請求參數(shù)名相同 private String press; private String author; private String isbn; private float douban; //省略getter、setter、toString }處理方法寫成這樣:
package net.sonng.mvcdemo.controller;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import net.sonng.mvcdemo.entity.Book; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView;result.jsp改一改
<%@page pageEncoding="utf-8" contentType="text/html;charset=utf-8" %> <html> <head> <title>返回結(jié)果</title> </head> <body style="color:blue;font-size:18px"> 您輸入的書籍信息為:<br> 書籍的名稱:${book.bookname }<br><br> <!-- 從名為book的模型中拿到bookname數(shù)據(jù) --> 書籍的作者:${book.author }<br><br> 書籍的出版社:${book.press }<br><br> 書籍的ISBN:${book.isbn }<br><br> 書籍的豆瓣評分:${book.douban }<br><br> </body> </html> 回到頂部最后,如何選擇?
如果參數(shù)比較少,就用:形參名跟請求參數(shù)名相同的辦法
如果參數(shù)比較多,就用:實(shí)體類封裝
如果瀏覽器端沒有做參數(shù)檢查,那就從request拿值
?
https://www.cnblogs.com/sonng/p/6644730.html轉(zhuǎn)載于:https://www.cnblogs.com/renyuanwei/p/9519576.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vs编译应用程序不依赖运行vs环境
- 下一篇: 前端模拟数据的技术方案(二)