@Controller
@RequestMapping("/demo")
public class HelloController {
@RequestMapping("/hello.do")
public ModelAndView handleRequest(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
System.out.println("Hello, Controller.");
return new ModelAndView("jsp/hello");
}
}
@Controller
@RequestMapping("/demo/hello.do")
public class HelloController {
public ModelAndView handleRequest(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
System.out.println("Hello, Controller.");
return new ModelAndView("jsp/hello");
}
}
有区别吗?为什么第二种写法会报错?
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。方法上是必须要写的,然后用于类上的时候是表示类中的所有响应
请求的方法都是以该地址作为父路径。这也是SpringMVC和Struts的区别。一个是方法拦截,一个是类拦截。
第一种是正确的,访问路径为:项目根地址/类上注解的地址/方法的注解地址,最终访问路径就是http://localhost:8080/xxx/demo/hello.do
Controller类在方法上的注解就定义了一个action请求映射,你的第二种方法上没有映射,就相当与这个方法不是action请求。
第2 种不知道里面执行那个方法,你上面是一个,假如多个呢 。url过来不知道怎么区分,找不到对应的执行方法