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