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

一、传统SpringMvc+JSP的流程

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

传统SpringMvc+JSP与SpringMvc+Freemarker的异同_第1张图片

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

 

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

 

 

二、SpringMvc+Freemarker的妙处

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

传统SpringMvc+JSP与SpringMvc+Freemarker的异同_第2张图片

    也许都会有个这样的疑问,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分离

 

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

你可能感兴趣的:(Java基础)