首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

springMVC 上jsp和freemarker共同使用(双servlet解决方案)

2012-10-13 
springMVC 下jsp和freemarker共同使用(双servlet解决方案)freemarker和jsp更有优势,否则也不会有这篇文章

springMVC 下jsp和freemarker共同使用(双servlet解决方案)

freemarker和jsp更有优势,否则也不会有这篇文章了。

?

对于共同使用,网上也有文章,解决思路基本上有两种:

1.双servlet

2.单servlet,通过使用ResourceBundle方式,将配对url与对应的视图实现

?

这样看来其实原理都一样,第二种方法网上貌似都是基于spring2.5或者更早的,我没有配置成功。springMVC 上jsp和freemarker共同使用(双servlet解决方案)

?

这篇文章主要多强调了一些,我觉得很容易造成模糊,但其实很简单的一些问题(网上文章都没提)

?

来看第一种,双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 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" 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互不干扰了。springMVC 上jsp和freemarker共同使用(双servlet解决方案)

?

当然如果项目开发完毕后,可以细化ftl的servlet配置,这样就不会让spring扫描两次同样的control了,这其中的开销是否很大我也不是很清楚了

?

1 楼 srdrm 2010-05-05   不需要配两个DispatcherServlet, 一个就行,
2 楼 mxdba321123 2010-05-06   srdrm 写道不需要配两个DispatcherServlet, 一个就行,

请问 能给出思路或者是配置文件吗?

我也尝试过单servlet 但是没有成功 3 楼 sjbwylbs 2011-12-13   单DispatcherServlet就可以,配置不同的ViewResolver即可.

热点排行