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
posted @ 2020-01-15 11:38  GordonDicaprio  阅读(2570)  评论(0编辑  收藏