1. 通过@RequestParma注解接收
/*** * value和name都可以使用,互为别名 * 如果此处设置了需要什么参数而前端请求时没有提供则会报400(请求参数不一致错误) * required参数用于设置该参数是否为必须传递参数,默认为true必须传递 * default设置默认值 */
java
@RequestMapping(value = "/user/register")
public String register(
//通过注解直接获取请求报文中携带的参数
@RequestParam(value = "username", required = true) String username,
@RequestParam(name = "password") String password,
@RequestParam(value = "hobby") String[] hobby) {
System.out.println("username=" + username);
System.out.println("password=" + password);
System.out.println(hobby);
return "ok";
}
2. 依靠控制器方法上的形参名接收
@RequestParam 这个注解是可以省略的,如果方法形参的名字和提交数据时的name相同,则 @RequestParam 可以省略。
但有一个前提:如果你采用的是Spring6+版本,你需要在pom.xml文件中指定编译参数'-parameter',配置如下:
html
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.12.1</version>
<configuration>
<source>21</source>
<target>21</target>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
Controller中的方法只需要这样写:**形参的名字必须和提交的数据的name一致!!!!!
java
@PostMapping(value="/register")
public String register(String username, String password, String sex, String[] hobby, String intro){
System.out.println(username + "," + password + "," + sex + "," + Arrays.toString(hobby) + "," + intro);
return "success";
}
3. 使用pojo类接收请求参数
创建pojo对象,springmvc通过反射获取pojo类并通过该类的属性名进行匹配存值 准确来说通过set方法进行匹配赋值,即set方法的名称必须和前端前端传过来的参数名保持一致即可(如:setName,前端传的参数Name=...)
java
public class User {
private String username;
private String password;
private String[] hobby;
java
@RequestMapping(value = "/user/pojo")
public String pojo(User user) {
System.out.println(user);
for (String s : user.getHobby()) {
System.out.println(s);
}
return "ok";
}
4. @RequestHead注解
该注解的作用是:将`请求头信息`映射到`方法的形参上`。和RequestParam注解功能相似,RequestParam注解的作用:将`请求参数`映射到`方法的形参`上。当然,对于RequestHeader注解来说,也有三个属性:value、required、defaultValue,和RequestParam一样,这里就不再赘述了。
java
@PostMapping("/register")
public String register(User user,
@RequestHeader(value="Referer", required = false, defaultValue = "")
String referer){
System.out.println(user);
System.out.println(referer);
return "success";
}
5. @CookieValue注解
该注解的作用:将`请求提交的Cookie数据`映射到`方法形参`上同样是有三个属性:value、required、defaultValue
前端页面发送cookie代码
html
<script type="text/javascript">
function sendCookie(){
document.cookie = "id=123456789; expires=Thu, 18 Dec 2025 12:00:00 UTC; path=/";
document.location = "/springmvc/register";
}
</script>
<button onclick="sendCookie()">向服务器端发送Cookie</button>
后端controller代码
java
@GetMapping("/register")
public String register(User user,
@RequestHeader(value="Referer", required = false, defaultValue = "")
String referer,
@CookieValue(value="id", required = false, defaultValue = "2222222222")
String id){
System.out.println(user);
System.out.println(referer);
System.out.println(id);
return "success";
}