Spring通过@Controller注解找到相应的控制器类后,还需要知道控制器内部对每一个请求是如何处理的,这就需要使用@RequestMapping注解类型,它用于映射一个请求或一个方法。使用时,可以标注在一个方法或一个类上。
1. 标注在方法上:作为请求处理方法在程序接收到对应的URL请求时被调用:
package com.itheima.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
...
@Controller
public class FirstController{
@RequestMapping(value="/firstController")
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) {
...
return mav;
}
}
此时,可以通过地址:http://localhost:8080/chapter12/firstController访问该方法!
2. 标注在类上:该类中的所有方法都将映射为相对于类级别的请求,表示该控制器所处理的所有请求都被映射到value属性值所指定的路径下。
package com.itheima.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
...
@Controller
@RequestMapping(value="/hello")
public class FirstController{
@RequestMapping(value="/firstController")
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) {
...
return mav;
}
}
由于在类上添加了@RequestMapping注解,并且其value属性值为“/hello”,所以上述代码方法的请求路径将变为:http://localhost:8080/chapter12/hello/firstController。
@RequestMapping注解除了可以指定value属性外,还可以指定其他一些属性,如下表所示。
表中所有属性都是可选的,但其默认属性是value。当value是其唯一属性时,可以省略属性名。下面两种标注的含义相同:
@RequestMapping(value="/firstController")@RequestMapping("/firstController")
(参考自<<Java EE 企业级应用开发教程>>)