日期:2014-05-16 浏览次数:20663 次
freemarker和jsp更有优势,否则也不会有这篇文章了。
?
对于共同使用,网上也有文章,解决思路基本上有两种:
1.双servlet
2.单servlet,通过使用ResourceBundle方式,将配对url与对应的视图实现
?
这样看来其实原理都一样,第二种方法网上貌似都是基于spring2.5或者更早的,我没有配置成功。
?
这篇文章主要多强调了一些,我觉得很容易造成模糊,但其实很简单的一些问题(网上文章都没提)
?
来看第一种,双servlet。
第一步:配置servlet
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>ftl</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ftl</servlet-name>
<url-pattern>*.ftl</url-pattern>
</servlet-mapping>
?第二步:编写相关spring的servlet配置文件,这个是关键,我使用的Spring3,基于注释的,freemarker的设置中,字符集设置统一为UTF-8
很多说乱码的,大多数是你的ftl(即模板文件)本身的编码有问题!而这个情况如果你使用EditorPlus等工具时可能不能发现,因为这些工具很有可能自动会转换!
?
<!-- 自动搜索@Controller标注的类 -->
<context:component-scan base-package="com.xxx.app.common.controller" />
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
<!-- ===================================================== -->
<!-- ViewResolver For FreeMarker -->
<!-- ===================================================== -->
<bean id="freemarkerResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="order" value="1"/>
<property name="suffix" value=".ftl"/>
<property name="contentType" value="text/html;charset=utf-8"/>
<property name="viewClass">
<value>org.springframework.web.servlet.view.freemarker.FreeMarkerView</value>
</property>
</bean>
<!-- ===================================================== -->
<!-- ViewResolver For FreeMarkerConfigurer -->
<!-- ===================================================== -->
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath">
<value>/</value>
</property>
<property name="freemarkerSettings"><!-- 设置FreeMarker环境属性-->
<props>
<prop key="template_update_delay">5</prop><!--刷新模板的周期,单位为秒-->
<prop key="default_encoding">UTF-8</prop><!--模板的编码格式 -->
<prop key="locale">zh_CN</prop><!-- 本地化设置-->
<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
<prop key="time_format">HH:mm:ss</prop>
<prop key="number_format">0.######</prop>
<prop key="boolean_format">true,false</prop>
<prop key="auto_import">"index.ftl" as p</prop>
<prop key="whitespace_stripping">true</prop>
<prop key="tag_syntax">auto_detect</prop>
<prop key="url_escaping_charset">UTF-8</prop>
</props&