Springmvc 参数绑定#
- 【應用】能夠使用 SpringMVC 獲取基本類型參數
- 【應用】能夠使用 SpringMVC 獲取 POJO 類型參數
1、默認支持的參數類型#
處理器形參中添加如下類型的參數,處理適配器會默認識別並進行賦值。
HttpServletRequest
通過 request 對象獲取請求信息
HttpServletResponse
通過 response 處理響應信息
HttpSession
通過 session 對象得到 session 中存放的對象
Model/ModelMap
Model
Model 對象可以向頁面傳遞數據,其本質都是使用 Request 對象向 jsp 傳遞數據。
ModelMap
ModelMap 是 Model 接口的實現類,也可以通過 ModelMap 向頁面傳遞數據
使用 Model 和 ModelMap 的效果一樣,如果直接使用 Model,springmvc 會實例化 ModelMap。
代碼如下:
@RequestMapping("/quick1")
//綁定默認參數 注入Servlet 相關API
public void quick1(HttpServletRequest request , HttpServletResponse response) throws
ServletException, IOException {
//向 request域中放數據
request.setAttribute("msg","大家好");
//轉發
request.getRequestDispatcher("/WEB‐INF/jsp/success.jsp").forward(request, response);
}
@RequestMapping("/quick2")
//通過參數 注入原生的對象
public String quick2(Model model){
//向model放數據 等價於 向request域中放數據
model.addAttribute("msg","好好學習");
return "success";
}
2、綁定簡單類型#
當請求的參數名稱和處理器形參名稱一致時會將請求參數與形參進行綁定。
這樣,從 Request 取參數的方法就可以進一步簡化。
/
/接收簡單的數據
@RequestMapping("/quick3")
//定義一個參數名和提交的數據的key一致
public String quick3(int id ,String name){
System.out.println(id);
System.out.println(name);
return "success";
}
2.1.@RequestParam#
- 使用 @RequestParam 常用於處理簡單類型的綁定。
- value:參數名字,即入參的請求參數名字,如 value=“itemId” 表示請求的參數中的名字為 itemId 的參數的值
將傳入。 - required:是否必須,默认是 true,表示請求中一定要有相應的參數,否則將報錯
- HTTP Status 400 - Required Integer parameter 'XXXX' is not present
- defaultValue:默認值,表示如果請求中沒有同名參數時的默認值
3、綁定 pojo 類型#
3.1 使用 pojo 接收表單數據
如果提交的參數很多,或者提交的表單中的內容很多的時候,可以使用簡單類型接受數據,也可以使用 pojo 接收數
據。 要求:pojo 對象中的屬性名和表單中 input 的 name 屬性一致。
//接收pojo 類型的數據 pojo(簡單的java對象)
@RequestMapping("/quick4")
//定義一個參數名和提交的數據的key一致
public String quick4(User user){
System.out.println(user);
return "success";
}
3.2 解決 post 亂碼問題#
當 post 請求時,數據會出現亂碼,我們可以設置一個過濾器來進行編碼的過濾。
在 web.xml 中加入
<!‐‐ 解決post亂碼問題 ‐‐>
<filter>
<filter‐name>encoding</filter‐name>
<filter‐class>org.springframework.web.filter.CharacterEncodingFilter</filter‐class>
<!‐‐ 設置編碼參是UTF8 ‐‐>
<init‐param>
<param‐name>encoding</param‐name>
<param‐value>UTF‐8</param‐value>
</init‐param>
</filter>
<filter‐mapping>
<filter‐name>encoding</filter‐name>
<url‐pattern>/*</url‐pattern>
</filter‐mapping>
4、Controller 方法返回值#
4.1 返回字符串形式#
直接返回字符串:此種方式會將返回的字符串與視圖解析器的前後綴拼接後跳轉。
redirect 重定向
@RequestMapping("/quick5")
public String quick5(){
System.out.println("quick5");
return "redirect:/index.jsp";
}
forward 轉發
/
/轉發
@RequestMapping("/quick6")
public String quick6(){
System.out.println("quick5");
return "forward:/index.jsp";
}