以前用Struts2作为项目的控制层,在视图方面自然而然得用jsp,外加使用Struts2的标签,很方便也很简单,也强大。
但自从使用SpringMVC后,基本放弃使用Struts2(个人选择,并不代表Struts2不好)。Struts2不用了,那它的标签我也不想用了,那用什么来代替呢?答案就是Freemarker。它是不同于jsp的另外一种视图,而且自带的标签也很强大。在这里简单介绍Freemarker常用的一些标签使用:
<#include path> 这里path:要包含文件的路径
<#list sequence as item> 这里sequence:表达式将被自叙序列或集合;item:循环变量的名称
例:
<#list ["aaa","bbb","ccc"] as o>
${o_index+1}--${o}<#if o_has_next>,</#if>
</#list>
这里item_index:是一个包含当前项在循环中的索引数值,item_has_next:辨别当前项是否是序列最后一项的布尔值
<#break> 用来终止list循环
<#if condition>...<#elseif condition2>...<#else>...</#if> 使用方式类似Java的if else
Freemarker也可以像jsp那样,引入其它标签库,如:
<#assign s=JspTaglibs["/WEB-INF/spring.tld"]>
如果实现对Struts2标签依依不舍,也可通过此来引入Struts2标签
还可自定义标签
还有一点就是数据模型,比如日期、布尔值、数字,Freemarker也有特殊的处理方式。
如
日期的处理,Freemarker使用内建函数date、time或datetime;若要格式化参数显示,则使用内建函数string,如
obj?string("yyyy-mm-dd HH:mm:ss")
Freemarker也提供了很多很好的用内建函数,也挺常用到,如:
str?substring(from, toExclusive) 取子串
str?cap_first 首字母大写
str?uncap_first 首字母小写
<#assign test1 = "10/25/1995"?date("MM/dd/yyyy")>
<#assign test2 = "15:05:30"?time("HH:mm:ss")>
<#assign test3 = "1995-10-25 03:05 PM"?datetime("yyyy-MM-dd hh:mm a")>
${test1}
${test2}
${test3}
输出为:
Oct 25, 1995
3:05:30 PM
Oct 25, 1995 3:05:00 PM
str?ends_with 以...结尾,如"redhead"?ends_with("head")
返回布尔值true
还是很多,不一一显示,详细请看文档
1.1 处理字符串的内建函数
1.2 处理数字的内建函数
1.3 处理日期的内建函数
1.4 处理布尔值的内建函数
1.5 处理序列的内建函数
1.6 处理哈希表的内建函数
1.7 处理节点(XML)的内建函数
1.8 很少使用的和专家级的内建函数
最后还有一小点使用技巧
替代空值:${(str)!'空值,没有内容'}
判断对象或某属性是否存在:obj?? 或 obj.id?? 返回值是布尔类型值
分享到:
相关推荐
首先,我们来看JSP(JavaServer Pages)作为视图的实现。JSP是Java中的动态网页技术,它允许开发者在HTML页面中嵌入Java代码,以实现动态内容的生成。在Struts2框架中,JSP通常被用作动作类的输出接口。当你定义一个...
在Spring框架中,视图解析器是...在某些情况下,可能需要同时使用多种视图技术,比如Freemarker和JSP。这时,我们可以创建两个不同的视图解析器并设置它们的优先级。例如: ```xml <!-- Freemarker 视图解析器 --> ...
### jsp、freemarker、velocity简介和对比 在Java Web开发领域,模板引擎是连接后端业务逻辑与前端展示层的重要桥梁。本文将重点介绍三种常用的Java Web模板引擎:JSP(Java Server Pages)、Freemarker以及...
Freemarker是一个强大的Java模板引擎,常用于动态生成HTML或其他类型的文本文件,广泛应用于Web开发领域,特别是MVC模式中的视图部分。本项目示例将深入探讨如何使用Freemarker来生成静态HTML页面,帮助你理解其基本...
- 在Nutz项目中添加`nutz-freemarker-plugin.jar`库,配置Nutz的MVC模块,指定视图解析器为Freemarker。 - 配置Freemarker的配置文件(如`freemarker.properties`),设置模板路径、缓存策略等。 2. **模板解析**...
此外,它还支持多种结果类型,包括JSP、FreeMarker模板等,使得视图层的实现更加灵活。 **Hibernate** 是一个对象关系映射(ORM)框架,它简化了数据库操作,让开发者可以使用面向对象的方式来处理数据库事务。...
在 Web 开发中,FreeMarker 通常与后端框架(如 Spring MVC)结合使用,用于生成视图部分。开发者定义模板文件,其中包含动态数据占位符,然后 FreeMarker 将这些占位符替换为实际的数据,生成最终的页面。...
下面我们将深入探讨如何配置Spring以使用Freemarker作为视图解析器,以及如何在前端页面上全面使用Freemarker进行渲染。 首先,我们需要在Spring的配置文件中添加对Freemarker的支持。这通常涉及到以下几个步骤: ...
本教程将介绍如何在Java Web项目中利用FreeMarker进行JSP页面的静态化,适合初学者入门学习。 1. **FreeMarker基本概念** FreeMarker是一个基于模板的语言,它与编程语言不同,不包含任何控制结构或函数调用。它的...
Struts2默认使用FreeMarker作为其模板技术,所有的主题模板文件都是基于FreeMarker编写的。例如,当配置一个Struts2动作(Action)时,结果(Result)可以指向一个FreeMarker模板文件(`.ftl`)而不是传统的JSP页面...
然而,JSP本身的设计并没有很好地解决视图和逻辑的分离问题,这就是引入Freemarker等模板引擎的原因。 在"freemarker_sitemesh_jsp_ext"项目中,这三者是如何整合的呢? 1. **配置整合**:首先,你需要在Web应用的...
在这个项目中,"SSH项目 有Freemarker模版" 意味着它采用了Struts2作为MVC框架,Spring作为依赖注入容器和服务层管理,Hibernate作为对象关系映射工具,同时利用了Freemarker作为模板引擎来渲染前端视图。...
1. Freemarker 可以作为 MVC 模式的视图组件。 2. Freemarker 可以应用于非 Web 应用程序环境。 3. Freemarker 可以与容器无关,因为它并不知道 HTTP 或 Servlet。 4. Freemarker 可以通过 Eclipse 的插件来编辑,...
在这个项目中,我们将深入探讨如何在IntelliJ IDEA(IDEA)环境中,结合Maven构建工具,利用SpringBoot来创建一个Web入门应用,其中包括对Freemarker模板引擎和JSP(JavaServer Pages)的支持。 首先,IDEA作为一款...
随着技术的发展和项目需求的变化,很多基于Java Web的传统应用正面临着从JSP到Freemarker模板引擎迁移的需求。Freemarker作为一款强大的模板引擎,在性能优化和代码可读性方面有着显著的优势。本篇将详细介绍从JSP到...
在Spring MVC中,FreeMarker作为视图解析器,接收控制器传递的数据并结合模板文件生成最终的响应内容。下面将详细解释如何正确使用FreeMarker,并通过Spring MVC中的具体案例来阐述。 1. **FreeMarker配置**: - ...
尽管Spring Boot推荐使用Thymeleaf、Freemarker等现代视图模板引擎,但仍然支持JSP。通过在配置中启用嵌入式Tomcat服务器的JSP支持,并设置相应的静态资源路径,就可以在Spring Boot应用中使用JSP进行视图渲染。 总...
此外,SpringMVC支持多种视图技术,包括JSP、Thymeleaf和我们项目中使用的Freemarker。 Spring4是全面的Java企业级应用开发框架,提供依赖注入(DI)、AOP(面向切面编程)、事务管理、数据访问、Web服务等众多功能...
默认情况下,SpringMVC 支持 JSP 作为视图技术。然而,为了支持 FreeMarker 和 Json,我们需要配置相应的视图解析器。 **2. JSP 视图** JSP(JavaServer Pages)是最常见的视图技术,用于动态生成 HTML。在 ...
1. 创建新项目:在IntelliJ IDEA中选择Spring Initializr,配置项目基本信息,包括Group、Artifact、Version等,并勾选Spring Web、MyBatis、Freemarker等相关依赖。 2. 导入源码:导入下载的项目源码,IDEA会自动...