-
springmvc整合freemarker怎么弄25
springmvc整合freemarker整合流程和原理是什么?最好能有个demo!
问题补充:spirngmvc中freemarker自定义标签的使用原理2014年7月10日 10:19
3个答案 按时间排序 按投票排序
-
采纳的答案
一、 用macro实现自定义指令,例如: 自定义指令可以使用macro指令来定义。 <#macro greet person> <font size="+2">Hello ${person}!</font> </#macro> macro指令自身不打印任何内容,它只是用来创建宏变量,所以就会有一个名为greet的变量。 使用这个宏: <@greet person="Fred"/> 会打印出: <font size="+2">Hello Fred!</font> 二、用java代码标签实现自定义指令: 可以使用TemplateDirectiveModel接口在Java代码中实现自定义指令。 简单示例如下: 1、实现TemplateDirectiveModel接口。 public class UpperDirective implements TemplateDirectiveModel { public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body) throws TemplateException, IOException { if (!params.isEmpty()) { throw new TemplateModelException( "parameters 此处没有值!"); } if (loopVars.length != 0) { throw new TemplateModelException( " variables 此处没有值!"); } if (body != null) { //执行nested body 与FTL中 <#nested> 类似。 body.render(new UpperCaseFilterWriter(env.getOut())); } else { throw new RuntimeException("missing body"); } } private static class UpperCaseFilterWriter extends Writer { private final Writer out; UpperCaseFilterWriter (Writer out) { this.out = out; } public void write(char[] cbuf, int off, int len) throws IOException { char[] transformedCbuf = new char[len]; for (int i = 0; i < len; i++) { transformedCbuf[i] = Character.toUpperCase(cbuf[i + off]); } out.write(transformedCbuf); } public void flush() throws IOException { out.flush(); } public void close() throws IOException { out.close(); } } } 说明:<#nested>指令执行位于开始和结束标记指令之间的模板代码段。 2、注入FreeMarkerConfigurer的freemarkerVariables中。 例如:在jeecms-servlet-front.xml <entry key="upper" value-ref="upper"/> <bean id="upper" class="com.example.UpperDirective" /> 说明: FreeMarkerConfigurer. 、setFreemarkerVariables(Map<String,Object> variables) 底层调用了FreeMarker的Configuration.setAllSharedVariables()方法。 因为更好的实践是将常用的指令作为共享变量放到Configuration中。 3、调用自定义指令: [@upper] bar [#list ["red", "green", "blue"] as color] ${color} [/#list] baaz [/@upper] 4、显示输出结果: BAR RED GREEN BLUE BAAZ
2014年7月10日 10:37
-
freemarker的xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xmlns:cache="http://www.springframework.org/schema/cache" xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- freemarker的配置 --> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPath" value="/WEB-INF/freemarker/" /> <property name="defaultEncoding" value="utf-8" /> <property name="freemarkerSettings"> <props> <prop key="template_update_delay">10</prop> <prop key="locale">zh_CN</prop> <prop key="datetime_format">yyyy-MM-dd</prop> <prop key="date_format">yyyy-MM-dd</prop> <prop key="number_format">#.##</prop> </props> </property> </bean> <!-- FreeMarker视图解析 。在这里配置后缀名ftl和视图解析器。。 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"></property> <property name="suffix" value=".ftl" /> <property name="contentType" value="text/html;charset=utf-8" /> <property name="exposeRequestAttributes" value="true" /> <property name="exposeSessionAttributes" value="true" /> <property name="exposeSpringMacroHelpers" value="true" /> </bean> </beans>
模板ftl
${user.uId}
${user.uName}
${user.uPassword}
<#list userList as u>
${u.uId}
${u.uName}
${u.uPassword}
</#list>
/** * @author kingcs */ @Controller @RequestMapping("/springFreemarkerController") public class SpringFreemarkerController { /** * */ @RequestMapping(value = "/freemarker", method = RequestMethod.GET) public String restList(Model model) { User user = new User(); user.setuId(123); user.setuName("zhangsan"); user.setuPassword("123456"); user.setuBrithday(new Date()); model.addAttribute("user", user); List<User> users = new ArrayList<User>(); for(int i=0; i<10; i++) { User u = new User(); u.setuId(i); u.setuName("zhangsan"); u.setuPassword("123456"); users.add(u); } model.addAttribute("userList", users); return "test"; } }
2014年7月10日 13:00
-
其实也没有什么原理之类的, 大致原理是:将页面中所需要的样式放入FreeMarker文件中,然后将页面所需要的数据动态绑定,并放入Map中,通过调用FreeMarker模板文件解析类process()方法完成静态页面的生成。了解了上面的原理,接下来我就一步 步带您实现FreeMarker生成静态页面。 Demo http://blog.csdn.net/daryl715/article/details/1657149
2014年7月10日 10:27
相关推荐
这是一个基于eclipse+springmvc+freemarker+注解的入门例子,是一个war包,import到eclipse就应该可以直接运行,但是确保maven环境到存在;我做为一个入门者,是参照了...
在SpringMVC中整合FreeMarker,首先需要在项目中引入相关的依赖。通常在Maven项目中,我们需要在pom.xml文件中添加SpringMVC和FreeMarker的依赖项,如下所示: ```xml <!-- Spring MVC --> <groupId>org....
4. **整合流程**:在SpringMVC+Freemarker+Hibernate整合中,通常会首先配置Spring的ApplicationContext,包括DataSource、SessionFactory、HibernateTemplate或JPA的相关配置。接着,定义Controller,处理HTTP请求...
**SpringMVC整合FreeMarker** 1. **环境配置** 首先,确保你已经安装了JDK、Maven或Gradle等构建工具,以及Tomcat或Jetty等Web服务器。在`pom.xml`(如果你使用的是Maven)或`build.gradle`(如果你使用的是Gradle...
为了实现SpringMVC、Freemarker和Sitemesh3的整合,我们需要以下步骤: 1. **配置Maven**:在`pom.xml`中添加所需的依赖,如SpringMVC、Freemarker和Sitemesh3的jar包。 2. **配置SpringMVC**:在`web.xml`中配置...
**SpringMVC与Freemarker整合详解** SpringMVC作为Java Web开发中的主流MVC框架,常用于构建高效、可维护的Web应用。而Freemarker则是一种强大的模板引擎,适用于生成动态HTML或其他格式的文档。这两者的整合使得...
在IT行业中,SpringMVC、FreeMarker和Shiro是三个非常重要的框架,它们分别负责不同的功能领域。SpringMVC作为Spring框架的一部分,主要用于构建Web应用程序的模型-视图-控制器(MVC)架构;FreeMarker则是一个强大...
SpringMVC是一个强大的Java web应用程序开发...综上所述,这个项目展示了如何在SpringMVC中整合Freemarker,为开发者提供了一个后端服务和动态页面展示的平台。理解并实践这些知识点,将有助于提升Java Web开发能力。
SpringMVC、Freemarker和Apache Tiles是三个在Web...通过学习和实践这个项目,开发者可以了解到如何在SpringMVC中整合模板引擎和页面布局框架,同时掌握Ibatis的基本操作,这对于构建复杂且易维护的Web应用非常有帮助。
总之,这个"springmvc+freemarker带sql的登录事例"是一个基本的Web应用实践,涵盖了Spring MVC的请求处理、FreeMarker模板的使用以及与数据库的交互。通过这个实例,开发者可以学习到如何将这些组件整合起来,构建一...
通过 SpringMVC 和 Freemarker 的整合,我们可以构建出一个高效、灵活的 Web 应用,将复杂的业务逻辑与页面展示分离,提高开发效率和可维护性。同时,自定义标签的使用,进一步增强了模板的功能性和可扩展性。
整合Hibernate4到SpringMVC项目中,我们需要: 1. 添加依赖:在`pom.xml`文件中添加SpringMVC和Hibernate4的依赖库。 2. 数据源配置:在Spring配置文件中配置数据源,这里使用了C3P0连接池,它能有效管理数据库连接...
**FreeMarker与SpringMVC整合基础** FreeMarker是一个强大的模板引擎,它被广泛应用于Web开发中,用于生成动态HTML或其他格式的文档。SpringMVC是Spring框架的一部分,它是一个轻量级的MVC(Model-View-Controller...
在本项目中,我们探讨的是如何将三个主流的Java企业级框架——Spring 3.0、Hibernate 4.0和Spring MVC与JavaScript前端框架ExtJS 4进行深度整合,以构建一个高效、灵活且功能丰富的Web应用。这个整合旨在提供一个...
本文将深入探讨"Spring和SpringMVC整合"的相关知识点,以及如何创建一个简单的"Hello, World!"示例。 1. **Spring框架核心概念** - **依赖注入(Dependency Injection, DI)**:Spring的核心特性之一,通过DI,...
通过这样的整合,SpringMVC利用其强大的路由和控制能力,结合FreeMarker的模板渲染功能,可以实现灵活的Web应用开发。在实际项目中,还可以根据需求配置更多高级特性,如缓存管理、模板语法定制等,进一步提升开发...
在“maven+springmvc+mybatis+freemarker”框架整合中,Maven负责管理项目依赖,确保所有组件正确无误地协同工作。 **SpringMVC** SpringMVC是Spring框架的一部分,用于构建Web应用的Model-View-Controller(MVC)...
在IT行业中,SpringMVC、MyBatis以及FreeMarker是三个非常重要的技术组件,它们各自在Web开发领域中扮演着不同的角色。SpringMVC作为Spring框架的一部分,是用于构建MVC(Model-View-Controller)架构的轻量级Web...
这是一个基于Java技术栈的Web应用开发示例,主要利用了Maven、Spring、SpringMVC、MyBatis和FreeMarker五个关键组件。下面将详细解释这些技术和它们在项目中的作用。 1. Maven: Maven是Apache开发的一个项目管理...