1、ParameterizableViewController 创建带有参数化视图的控制器
在创建控制器时, 你不想将视图名称硬编码在控制器中,而是把它参数化, 以便在Bean配置文件中进行指定。ParameterizableViewController是AbstractController的一个子类,其中定义了viewName属性及其getter和setter方法。对于不需要任何处理逻辑,只为用户呈现视图控制器,可以直接使用这个控制器类,或者扩展这个控制器类来继承viewName属性。
假设有一个非常简单的控制器,其目的只是为了呈现hello视图。可以声明一个ParameterizableViewController类型的控制器,并指定viewName属性为hello。
<!-- 页面直接跳转 --> <!-- class指定为ParameterizableViewController,可以进行页面直接跳转,跳转目的视图名 为viewName属性的value值,如下就表示分发器转发给这个bean时,跳转到页面hello去 --> <bean name="/parameterizableViewController.do" class="org.springframework.web.servlet.mvc.ParameterizableViewController"> <property name="viewName" value="hello" /> </bean> <!-- 视图解析器策略 --> <!-- 视图解析器 --> <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView" /> <property name="prefix" value="/WEB-INF/page/" /> <property name="suffix" value=".jsp" /> </bean>
2、UrlFilenameViewController
从请求的路径中获得逻辑视图名称,比上一种配置还要简单。
这两种控制器很适合 不需要任何处理逻辑,只是单纯的页面跳转。
<bean name="/hello.do" class="org.springframework.web.servlet.mvc.UrlFilenameViewController" /> <!-- 视图解析器策略 --> <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 视图解析器 --> <property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView" /> <property name="prefix" value="/WEB-INF/page/" /> <property name="suffix" value=".jsp" /> </bean>
上面的配置中并没有使用handlerMapping,但是controller中配置的是name而不是id。
如果想使用handlerMapping将name更改成id并添加相应的handlerMapping。