传统SpringMvc+JSP与SpringMvc+Freemarker的异同

简介: 也许都会有个这样的疑问,Freemarker确实可以做很多页面的事情,比如说一些页面逻辑,if else list,等等。可是实在是看不出他比jsp功能多出什么,或者说简化了什么。比如说页面显示逻辑,jsp的EL同样可以做到,而且感觉语法也差不多,也没有麻烦什么,再比如说$语法,el也有啊。真不明白它那里比jsp好了。还有如果用ftl模板文件,那么美工怎么去做?只有把生成的页面保存下来然后再设计css。分工是做到了,可是协调的问题有出现可以做很多页面的事情,比如说一些页面逻辑,if else list。

传统SpringMvc+JSP与SpringMvc+Freemarker的异同


一、传统SpringMvc+JSP的流程


   首先,来看看SpringMvc+JSP是如何对用户的访问行为进行相应的:(完整的SpringMvc流程在图片下,这里就不展开详细 说明了)


20180328115734921.jpg


SpringMvc的执行流程:https://blog.csdn.net/java_faep/article/details/72516590


关于JSP的很多弊端,这位前辈的文章(使用FreeMarker替换JSP的10个理由)写得非常棒,建议看一下(仅代表个人观点,如有不当之处请指正)。


二、SpringMvc+Freemarker的妙处


   如果你已经阅读过前面所说的文章,那么再来看看,SpringMvc+Freemarker是如何工作的(对比图)


20180328121339443.jpg


也许都会有个这样的疑问,Freemarker确实可以做很多页面的事情,比如说一些页面逻辑,if else list,等等。可是实在是看不出他比jsp功能多出什么,或者说简化了什么。比如说页面显示逻辑,jsp的EL同样可以做到,而且感觉语法也差不多,也没有麻烦什么,再比如说$语法,el也有啊。真不明白它那里比jsp好了。还有如果用ftl模板文件,那么美工怎么去做?只有把生成的页面保存下来然后再设计css。分工是做到了,可是协调的问题有出现可以做很多页面的事情,比如说一些页面逻辑,if else list,等等。。


   这里讲一下个人鄙见,在java领域,表现层技术主要有三种:jsp、freemarker、velocity。


   ① jsp是大家最熟悉的技术


       优点:

 

       1、功能强大,可以写java代码

       2、支持jsp标签(jsp tag)

       3、支持表达式语言(el)

       4、官方标准,用户群广,丰富的第三方jsp标签库

       5、性能良好。jsp编译成class文件执行,有很好的性能表现

       缺点:


       jsp没有明显缺点,非要挑点骨头那就是,由于可以编写java代码,如使用不当容易破坏mvc结构。

 

② velocity是较早出现的用于代替jsp的模板语言

     

       优点:


       1、不能编写java代码,可以实现严格的mvc分离

       2、性能良好,据说比jsp性能还要好些

       3、使用表达式语言,据说jsp的表达式语言就是学velocity的


       缺点:


       1、不是官方标准

       2、用户群体和第三方标签库没有jsp多。

       3、对jsp标签支持不够好

   ③ freemarker


       优点:


       1、不能编写java代码,可以实现严格的mvc分离

       2、性能非常不错

       3、对jsp标签支持良好

       4、内置大量常用功能,使用非常方便

       5、宏定义(类似jsp标签)非常方便

       6、使用表达式语言


       缺点:


       1、不是官方标准

       2、用户群体和第三方标签库没有jsp多


       选择freemarker的原因:


       1、性能。velocity应该是最好的,其次是jsp,普通的页面freemarker性能最差(虽然只是几毫秒到十几毫秒的差距)。但是在复杂页面上(包含大量判断、日期金额格式化)的页面上,freemarker的性能比使用tag和el的jsp好。

       2、宏定义比jsp tag方便

       3、内置大量常用功能。比如html过滤,日期金额格式化等等,使用非常方便

       4、支持jsp标签

       5、可以实现严格的mvc分离


以上就是鄙人的一些愚见,如有不对的地方,还请指正。

目录
相关文章
|
2月前
ssm(Spring+Spring mvc+mybatis)——updateDept.jsp
ssm(Spring+Spring mvc+mybatis)——updateDept.jsp
|
2月前
ssm(Spring+Spring mvc+mybatis)——showDept.jsp
ssm(Spring+Spring mvc+mybatis)——showDept.jsp
|
2月前
|
设计模式 前端开发 Java
了解 Spring MVC 架构、Dispatcher Servlet 和 JSP 文件的关键作用
Spring MVC 是 Spring 框架的一部分,是一个 Web 应用程序框架。它旨在使用 Model-View-Controller(MVC) 设计模式轻松构建Web应用程序。
72 0
|
2月前
|
Java 数据库 数据安全/隐私保护
基于SSM框架实现管科类考研自我管理系统(分前后台spring+springmvc+mybatis+maven+jsp+jquery)
基于SSM框架实现管科类考研自我管理系统(分前后台spring+springmvc+mybatis+maven+jsp+jquery)
|
2月前
|
Java BI 数据库
基于SSM框架实现面向小微企业的简历管理系统企业简历管理系统(分前后台spring+springmvc+mybatis+maven+jsp+css+echarts)
基于SSM框架实现面向小微企业的简历管理系统企业简历管理系统(分前后台spring+springmvc+mybatis+maven+jsp+css+echarts)
|
2月前
|
前端开发 Java 数据库
【Spring原理进阶】SpringMVC调用链+JSP模板应用讲解
【Spring原理进阶】SpringMVC调用链+JSP模板应用讲解
|
2月前
|
网络安全
ssh(Spring+Spring mvc+hibernate)——updateEmp.jsp
ssh(Spring+Spring mvc+hibernate)——updateEmp.jsp
|
2月前
|
网络安全
ssh(Spring+Spring mvc+hibernate)——updateDept.jsp
ssh(Spring+Spring mvc+hibernate)——updateDept.jsp
|
2月前
|
网络安全
ssh(Spring+Spring mvc+hibernate)——showEmp.jsp
ssh(Spring+Spring mvc+hibernate)——showEmp.jsp
|
2月前
|
网络安全
ssh(Spring+Spring mvc+hibernate)——showDept.jsp
ssh(Spring+Spring mvc+hibernate)——showDept.jsp