SpringMVC框架学习(六)——RequestMapping中常用的属性
发布日期:2021-05-07 10:01:52 浏览次数:23 分类:精选文章

本文共 2674 字,大约阅读时间需要 8 分钟。

RequestMapping中常用的属性

1、url中使用通配符

在RequestMapping中我们可以使用*号表示通配符从而匹配一系列的请求:

@RequestMapping("/test*.do")

表示请求的url中只要是以test开头就可以被当前方法处理。

@RequestMapping("/*test.do")

表示请求的url中只要是以test结尾就可以被当前方法处理。

@RequestMapping("macay/*/test.do")

表示在test.do的前面,只能有两级路径,第一级必须是macay,而第二级随意,例如:macay/1024/test.do。这种称为路径级数的精确匹配。

@RequestMapping("macay/**/test.do")

表示在test.do的资源名称前面,必须以monkey路径开头,而其它级的路径包含几级,各级又叫什么名称,均随意,例如:macay/1/0/2/4/test.do。 这种称为路径级数的可变匹配。

2、请求方法的限定

默认情况下,使用 @RequestMapping 注解定义好的方法,可以被 GET 请求访问到,也可以被 POST 请求访问到,但是 DELETE 请求以及 PUT 请求不可以访问到。

在@RequestMapping中有一个method属性,我们可以改属性设置接收请求的提交方式:

@RequestMapping(value = "/hello.do", method = RequestMethod.POST)    public ModelAndView test(HttpServletRequest request, HttpServletResponse response) throws Exception {           //装载模型数据和逻辑视图        ModelAndView modelAndView = new ModelAndView();        //添加模型数据        modelAndView.addObject("name","Hello World!");        //添加逻辑视图        modelAndView.setViewName("show");        return modelAndView;    }

RequestMethod是一个枚举类型,里面包含了大部分的提交方式。

上面的注解表示,只有当/test.do的请求的方式是post的时候才会执行当前方法,对于其他请求方式不进行处理。如果强行访问会报如下错误:
在这里插入图片描述
示例,创建一个Controller,里面添加连个方法分别只处理get和post方式的请求:

public class TestController03 {       @RequestMapping(value="/requestGet.do",method = RequestMethod.GET)    public ModelAndView reqGet(HttpServletRequest request, HttpServletResponse response) throws Exception {           ModelAndView mv = new ModelAndView();        mv.addObject("method", "get请求");        mv.setViewName("get");        return mv;    }    @RequestMapping(value="/requestPost.do",method = RequestMethod.POST)    public ModelAndView reqPost(HttpServletRequest request, HttpServletResponse response) throws Exception {           ModelAndView mv = new ModelAndView();        mv.addObject("hello", "post请求");        mv.setViewName("post");        return mv;    }}

当然,限定的方法也可以有多个:

public class HelloController {       @RequestMapping(value = "/hello",method = {   RequestMethod.GET,RequestMethod.POST,RequestMethod.PUT,RequestMethod.DELETE})    public ModelAndView hello() {           return new ModelAndView("hello");    }}

此时,这个接口就可以被 GET、POST、PUT、以及 DELETE 访问到了。但是,由于 JSP 支支持 GET、POST 以及 HEAD ,所以这个测试,不能使用 JSP 做页面模板。可以讲视图换成其他的,或者返回 JSON,这里就不影响了。

3、请求中携带的参数

在@RequestMapping中还有一个属性是params,通过这个属性我们可以指定请求中必须携带的参数。

@RequestMapping(value="/test.do" ,  params={   "name" , "age"})

要求请求中必须携带请求参数 name 与 age

@RequestMapping(value="/test.do" , params={   "!name" , "age"})

要求请求中必须携带请求参数 age,但必须不能携带参数 name

@RequestMapping(value="/test.do" , params={   "name=jack" , "age=23"})

要求请求中必须携带请求参数 name,且其值必须为jack;必须携带参数 age,其值必须为 23

@RequestMapping(value="/test.do" , params="name!=jack")

要求请求中必须携带请求参数name,且其值必须不能为jack

上一篇:JAVA初窥-DAY05
下一篇:SpringMVC框架学习(五)——详解基于注解的SpringMVC

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年03月29日 10时17分31秒