SpringMVC—RequestMapping注解

一、RequestMapping注解

@RequestMapping注解:是Spring MVC框架中的一个控制器映射注解,用于将请求映射到相应的处理方法上,具体来说,他可以将指定URL的请求绑定到一个特定的方法或类上,从而实现对请求的处理和响应。

1.RequestMapping的value属性

package com.pon;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class Order {
    @RequestMapping(value = {"/e","/b"})
    public String o(){
        return "index";
    }
}

多个vlue属性在同一RequestMapping上,可以作为同一地址·。

控制类:

package com.pon;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class Order {
    @RequestMapping(value = {"/e","/b"})
    public String o(){
        return "index";
    }
}

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>你好</h1>
</body>
</html>

 

1)Ant风格的value

3)value使用占位符

URL使用RESTFul风格:

package com.pon;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class Order {
    @RequestMapping(value = {"/e","/b"})
    public String o(){
        return "index";
    }
    @RequestMapping(value = "/login/{username}/{password}")//value的占位符
    public String log(
            @PathVariable("username")
            String username,
            @PathVariable("password")
            String password){
        System.out.println("用户名"+username+"密码"+password);
        return "index";
    }
}

处理器端:

2.RequestMapping的method属性

超链接发送的请求方式为get请求。

在controller包下的Hello类:

package com.pon.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class Hello {
    @RequestMapping("/")
    public String first(){
        return "first";
    }
     //请求映射只支持post请求
    @RequestMapping(value = {"/ljx"},method = {RequestMethod.POST})
    public String hello(){
        return "hi";
    }
}

first.xml:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>首页</h1>
<a th:href="@{/ljx}">Hello界面</a>
</body>
</html>

hi.xml:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>你好 MVC</h1>
</body>
</html>

@RequestMapping的派生注解

验证GetMapping()

在controller包下的Hello类:

@Controller
public class Hello {
    @RequestMapping("/")
    public String first(){
        return "first";
    }
    @RequestMapping(value = {"/ljx"},method = {RequestMethod.POST})
    public String hello(){
        return "hi";
    }
    @GetMapping("/get")
    public String getMapping(){
        return "hi";
    }
}

first.xml:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>首页</h1>
<a th:href="@{/lix}">Hello界面</a>
<a th:href="@{/get}">Get界面</a>
</body>
</html>

hi.xml:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>你好 MVC</h1>
</body>
</html>

3.RequestMapping的params属性

params在requestmapping中赋值和method在同一位置。

4.RequestMapping的headers属性

二、SpringMvc获取请求参数 

1通过ServletAPI获取

testContorller类下:

package com.pon.controller;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class TestController {
   @RequestMapping("/parama")
    public String test(HttpServletRequest request){
      String s= request.getParameter("username");
      String r= request.getParameter("password");
      System.out.println("name="+s+",password="+r);
      return "test";
   }
}

 先访问首页的first.html:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>首页</h1>
<form th:action="@{/format}">
    <input type="submit" value="表单"><br>
</form>
<a th:href="@{/parama(username='admin',password=123456)}">获取请求参数</a>
</body>
</html>

test.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>获取到请求参数</h1>
</body>
</html>

 

2通过控制器方法的形参获取请求参数

 testContorller类下:

@Controller
public class TestController {
@RequestMapping("/testparam")
   public String testparam( String username,  String password){
       System.out.println("username"+username+"password"+password);
       return "hi";
   }
}

first.html页面中调用/testparam路径:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>首页</h1>
<form th:action="@{/format}">
    <input type="submit" value="表单"><br>
</form>
<a th:href="@{/parama(username='admin',password=123456)}">获取请求参数</a>
<a th:href="@{/testparam(username='adminmm',password=1234)}">控制器方法获取请求参数</a>
</body>
</html>

hi.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>你好 MVC</h1>
</body>
</html>

3@RequestParam

当HTML中的属性名与获取请求参数中的名字不一样,需要使用@RequestParam。

例如:

在控制器类中:

@Controller
public class TestController {
@RequestMapping("/testparam")
   public String testparam( String username,  String password){
       System.out.println("username:"+username+",password:"+password);
       return "hi";
   }
}

首页first.html界面:

<a th:href="@{/testparam(usern='adminmm',password=1234)}">控制器方法获取请求参数</a><br>

当参数不一样时,页面可以正常访问,但控制台获取不到参数。

解决方案,在控制类的构造函数上,添加@RequestParam注解,其他参数不变。

@Controller
public class TestController {
@RequestMapping("/testparam")
   public String testparam(@RequestParam("usern")String username, String password){
       System.out.println("username:"+username+",password:"+password);
       return "hi";
   }
}

4@RequsetHeader

请求头信息其实就是:localhost:8080

5@CookieValue

6通过实体类形参获取请求参数 

在首页first.html中定义一个表单:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>首页</h1>
<form th:action="@{/pojo}" method="post">
    用户名:<input type="text" name="username"><br>
    密码  :<input type="password" name="password"><br>
    性别:<input type="radio" name="sex" value="男">男<input type="radio" name="sex" value="女">女<br>
    年龄:<input type="text" name="age"><br>
    <input type="submit" value="实体类请求参数">
</form>
</body>
</html>

根据表单的属性创建一个实体类对象User:

package com.pon.pojo;
public class User {
    private String username;
    private String password;
    private String sex;
    private Integer age;
    public User() {
    }
    public User(String username, String password, String sex, Integer age) {
        this.username = username;
        this.password = password;
        this.sex = sex;
        this.age = age;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                '}';
    }
}

在控制类中写访问页面的路径:

@Controller
public class TestController {
 @RequestMapping("/pojo")
    public String Pojo(User user){
       System.out.println(user);
       return "hi";
   }
}

hi.xml:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>success</h1>
</body>
</html>

相关推荐

  1. SpringBoot注解

    2024-06-18 09:42:05       69 阅读
  2. 【Scala 】注解

    2024-06-18 09:42:05       56 阅读
  3. @Conditional注解

    2024-06-18 09:42:05       50 阅读
  4. Spring--注解

    2024-06-18 09:42:05       35 阅读
  5. SpringBoot注解

    2024-06-18 09:42:05       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-18 09:42:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-18 09:42:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-18 09:42:05       82 阅读
  4. Python语言-面向对象

    2024-06-18 09:42:05       91 阅读

热门阅读

  1. 游戏服务器要注意哪些安全事项?

    2024-06-18 09:42:05       24 阅读
  2. 【杂记-浅谈VRRP虚拟路由冗余协议】

    2024-06-18 09:42:05       32 阅读
  3. Python写一个MES系统和ERP系统协同任务流程

    2024-06-18 09:42:05       30 阅读
  4. 8、PHP 实现二进制中1的个数、数值的整数次方

    2024-06-18 09:42:05       30 阅读
  5. linux vim最全面教程

    2024-06-18 09:42:05       30 阅读
  6. 新手入门GitHub:一步步教你上手

    2024-06-18 09:42:05       35 阅读
  7. The difference between Radar and ADS-B

    2024-06-18 09:42:05       35 阅读