SpringMVC系列--请求映射

其他网址

另见:《跟我学SpringMVC》=> 6.5 请求映射

@RequestMapping简介

@RequestMapping(value="/testRequestMapping", 
                method={RequestMethod.POST},
                params = {"username=jack"}, 
                headers = {"Accept"})

value和path的作用都是指定请求路径,当有注解后面只有一个参数的时候可以直接写路径
params指定请求参数中必须包含username的属性,且值必须为jack
headers用于指定请求的信息中必须包含的请求头信息

RequestMapping注解可以用在类上或者方法上。

url映射配置方法

(1)映射单个URL
@RequestMapping("") 或 @RequestMapping(value="")

(2)映射多个URL
@RequestMapping({"",""}) 或 @RequestMapping(value={"",""})
路径开头是否加斜杠/均可,建议加上,如:@RequestMapping("/hello")

特殊配置

@RequestMapping("")与@RequestMapping("/")效果一样,都是根路径。

五种映射方式

参考网址:@RequestMapping使用须知_Java_zalan01408980的博客-CSDN博客

@RequestMapping 一共有五种映射方式

映射方式

说明

示例

标准映射

标准URL 映射是最简单的一种映射

@RequestMapping("/hello")

@RequestMapping({"/hello","/world/test"})

Ant风格

Ant 通配符有三种:

?:匹配任何单字符

*:匹配任意数量的字符(含 0 个)

**:匹配任意数量的目录(含 0 个)

(1)@RequestMapping("/?/hello/")

(2)@RequestMapping("/*/hello")

(3)@RequestMapping("/**/hello")

占位符

可以通过一个或多个 {} 占位符映射。

若 URL 中的 userId 是纯数字,那么使用 @PathVariable 做绑定时,可以根据自己的需求将方法参数类型设置为 Long、 Integer、String等。

@PathVariable("") 不能简写为 @PathVariable

 

@RequestMapping("/user/{userId}/show")

public ModelAndView show(@PathVariable("userId") Long userId) {

    // 创建 ModelAndView 对象,并设置视图名称

    ModelAndView mv = new ModelAndView("show");

    // 添加模型数据

    mv.addObject("msg", "User ID:" + userId);

    return mv;

}

限制请求方法

HTTP 请求中最常用的请求方法是 GET、POST,还有其他的一些方法,如:DELET、PUT、HEAD 等

@RequestMapping(value="/hello", method=RequestMethod.POST)

如需限制多个请求方法,以大括号包围,逗号隔开即可,例如:

method={RequestMethod.GET,RequestMethod.POST}

限制请求参数

请求中必须带有userId 参数

参数的限制规则如下:

(1)params="userId" 请求参数中必须包含 userId

(2)params="!userId" 请求参数中不能包含 userId

(3)params="userId!=1" 请求参数中必须包含 userId,但不能为 1

(4)params={"userId","userName"} 必须包含 userId 和 userName 参数

(5)params={"userId=1","userName!=2"}必须包含 userId 和 userName 参数,且userId值必须为1,userName值必须不为2。

@RequestMapping(value="/user/show",params="userId")

public ModelAndView show(@RequestParam("userId") Long userId) {

    // 创建 ModelAndView 对象,并设置视图名称

    ModelAndView mv = new ModelAndView("show");

    // 添加模型数据

    mv.addObject("msg", "User ID:" + userId);

    return mv;

}

参数的依赖注入

@RequestMapping注解的方法的参数会自动注入,示例如下。

<a href="param/testParam?username=hehe&password=123"></a>

public class User {
    private String name;
    private String password;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
   //请求参数绑定
   @RequestMapping("/testParam")
   public String testParam(String username,String password, User user){
       System.out.println("执行了...");
       System.out.println("用户名:"+username);
       System.out.println("密码:"+password);
       User.name = username;
       User.password = password;
       System.out.println("User");
       System.out.println("  " + User.name);
       System.out.println("  " + User.password);
       return "success";
   }

运行结果   

执行了...
用户名:hehe
密码:123
User
  hehe
  123

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章