舍弃JSP,选择使用freeMarker的原因

前言:刚刚进入公司实习的时候,导师扔给了我测评项目熟悉框架(基于SSM框架的web项目)。导入项目后懵逼了,前台的html呢?JSP呢?ftl文件到底是啥?一开始,不敢这么快去问导师,于是自作聪明的加上了jsp,首先实现了登录注册的操作。后来才发现并不需要JSP,我这是做了无用功。而是采用了Freemarker的模板技术来显示前台。这个教训告诉我们“不懂就要问”!
回归正题,为什么不使用Jsp,而采用freeMark呢?

首先,我们先来认识一下freeMarker。 FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 文等。
简单了解了FreeMarker之后,现在就来讲讲FreeMarker的优点和缺点。

(一) FreeMarker的优点

1.很好地分离表现层和业务逻辑。

JSP功能很强大,它可以在前台编写业务逻辑代码,这也带来了一个弊端——页面内容凌乱,可读性差,这将会大大增加后期的维护难度。而FreeMarker很单纯,仅仅负责页面表现,而去掉了繁琐的逻辑代码。
FreeMarker的原理就是:模板+数据模型=输出,模板只负责数据在页面中的表现,不涉及任何的逻辑代码,而所有的逻辑都是由数据模型来处理的。用户最终看到的输出是模板和数据模型合并后创建的。

2. 提高开发效率。

众所周知,JSP在第一次执行的时候需要转换成Servlet类,之后的每次修改都要编译和转换。这样就造成了每次修改都需要等待编译的时间,开发效率低下。
而FreeMarker模板技术并不存在编译和转换的问题,所以就不会存在上述问题。相比而言,使用freeMark可以提高一定的开发效率

3.明确分工。

jsp页面前后端的代码写到了一起,耦合度很高,前台的需要熟悉后台环境,需要去调试。而让后台的不熟悉界面设计技术。对两者而言,交替性的工作需要花费一定的学习成本,效率低下。
使用FreeMarker后,前后端完全分离,大家各干各的,互不影响。

4、简单易用,功能强大

freeMark支持jsp标签,宏定义比jsp tag方便。同时内置了大量常用功能,比如html过滤,日期金额格式化等等。功能代码十分简洁,上手快,使用非常方便。

(二)FreeMarker的缺点

1.应用FreeMarker模板技术,在修改模板后,可能会出现无法及时生成html,会看到已经过期数据的情况。

2.FreeMarker模板技术在应用过程中,FreeMarker中的变量必须要赋值,如果不赋值,那么就会抛出异常。

3.FreeMarker的map限定key必须是string,其他数据类型无法操作。

4.FreeMarker不支持集群应用。为了编成的方便性,把序列化的东西都放到了Session中,如Session,request等,在开发的过程中确实方便,但如果将应用放到集群中,就会出现错误。

总的来说,freemarker优势还是很大的,关于它的缺点,特别是关于空值赋值的限制,有着相应的解决方案。可以看看我的其他博文。
最后关于性能方面,普通的页面freemarker性能相对于jsp(虽然只是几毫秒到十几毫秒的差距)。但是在复杂页面上(包含大量判断、日期金额格式化)的页面上,freemarker的性能比使用tag和el的jsp好。

你可能感兴趣的:(前端)