freemarker与spring的整合
来源:互联网 发布:linux 怎么引导win 7 编辑:程序博客网 时间:2024/05/16 19:08
已经测试过freemarker的基本语法,但是项目中大多会用到spring,所以freemarker需要与spring进行整合,而spring也为我们提供了的FreemarkerConfigurer。
需求:在浏览器输入:localhost:8080/freemarker/index.do的时候跳转个一个欢迎页,但是在D:/模板引擎/freemarker下生成spring-freemarker.html文件。
1、创建maven项目freemarker,打包方式为war,指定tomcat容器运行环境。
2、导入springmvc和freemarker包,如下
<dependencies> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies>
3、部署描述文件web.xml中配置前端控制器,如下
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
4、在spring配置文件applicationContext.xml中进行相关配置
<context:component-scan base-package="com.hfut" /> <mvc:annotation-driven /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/" /> <property name="suffix" value=".jsp" /> </bean> <!-- 配置freemark --> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPath" value="/WEB-INF/ftl/" /> <property name="defaultEncoding" value="GBK" /> </bean>
5、编写Controller
@Controllerpublic class HtmlGenController { @Autowired private FreeMarkerConfigurer configurer; @RequestMapping("/index") public String index(Model model){ //获取configuration对象 Configuration configuration = configurer.getConfiguration(); try { //加载模板 Template template = configuration.getTemplate("freemarker1.ftl"); //创建数据集 Map map = new HashMap<>(); map.put("hello", "hello spring-freemarker"); //创建输出流 Writer out = new FileWriter(new File("D:/模板引擎/freemarker/spring-freemarker.html")); //调用template的process方法输出文件 template.process(map, out); //关闭流 out.close(); } catch (Exception e) { e.printStackTrace(); } model.addAttribute("hello", "hello freemarker"); return "index"; }}
6、浏览器访问:localhost:8080/freemarker/index.do
会跳转到/WEB-INF/index.jsp。
index.jsp内容如下
<body> <h1>${hello }</h1></body>
查看D:/模板引擎/freemarke文件夹
到这里整合测试就成功了。
工程目录结构如下
需要注意的是,如果嫌这种方式测试麻烦,而希望只配置一下freemarker与spring的整合,再单独写个测试类测试的话。如下
1、配置文件中
<!-- 配置freemark --> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPath" value="/WEB-INF/ftl/" /> <property name="defaultEncoding" value="GBK" /> </bean>
2、测试类
public class SpringFreemarkerTest { @Test public void test() throws Exception{ ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); FreeMarkerConfigurer configurer = ac.getBean("freemarkerConfig",FreeMarkerConfigurer.class); //获取configuration对象 Configuration configuration = configurer.getConfiguration(); //加载模板 Template template = configuration.getTemplate("freemarker1.ftl"); //创建数据集 Map map = new HashMap<>(); map.put("hello", "hello spring-freemarker"); //创建输出流 Writer out = new FileWriter(new File("D:/模板引擎/freemarker/spring-freemarker.html")); //调用template的process方法输出文件 template.process(map, out); //关闭流 out.close(); }}
那么一旦运行就会抛出个异常如下:
这个时候找模板文件并不是去你指定的/WEB/ftl文件夹下去找,而是去resource下去找,所以根本找不到。
解决办法:将模板文件夹 放到resource下。然后配置的时候指定模板文件夹在classpath下的位置
<!-- 配置freemark --> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPath" value="classpath:/ftl" /> <property name="defaultEncoding" value="GBK" /> </bean>
- freemarker与spring的整合
- Spring 与 freemarker 整合
- spring与freemarker整合
- FreeMarker与Spring整合
- spring mvc与Freemarker的整合
- FreeMarker与Spring框架及SSM的整合过程
- FreeMarker与Spring框架及SSM的整合过程
- 淘淘商城系列——spring与freemarker的整合
- Mybatis-Spring-SpringMVC-freemarker-PageHelper的整合
- FreeMarker整合Spring 3
- FreeMarker整合Spring 3
- FreeMarker整合Spring 3
- spring+struts2+freemarker整合
- Spring MVC 整合 Freemarker
- FreeMarker整合Spring 3
- FreeMarker整合Spring 3
- FreeMarker整合Spring 3
- FreeMarker整合Spring 3
- GIt学习之路 第二天 创建版本库
- 解决swt项目中由于线程冲突问题时间无响应问题
- 一些简单知识的整理—C语言(一)
- java集合(一)——集合框架 Collection, Map
- 使用Maven创建Java项目
- freemarker与spring的整合
- Android Monkey测试入门-1-Android SDK环境安装
- unbuntu16.04安装ROS kinetic 软件安装源问题 或者apt-get无法更新
- 前端小知识积累
- java集合(二)——集合 Set
- 计算机图形学知识点
- ios-异步发送网络请求
- Leetcode 650. 2 Keys Keyboard
- 变态跳台阶(剑指Offer)