代码改变世界

@requestMapping

2018-08-29 09:13  colorfu  阅读(264)  评论(0编辑  收藏  举报

转自https://blog.csdn.net/kobejayandy/article/details/12690041

 

Spring通过@Controller注解找到相应的控制器类后,还需要知道控制器内部对每一个请求是如何处理的,这就需要使用@RequestMapping注解类型,它用于映射一个请求或一个方法。使用时,可以标注在一个方法或一个类上。

1. 标注在方法上:作为请求处理方法在程序接收到对应的URL请求时被调用:

  1. package com.itheima.controller;
  2. import org.springframework.stereotype.Controller;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. ...
  5. @Controller
  6. public class FirstController{
  7. @RequestMapping(value="/firstController")
  8. public ModelAndView handleRequest(HttpServletRequest request,
  9. HttpServletResponse response) {
  10. ...
  11. return mav;
  12. }
  13. }

此时,可以通过地址:http://localhost:8080/chapter12/firstController访问该方法!

2. 标注在类上:该类中的所有方法都将映射为相对于类级别的请求,表示该控制器所处理的所有请求都被映射到value属性值所指定的路径下。

  1. package com.itheima.controller;
  2. import org.springframework.stereotype.Controller;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. ...
  5. @Controller
  6. @RequestMapping(value="/hello")
  7. public class FirstController{
  8. @RequestMapping(value="/firstController")
  9. public ModelAndView handleRequest(HttpServletRequest request,
  10. HttpServletResponse response) {
  11. ...
  12. return mav;
  13. }
  14. }

由于在类上添加了@RequestMapping注解,并且其value属性值为“/hello”,所以上述代码方法的请求路径将变为:http://localhost:8080/chapter12/hello/firstController。

@RequestMapping注解除了可以指定value属性外,还可以指定其他一些属性,如下表所示。

 

表中所有属性都是可选的,但其默认属性是value。当value是其唯一属性时,可以省略属性名。下面两种标注的含义相同:

               @RequestMapping(value="/firstController")

               @RequestMapping("/firstController")