SpringMVC 配置视图解析器
通常我们如下来进行视图解析器配置:
<bean id="internalResourceViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
此时的 InternalResourceViewResolver 解析组件,默认将解析出 org.springframework.web.servlet.view.InternalResourceView 视图。
如果在classpath中添加相应的jstl包,如下:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.1.2</version>
</dependency>
此时的 InternalResourceViewResolver 解析组件,默认将解析出 org.springframework.web.servlet.view.JstlView 视图。
原理如下(如果jstlPresent为true):
private static final boolean jstlPresent = ClassUtils.isPresent( "javax.servlet.jsp.jstl.core.Config", InternalResourceViewResolver.class.getClassLoader());
/**
* Sets the default {@link #setViewClass view class} to {@link #requiredViewClass}:
* by default {@link InternalResourceView}, or {@link JstlView} if the JSTL API
* is present.
*/
public InternalResourceViewResolver() {
Class<?> viewClass = requiredViewClass();
if (InternalResourceView.class == viewClass && jstlPresent) {
viewClass = JstlView.class;
}
setViewClass(viewClass);
}
我们可以指定要使用的视图类(在InternalResourceViewResolver解析组件中配置viewClass属性,来指定要解析出的视图类):
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean>
也可以不指定视图类,直接添加jstl包,框架会默认使用jstlview
InternalResourceViewResolver
使用InternalResourceViewResolver

浙公网安备 33010602011771号