springMVC配置jsp/html视图解析器

  • Post author:
  • Post category:其他


参考自

springMVC配置jsp、html多视图解析器

,本文稍作补充

1、maven项目引入freemark相关jar包

freemaker是以个模板引擎,可以根据提供的数据和创建好的模板,去自动的创建html静态页面。所以在返回html视图时可以用这个引擎结合数据生成html静态页面。

<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-context-support</artifactId>
  <version>5.0.7.RELEASE</version>
</dependency>

<dependency>
  <groupId>org.freemarker</groupId>
  <artifactId>freemarker</artifactId>
  <version>2.3.28</version>
</dependency>

注意freemarker版本,如果版本过低的话可能会有java.lang.NoSuchMethodError: freemarker.template.Configuration.(Lfreemarker/template/Version;)这样的报错

2、freemarker.properties

在src/main/resources下新建freemarker.properties配置文件,主要为了解决freemarker返回HTML页面中文乱码问题

tag_syntax=auto_detect  
template_update_delay=60  
default_encoding=UTF-8  
output_encoding=UTF-8  
locale=zh_CN  
date_format=yyyy-MM-dd  
time_format=HH:mm:ss  
datetime_format=yyyy-MM-dd HH:mm:ss  
classic_compatible=true  
template_exception_handler=ignore  

3、配置视图解析器

在springmvc.xml中配置jsp、html的视图解析器。注意一点是,InternalResourceViewResolver必须总是赋予最低的优先级(最大的order值),因为不管返回什么视图名称,它都将解析视图。如果它的优先级高于其它解析器的优先级的话,它将使得其它具有较低优先级的解析器没有机会解析视图。

<bean id="freemarkerConfiguration"
      class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="location" value="classpath:freemarker.properties" />
</bean>
<!-- html视图解析器 必须先配置freemarkerConfig,注意html是没有prefix前缀属性的 -->
<bean id="freemarkerConfig"
      class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="freemarkerSettings" ref="freemarkerConfiguration" />
    <property name="templateLoaderPath">
        <value>/WEB-INF/html/</value>
    </property>
</bean>
<bean id="htmlviewResolver"
      class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    <property name="suffix" value=".html" />
    <property name="order" value="0"></property>
    <property name="contentType" value="text/html;charset=UTF-8"></property>
</bean>


<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"></property>
    <property name="suffix" value=".jsp"></property>
    <property name="order" value="2"></property>
</bean>

转载于:https://www.cnblogs.com/yozar/p/10230113.html