浏览 4069 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-05-03
最后修改:2010-09-21
freemarker和jsp更有优势,否则也不会有这篇文章了。
对于共同使用,网上也有文章,解决思路基本上有两种: 1.双servlet 2.单servlet,通过使用ResourceBundle方式,将配对url与对应的视图实现
这样看来其实原理都一样,第二种方法网上貌似都是基于spring2.5或者更早的,我没有配置成功。
这篇文章主要多强调了一些,我觉得很容易造成模糊,但其实很简单的一些问题(网上文章都没提)
来看第一种,双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
<!-- 自动搜索@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> </property> </bean> 注意,如果default_encoding是UTF-8,请保证你的工程项目是UTF-8编码的,如果是gbk什么的,即使你加入
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 也没有用!
接下来要说一下 <property name="templateLoaderPath"> <value>/WEB-INF/freemarker/</value> </property> 这个属性! 首先看一下一个control
@RequestMapping(value = "/left.ftl", method = RequestMethod.GET) public String left(@ModelAttribute Website website) { return "left"; } 他返回一个left
那么实际访问的路径就是 WEB-INF/freemarker/left.ftl,就是一个简单拼接
这样就可以实现jsp与freemarker互不干扰了。
当然如果项目开发完毕后,可以细化ftl的servlet配置,这样就不会让spring扫描两次同样的control了,这其中的开销是否很大我也不是很清楚了
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-05-05
不需要配两个DispatcherServlet, 一个就行,
|
|
返回顶楼 | |
发表时间:2010-05-06
srdrm 写道 不需要配两个DispatcherServlet, 一个就行, 请问 能给出思路或者是配置文件吗? 我也尝试过单servlet 但是没有成功 |
|
返回顶楼 | |