Spring的MVC控制器返回ModelMap时,会跳转到什么页面?
控制器中的方法如下:
@RequestMapping("/person/personDisplay") public ModelMap defaultHandler() { System.out.println("hahaha"); return new ModelMap("personList", this.dummyService.getDummyList()); }
对于以上函数,返回后,页面将会跳转到“前缀+person/personDisplay+后缀”所表示的页面。——注意,最前面的反斜杠会被去掉。如果spring配置文件中的配置如下:
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass"><value>org.springframework.web.servlet.view.JstlView</value></property> <property name="prefix"><value>/jsp/</value></property> <property name="suffix"><value>.jsp</value></property>
那么函数将会返回到“/jsp/person/personDisplay.jsp”页面。
如果@RequestMapping("/person/personDisplay") 处改为@RequestMapping("person/personDisplay") 又当如何呢?有没有最左端的反斜杠“/”对于spring返回的视图都是一样的,页面同样会跳转到“/jsp/person/personDisplay.jsp”页面。以上两者的区别是反斜杠代表工程的根目录,所以像/MyProject/person/personDisplay.htm的请求,只能被前者捕获到,而后者捕获不到。后者的写法在实际中是不值得提倡的。