SpringMVC(二)之 RequestMapping

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kaizuidebanli/article/details/83053518

一、@RequestMapping映射请求的作用

SpringMVC 使用 @RequestMapping 注解为控制器指定可以处理那些URL 请求

二、@RequestMapping的使用

@requestMapping 可以定义在类和方法 上
@RequestMapping

	 类上:提供初步的请求映射信息。相对于 WEB 应用的根目录

	 方法上:提供进一步的细分映射信息。相对于类定义处的 URL。
若类定义处未标注 @RequestMapping,则方法处标记的 URL 相对于WEB应用的根目录。

DispatcherServlet 截获请求后,就通过控制器上@RequestMapping 提供的映射信息确定请求所对应的处理方法。

@RequestMapping 除了可以使用请求 URL 映射请求外,还可以使用请求方法、请求参数及请求头映射请求

在这里插入图片描述

(1)仅方法上

URL: http://localhost:8080/hellowWorld

//表明当前的类是一个过滤器
@Controller
public class HellowSpringMVC {
    /**
     * 1. 使用@RequestMapping注解来映射请求的URL
     * 2. 返回值会通过视图解析器解析为实际的物理视图,对于InternalResourceViewResolver,会做如下的解析:
     *    prefix + 返回值 + suffix,得到实际的物理地址,然后做转发操作
     * @return
     */
    @RequestMapping("hellowWorld")
    public String sayHellow(){
        System.out.println("hellow");
        return "success";
    }
}

(2)类和方法上

URL: http://localhost:8080/ClassRequestMapping/hellowWorld

@RequestMapping("/ClassRequestMapping")
@Controller     //表明当前的类是一个过滤器
public class HellowSpringMVC {
    /**
     * 1. 使用@RequestMapping注解来映射请求的URL
     * 2. 返回值会通过视图解析器解析为实际的物理视图,对于InternalResourceViewResolver,会做如下的解析:
     *    prefix + 返回值 + suffix,得到实际的物理地址,然后做转发操作
     * @return
     */
    @RequestMapping("/hellowWorld")
    public String sayHellow(){
        System.out.println("hellow");
        return "success";
    }
}

三、@RequestMapping请求方式

映射请求参数、请求方法或请求头
@RequestMapping 除了可以使用请求 URL 映射请求外,还可以使用请求方法、请求参数及请求头映射请求

@RequestMapping 除了可以使用请求 URL 映射请求外,还可以使用请求方法、请求参数及请求头映射请求.

@RequestMapping 的 value、method、params 及 heads
分别表示请求 URL、请求方法、请求参数及请求头的映射条件,他们之间是与的关系,联合使用多个条件可让请求映射更加精确化。

params 和 headers支持简单的表达式:

	param1: 表示请求必须包含名为 param1 的请求参数
	
	param1: 表示请求不能包含名为 param1 的请求参数
	
	param1 != value1: 表示请求包含名为 param1 的请求参数,但其值不能为 value1
	
	{“param1=value1”, “param2”}: 请求必须包含名为 param1 和param2的两个请求参数,且 param1 参数的值必须为 value1

在这里插入图片描述

(1)get方式
@Controller     //表明当前的类是一个过滤器
public class HellowSpringMVC {
    /**
     * 1. 使用@RequestMapping注解来映射请求的URL
     * 2. 返回值会通过视图解析器解析为实际的物理视图,对于InternalResourceViewResolver,会做如下的解析:
     *    prefix + 返回值 + suffix,得到实际的物理地址,然后做转发操作
     * @return
     */
    @RequestMapping(value = "/hellowWorld", method = RequestMethod.GET)
    public String sayHellow(){
        System.out.println("hellow");
        return "success";
    }
}
(2)post方式
@Controller     //表明当前的类是一个过滤器
public class HellowSpringMVC {
    /**
     * 1. 使用@RequestMapping注解来映射请求的URL
     * 2. 返回值会通过视图解析器解析为实际的物理视图,对于InternalResourceViewResolver,会做如下的解析:
     *    prefix + 返回值 + suffix,得到实际的物理地址,然后做转发操作
     * @return
     */
    @RequestMapping(value = "/hellowWorld", method = RequestMethod.POST)
    public String sayHellow(){
        System.out.println("hellow");
        return "success";
    }
}

四、@RequestMapping请求参数

@Controller     //表明当前的类是一个过滤器
public class HellowSpringMVC {
    /**
     * 1. 使用@RequestMapping注解来映射请求的URL
     * 2. 返回值会通过视图解析器解析为实际的物理视图,对于InternalResourceViewResolver,会做如下的解析:
     *    prefix + 返回值 + suffix,得到实际的物理地址,然后做转发操作
     * @return
     */
    @RequestMapping(value = "/hellowWorld", params="name")
    public String sayHellow(){
        System.out.println("hello "+name);
        return "success";
    }
}

五、@RequestMapping请求头

只接收请求头中 Content-Type 为 text/html;charset=UTF-8的请求

@Controller     //表明当前的类是一个过滤器
public class HellowSpringMVC {
    /**
     * 1. 使用@RequestMapping注解来映射请求的URL
     * 2. 返回值会通过视图解析器解析为实际的物理视图,对于InternalResourceViewResolver,会做如下的解析:
     *    prefix + 返回值 + suffix,得到实际的物理地址,然后做转发操作
     * @return
     */
    @RequestMapping(value = "/hellowWorld", headers="Content-Type:text/html;charset=UTF-8")
    public String sayHellow(){
        System.out.println("hello "+name);
        return "success";
    }
}

六、@RequestMapping 支持 Ant 风格的 URL

Ant 风格资源地址支持 3 种匹配符:

      ?  :匹配文件名中的一个字符
      
      *  :匹配文件名中的任意字符
      
      ** :** 匹配多层路径
@RequestMapping 还支持 Ant 风格的 URL
@RequestMapping 还支持 Ant 风格的 URL:

– /user/*/createUser: 匹配
/user/aaa/createUser、/user/bbb/createUser 等 URL

– /user/**/createUser: 匹配
/user/createUser、/user/aaa/bbb/createUser 等 URL

– /user/createUser??: 匹配
/user/createUseraa、/user/createUserbb 等 URL

猜你喜欢

转载自blog.csdn.net/kaizuidebanli/article/details/83053518
今日推荐