SpringMVC框架学习(六)——RequestMapping中常用的属性

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值