SpringMVC学习2

@RequestMapping:可以将请求映射到具体的Controller的具体方法上。
@RequestMapping既可以定义在类上,又可以定义在方法上。
请求映射的规则是:类上的@RequestMapping.value + 方法上的@RequestMapping.value
注意:如果value的值不以“/”开头,SpringMVC会自动添加上“/”

@RequestMapping的URL映射
1、标准URL映射:
example1:
        @RequestMapping("/hello")
        或
        @RequestMapping(value="/hello")

example2:
@Controller
@RequestMapping("/its")
public class DemoController {
    // 标准URL映射
    @RequestMapping("/test1")
    public ModelAndView test1() {
        ModelAndView mv = new ModelAndView("hello");
        mv.addObject("msg", "演示@RequestMapping的标准映射");
        return mv;
    }
}



2、Ant风格的映射
通配符
说明
?
匹配任何单个字符
*
匹配0个或者任意数量的字符
**
匹配0个或者多个目录
例如:
@RequestMapping("/test/*/show")

匹配:
/hello/test/a/show.action
/hello/test/b/show.action
@Controller
@RequestMapping("/its")
public class DemoController {

    @RequestMapping("/demo/*/test2")
    public ModelAndView test2() {
        ModelAndView mv = new ModelAndView("hello");
        mv.addObject("msg", "演示@RequestMapping的Ant(*)风格的映射");
        return mv;
    }

    @RequestMapping("/demo/**/test3")
    public ModelAndView test3() {
        ModelAndView mv = new ModelAndView("hello");
        mv.addObject("msg", "演示@RequestMapping的Ant(**)风格的映射");
        return mv;
    }
}






3、占位符映射
URL中可以通过一个或多个{xxx}占位符映射,通过@PathVariable("xxx")注解绑定到方法的入参中。
example1:
    @RequestMapping("/user/{userId}/{username}");

example2:
// @RequestMapping的占位符映射
@RequestMapping(value = "/user/{userId}/{username}")
public ModelAndView test4(@PathVariable("userId") Long userId, @PathVariable("username") String username) {
        ModelAndView mv = new ModelAndView("hello");
        mv.addObject("msg", "演示@RequestMapping的占位符映射");
        mv.addObject("userMsg", "用户id是:" + userId + ",用户名是:" + username);
        return mv;
}





 注意:@PathVariable("paramName")中的参数名一定要指定,否则在本地eclipse开发时候可以不会出现问题,但是当程序上到生产环境上时,就可能出现问题。

举例:
1.首先取消掉下图中框出来部分前面的勾



2.Java代码:



3.测试浏览器访问的结果:


以上java代码中的写法是错误的,应该给@PathVariable指定入参的名称。
正确的写法:



4、限定请求方法的映射
        SpringMVC的请求默认是Get方式请求,如果指定Controller中的方法只能以POST方式请求,那么当使用其它请求方式的时候,就会出现 405报错( 表示请求方式不支持)。

Java代码:


使用浏览器发送请求:


在Http请求中最常用的请求方式是GET和POST,另外还有一些其它的请求方式PUT、DELETE、HEAD...等。
例如:
@RequestMapping(value="/user/{userId}",method=RequestMethod.GET)
@RequestMapping(value="/user/{userId}",method={RequestMethod.GET,RequestMethod.POST})



5、限制请求参数
例如:@RequestMapping(value="/query/item",params="itemId")
限定请求参数中必须有要itemId这个参数。

参数的限定规则如下:
params="itemId",请求参数中必须要包含itemId
params="!itemId",请求参数中不能包含itemId
params="itemId != 1",请求参数中必须要包含itemId,但是其值不能为1
params={"itemId","userId"},请求参数中必须要包含itemId和userId两个参数






如果没有传递限定需要传输的参数,那么就会400报错:


@RequestParam:获取请求参数的值






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值