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>
</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了,这其中的开销是否很大我也不是很清楚了
分享到:
相关推荐
解决方案:在 FreeMarkerViewExtend.java 33行处 增加了BasePath ,通过BasePath 来控制请求目录,在 Freemarker 中可以自由使用,而 JSP 中是直接在 JSP 中获取BasePath 使用。 解决后遗症:因为我们的权限是通过...
springmvc4.3.3和mybatis3.4.1集成最新全部jar包,还包含了其他一些常用的jar包,很全,已经在项目中验证过。 lib/antlr-2.7.2.jar lib/aopalliance-1.0.jar lib/asm-3.3.1.jar lib/aspectjweaver-1.6.5.jar ...
包含了面试内容 jbdc mybatis 前端三大技术 和 jquary bootstrap框架 servlet jsp freemarker jstl spring springMvc springboot
1.3、SpringBoot和SpringMVC区别 1 1.4、SpringBoot和SpringCloud区别 2 1.5常见错误 2 二、快速入门 2 2.1、创建一个Maven工程 2 2.2、pom文件引入依赖 3 2.3、编写HelloWorld服务 3 2.4、@RestController 4...
JSP和Servlet的区别和联系 什么是MVC模型 TCP的连接和释放过程 什么是长连接和短连接 长连接是如何实现的 计算机网络体系结构 谈谈你对Struts的理解。 谈谈你对Hibernate的理解。 谈谈你对Lucene和solr的理解 谈谈你...
自己写项目写出来的SSM框架模板,纯原创。 需要可以自行购买,保证不亏。 遇到不懂得,可以私我留言。 ======================...4. jstl、jsp、Servlet、log4j、freemarker 5. shiro、lombok插件、文件上传 ......等等
7.MyCAT:一个彻底开源的,面向企业应用开发的“大数据库集群”支持事务、ACID、可以替代Mysql的加强版数据库,可以低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的...
Spring MVC是Spring的框架的Web组件。 它提供了丰富的功能,为建设强大的Web应用程序。... 比Spring更不紧耦合的servlet或JSP向客户端呈现视图。 喜欢速度与其他视图技术集成,Freemarker的,Excel或PDF现在也有可能
Servlet/JSP Servlet生命周期及Servlet服务器、Tomcat部署配置、JSP语法、自定义标记、JSTL和EL表达式、JSP 新特性、Java Web 设计模式。 透彻理解Servlet核心原理;熟练掌握Servlet API;透彻理解JSP引擎工作原理;...
Spring启动项目01-弹簧-引导-你好02-spring-boot-servlet03弹簧启动过滤器04弹簧引导侦听器05-spring-boot-static-resources106-spring-boot-static-resources207-spring-boot-fileupload08-spring-boot-view-jsp09-...
- 一站式支付解决方案,统一下单接口,支持支付宝、微信、网银等多种支付方式。不涉及业务的纯粹的支付平台。 - 统一下单(统一下单接口、统一扫码)、订单管理、数据分析、财务报表、商户管理、渠道管理、对账系统...