先上springmvc-servlet.xml的代码,多加了一个id=viewResolver的bean
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/page/"/>
<property name="suffix" value=".jsp"/>
</bean>
<bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/index">indexController</prop>
</props>
</property>
</bean>
<bean id="indexController" class="controller.IndexController"></bean>
</beans>
prefix表示前缀,suffix表示后缀。这个bean加上去之后表示视图定位在springmvc/WEB-INF/page/***.jsp的位置.
由于这里视图定位已经指定了视图文件的位置及格式为jsp,所以在IndexController中无需写成index.jsp
package controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class IndexController implements Controller{
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
ModelAndView mav = new ModelAndView("index");
mav.addObject("message","Hello Spring MVC");
return mav;
}
}
相应地,原来处于webContent目录下面的index.jsp应该移动到WEB-INF/page下面。
重新run on server,结果与原来相同,同样显示Hello Spring MVC。
好处就是如果视图层的页面不使用jsp的格式,使用其他格式的视图文件,如果不使用viewResolver。那么只能在Controller的包下面的类文件中,一个个去修改后缀。而使用这种方式,就可以一次性在配置文件中设置好视图定位及文件格式,节省工作量。