/*** * value和name都可以使用,互为别名 * 如果此处设置了需要什么参数而前端请求时没有提供则会报400(请求参数不一致错误) * required参数用于设置该参数是否为必须传递参数,默认为true必须传递 * default设置默认值 */
- @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";
- }
@RequestParam 这个注解是可以省略的,如果方法形参的名字和提交数据时的name相同,则 @RequestParam 可以省略。
但有一个前提:如果你采用的是Spring6+版本,你需要在pom.xml文件中指定编译参数'-parameter',配置如下:
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.pluginsgroupId>
- <artifactId>maven-compiler-pluginartifactId>
- <version>3.12.1version>
- <configuration>
- <source>21source>
- <target>21target>
- <compilerArgs>
- <arg>-parametersarg>
- compilerArgs>
- configuration>
- plugin>
- plugins>
- build>
Controller中的方法只需要这样写:**形参的名字必须和提交的数据的name一致!!!!!
- @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";
- }
创建pojo对象,springmvc通过反射获取pojo类并通过该类的属性名进行匹配存值 准确来说通过set方法进行匹配赋值,即set方法的名称必须和前端前端传过来的参数名保持一致即可(如:setName,前端传的参数Name=...)
- public class User {
- private String username;
- private String password;
- private String[] hobby;
- @RequestMapping(value = "/user/pojo")
- public String pojo(User user) {
- System.out.println(user);
- for (String s : user.getHobby()) {
- System.out.println(s);
- }
- return "ok";
- }
该注解的作用是:将`请求头信息`映射到`方法的形参上`。和RequestParam注解功能相似,RequestParam注解的作用:将`请求参数`映射到`方法的形参`上。当然,对于RequestHeader注解来说,也有三个属性:value、required、defaultValue,和RequestParam一样,这里就不再赘述了。
- @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";
- }
该注解的作用:将`请求提交的Cookie数据`映射到`方法形参`上同样是有三个属性:value、required、defaultValue
前端页面发送cookie代码
- <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()">向服务器端发送Cookiebutton>
后端controller代码
- @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";
- }