所谓请求参数绑定,就是在控制器方法中,将请求参数绑定到方法参数上
- @RequestParam
绑定单个请求参数到方法参数上
@RequestParam("id") Integer id
将请求参数名为id的变量,绑定到id参数上,如果不知道@RequestParam值,默认从请求参数中取和变量名相同的请求参数
@RequestParam(value = "id",required = false) Integer id
可以通过指定required参数来指定是否必须有这个请求参数,默认是true的。如果true了,那么当出现无法正常参数绑定的话,就会报错。
- @PathVariable
绑定URI中的模板变量到方法参数上
@PathVariable("id") String id
<a href="${pageContext.request.contextPath}/testModule/123/save.do">URI模板变量值绑定</a>
1 package org.zln.myWeb.controller; 2 3 import org.apache.logging.log4j.LogManager; 4 import org.apache.logging.log4j.Logger; 5 import org.springframework.stereotype.Controller; 6 import org.springframework.ui.Model; 7 import org.springframework.web.bind.annotation.PathVariable; 8 import org.springframework.web.bind.annotation.RequestMapping; 9 10 /** 11 * Created by sherry on 16/8/18. 12 * 13 */ 14 @Controller 15 @RequestMapping("/testModule/**") 16 public class T00_TestController { 17 18 private Logger logger = LogManager.getLogger(); 19 20 @RequestMapping("/{num}/save.do") 21 public String testPathVariable(@PathVariable("num") String num, Model model){ 22 logger.info("模板变量:"+num); 23 model.addAttribute("num",num); 24 return "testPathVariable"; 25 } 26 }
控制器
模板变量的值:<c:out value="${num}"/><br/>
- @CookieValue
绑定Cookie值
- @RequestHeader
绑定请求头
请求参数如果是一个普通的POJO,带有setter方法,Spring MVC会自动将表单参数注入到POJO的成员变量中
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %> <!DOCTYPE HTML> <html> <head> <title>Title</title> <meta charset="UTF-8"/> </head> <body> <form action="${pageContext.request.contextPath}/testModule/testModelValue.do" name="testModelValue"> <table> <thead>演示@ModelValue</thead> <tbody> <tr> <td>姓名:</td> <td> <input type="text" placeholder="输入姓名..." name="name"/> </td> </tr> <tr> <td>年龄:</td> <td> <input type="text" placeholder="输入年龄..." name="age"/> </td> </tr> <tr> <td colspan="2"> <input type="submit" value="提交请求" /> </td> </tr> </tbody> </table> </form> </body> </html>
表单
@RequestMapping("testModelValue.do") public String testModelValue(T00_TestModelValue t00_testModelValue){ logger.info("参数对象:"+t00_testModelValue); return "testModelValueUI"; }
处理方法
- @SessionAttribute
绑定请求到session范围
- @RequestBody
将内容区数据绑定到方法变量,并自动进行类型转换
- @RequestPart
绑定 "multipart/data" 类型的数据,除了能绑定 @RequestParam能绑定的请求参数外,还能绑定上传的文件
一般请求参数绑定到方法参数上,也可以使用 request 类型的数据去获取,但是还是建议使用特定的注解将请求参数绑定到方法变量上,因为这样使用起来更简单。
时间: 2024-10-13 03:03:49