`
archangel
  • 浏览: 12161 次
文章分类
社区版块
存档分类
最新评论

FreeMarker和Jsp的应用范围

    博客分类:
  • java
阅读更多

最近要做新项目,想了解一下新的技术看看有没有可以改进的地方。于是学习了一下Struts2(之前一直用Struts1),接触到了FreeMarker,做了一些实验之后,对其功能很是疑惑。

 

从我自己测试以及看网上大家的评论可以得出FreeMarker具备以下优点:
1、逻辑分离好,View层不出现逻辑代码,可维护性好
2、美工和技术的工作分离
3、速度快,省去了Jsp编译过程
4、可以在IDE中运行,换句话说是可以进行单元测试
5、可以制作Macro


看完大量FreeMarker的资料以及大家对它的评论之后,依旧无法打消我心中的疑惑,针对以上5点我可以讲:

1、逻辑分离,无非是FreeMarker模版无法直接运行Java代码,强制要求所有数据必须预处理才能将结果传入View层做最终展现。我个人对这种过于纯粹的东西报以怀疑,实际工作中很多时候这种纯粹的逻辑分离很难实现。当一个长期维护的项目,不断增加显示逻辑之后,为了保持View层的这种强制的干净,而在Action层增加大量处理逻辑,我不觉得维护性会好(也许我理解错了,毕竟没有长期使用过)。就像前些年流行XML配置文件,分离了逻辑,后来发现太麻烦,又产生了Annotation消灭XML配置文件,无论分离还是聚合,逻辑是无法消灭的,总是要有一个地方放。所以到底是多写一些代码来保证View层看上去很美,还是把显示逻辑全写到View层,谁又能真正说清楚哪个更好。

我们到今天很多项目还在用最传统的Jsp,也还在用<%%>,也会有比较多的Java代码出现在Jsp页面上的情况,但是页面上的代码全都是显示相关的逻辑,都是最简单的Java代码,会Java的就能维护,学习成本基本为0,维护岂不是更好?更符合KISS原则。


2、美工和技术工作分离,我一直觉得这只是一个神话。到今天为止,我们公司美工和开发的合作方式基本是美工做界面原型图,把需要的图片切割出来,把需要的效果制作成CSS
交给技术,技术按照需要的效果进行编码制作HTML静态原型界面。因为,对于稍微复杂一点的页面,我相信没有哪个技术能忍受美工直接用DreamWeaver生成出来的代码。

3、速度快,算个优点吧,但是没有那么重要吧,对于现在的机器一般的Jsp编译也就一两秒钟的事情。多数的时间还是花在编写和测试上的。

4、可以在IDE中运行
,这个也算个小优点,但是界面开发更多时候还是以最终显示效果来进行测试的,毕竟比较直观。直接从生成的HTML找需要的信息和刷新一下浏览器看结果哪个更高效?

5、Macro,这个没有太多使用经验,就不做评论了,但是可以确定Jsp一定也能实现。


就以上的这些问题,我无法看到在大范围Web开发中FreeMarker相对于Jsp的优势。

 

我认为FreeMarker可以应用在以下场景:

1、AJAX请求的局部内容的生成,例如某个实时刷新的消息栏。可以称之为View层组件,干净,和主系统功能分离,可重用。

2、Javascript数据生成,甚至Javascript程序的生成。举例如Javascript中提示信息要做多语言处理,那么可以由FreeMarker动态生成,或生成多个静态Javascript文件。


3、后台动态文档生成,如群发邮件模板生成个性邮件。

 

任何技术都有他的适用范围,抛砖引玉,希望FreeMarker有丰富经验的兄弟多说说自己是如何使用FreeMarker的,以及使用中的一些优点和问题。

 

分享到:
评论
28 楼 archangel 2009-11-20  
case0079 写道
1。业务层返回一个flase给按钮,按钮就不显示,反之就显示。那不是一目了然的事情吗?
2。你难道没听说过井底之蛙?

Stop,不想讨论可以多看。到此为止吧。
27 楼 archangel 2009-11-20  
phoenixup 写道

用Freemarker对维护成本的降低是肯定的,但是学习Freemarker的成本是要考虑的,另外比JSP的学习成本高,这个我不同意,是Taglibs也属于JSP的范畴,你觉得想用好Taglibs成本高低,或者相关的美工作何感想。

完全不让技术看HTML,完全不让美工看代码,这种极端的情况是目前我觉得不太可能的存在,任何技术都是有学习和维护成本的。

Freemarker不是用来替代JSP的,Taglib和Macro的运用也同样是要慎重的,用抽象的描述来处理业务逻辑,对美工无法View的技术,对美工都是纠结。但是,Freemarker是作为视图技术的一种选择,一种补充,同JSP是同等的,但是无论以技术本身还是以应用场景来讲,它都是不太可能取代JSP的。

    最后,你用的爽觉得开发效率高了,腰不酸了,腿不疼了,你就用~如果你觉得反而更郁闷,那就不用,有人说C好,有人说JAVA好,还有人扯Python和Perl大旗,Ruby也有不少人站脚助威,问题在与你自己,我认为C/JAVA/PYTHON都好用,Ruby/Perl不好用,恐怕会N多人用板砖狠狠地拍我。。。但是我用了真的是郁闷。。。SO,用自己喜欢的擅长的。


FreeMarker我也觉得不应该是JSP的替代品,因为我感觉它的生命周期不会比JSP长。但是FreeMarker有他的领域,比如文档生成。我的困惑更多出在为什么很多人认为他是比JSP更优的View层选择。

当有一天模版技术更新了,FreeMarker被淘汰了。而JSP依然在技术人带有些许极端主义色彩的崇尚纯粹的骂声中存在着的时候(一如JSP在这十几年中坚强存在一样),那些大规模采用FreeMarker作为View层技术的项目咋维护呢?想起来都替他们发愁...
26 楼 case0079 2009-11-20  
1。业务层返回一个flase给按钮,按钮就不显示,反之就显示。那不是一目了然的事情吗?
2。你难道没听说过井底之蛙?
25 楼 jansel 2009-11-20  
archangel 写道
case0079 写道

1。我说view层和业务层是能完全分离的。你可以举个反例推翻这个论断。
    比如生产车间生产了一辆汽车。他完全不需要知道销售部门如何包装推销的。

2。你只能想到这样不表示就只能这样。你应该问问别人为什么想到了呢。你觉得不能分开因为你根本分不清前台程序员和后台程序员各自需要什么


1. 什么叫“完全分离”?举例子可以啊,页面上某一个按钮要通过权限判断当前用户是否可见,怎么把权限逻辑完全抽离view层?就算把主体判断部分写成tag或者macro,页面上一样要调用,怎么算完全分离?

生产不需要知道销售怎么包装,但是销售能不知道生产出来的产品技术特点吗?反过来销售从市场上拿到的反馈技术改进的反馈生产不需要知道吗?

2. 莫信神话,兄弟。做技术最忌信神话。就算有人告诉你他能,那也可能他在吹牛。美工和技术分离前边已经说了不少了,不说了。但是和你说的前后台程序员有啥关系?我有点糊涂。


1.如果页面中判断该按钮可见不可见都算逻辑的话,那我只能说LZ想的太完美了。按钮可见不可见,是否要变灰,也只要判断Button的id是否等于某个String就可以了,哪怕这个String是一个表达式的结果,或者是一个权限码,但是UI仅仅理解为一个String。如果LZ非要把这个String理解为权限的东东,那就有点过了。

举个例子,分页展示时要判断是否是首页,是否是尾页,但是LZ不在UI中判断吗?那么这种判断是否也是什么逻辑呢?

2.美工技术分离,也就是人能分开,活儿很难分开。想让什么美工管美工的,技术管技术的,基本上都是扯淡。
24 楼 archangel 2009-11-20  
case0079 写道

1。我说view层和业务层是能完全分离的。你可以举个反例推翻这个论断。
    比如生产车间生产了一辆汽车。他完全不需要知道销售部门如何包装推销的。

2。你只能想到这样不表示就只能这样。你应该问问别人为什么想到了呢。你觉得不能分开因为你根本分不清前台程序员和后台程序员各自需要什么


1. 什么叫“完全分离”?能做到吗?举例子可以啊,页面上某一个按钮要通过权限判断当前用户是否可见,怎么把权限逻辑完全抽离view层?就算把主体判断部分写成tag或者macro,页面上一样要调用,怎么算完全分离?

生产不需要知道销售怎么包装,但是销售能不知道生产出来的产品技术特点吗?反过来销售从市场上拿到的技术改进的反馈生产不需要知道吗?

2. 莫信神话,兄弟。做技术最忌信神话。就算有人告诉你他能,那也可能他在吹牛。美工和技术分离前边已经说了不少了,不说了。但是和你说的前后台程序员有啥关系?我有点糊涂。
23 楼 archangel 2009-11-20  
Vstar 写道
我比较赞同楼主的观点。
之前公司的系统都是使用JSP作为模板的,半年前换成了Freemarker,感觉换了Freemarker后很多原本简单的工作变的复杂了很多。

...

对于邮件模板和生成的文档等我还是坚持用Freemaker,毕竟这些JSP模板还实现不了。


嗯,我也觉得是,文档模版部分,Freemarker是很好的选择。
22 楼 energykey 2009-11-20  
说实话我现在把ftl但jsp在用,原来是后台set到request或者session里,然后el表达式拿出来,有逻辑jstl搞一下。

现在也是放到request里,前台也是${}这样拿,也能直接访问对象。

我也觉得是我水平不够。

macro应该是个很好得东西,不过暂时还不知道从何下手。
21 楼 achenbj 2009-11-20  
习惯问题,freemarker将js和css分离比较好。
拿来静态页面之后很快就可以加成动态的页面。
20 楼 phoenixup 2009-11-20  
archangel 写道
xiaobin0530 写道
引用
、Macro,这个没有太多使用经验,就不做评论了,但是可以确定Jsp一定也能实现。
jsp还真没有办法实现

Why呢?你要说不如Macro方便我信,但是你要说一个用Java实现出来的技术用Java原始语言做不到,这个...还真有点妖怪了

的确是能实现,但是费力的程度就不太一样了,比如:
<#macro page page action >
   <form action="${action}" method="POST">
   <#if page.isFirst()>
   <#else>
   <span>
   <a href="${action}?pageNumber=${page.getPreviousPageNumber()}&pageSize=${page.getPageSize()}">上页</a>
   </span>
   </#if>
   <span>第${page.getThisPageNumber()}页</span>
   <#if page.isLast()>
   <#else>
   <span>
   <a href="${action}?pageNumber=${page.getNextPageNumber()}&pageSize=${page.getPageSize()}">下页</a>
   </span>
   </#if>
   <span>共 ${page.getLastPageNumber()} 页</span>
   <span> ${page.getPageSize()}条/页 </span>
   <input type="hidden" name="pageSize" value="30"/>
   <select name="pageNumber">
       <script>
       for(var i=1;i<=${page.getLastPageNumber()};++i){
          document.write("<option value='"+i+"'>"+i+"</option>");
       }
       </script>
   </select>
   <input type="submit" value="跳转"/>
   </form>
</#macro>

比如这是一个分页工具条,提供前一页,后一页,末页,首页,跳转页等基本功能,所有的页面使用:
<@p.page page=page action="getredo.action"/>

    就可以实现基本分页的功能,先不考虑代码的优雅型,如果不使用第三方的JSP Taglib你认为做这样一个菜单要花费多少力气,另外,即便是上面的Macro,美工稍加训练也可以修改,系统不用重启就可以看到效果,Taglib呢?会怎样~
例子是一个方面,不能代表全部,但是可以说明一些问题~

补充:page的包装Model接口定义,类似:
import java.util.List;
/**
 * 分页信息接口
 * Date: 2004-08-01
 * Time: 09:06
 *
 * @author phoenixup
 */
public interface Page<T> {
    /**
     * @return 是否是首页(第一页),第一页页码为1
     */
    public boolean isFirst();
    /**
     * @return 是否是最后一页
     */
    public boolean isLast();
    /**
     * @return 是否有下一页
     */
    public boolean hasNext();

    /**
     * @return 是否有上一页
     */
    public boolean hasPrevious();
    /**
     * @return 当前页的数据内容
     */
    public List<T> getThisPageElements();
    /**
     * @return 数据总的条目数量
     */
    public int getTotalNumberOfElements();
    /**
     * @return 当前页的首条数据的行编码
     */
    public int getFirstElementNumber();
    /**
     * @return 当前页的末条数据的行编码
     */
    public int getLastElementNumber();
    /**
     * @return 当前页编码
     */
    public int getPageNumber();
    /**
     * @return 下一页编码
     */
    public int getNextPageNumber();
    /**
     * @return 上一页编码
     */
    public int getPreviousPageNumber();
    /**
     * @return 获取最后一页页码,也就是总页数
     */
    public int getLastPageNumber();
    /**
     * @return 每一页显示的条目数
     */
    public int getPageSize();
}
19 楼 phoenixup 2009-11-20  
archangel 写道

写<%%>不happy,但是从一个项目整体维护的角度来说,用FreeMarker这样的技术真的可以减少维护成本吗?相对于JSP而言高不少的学习成本和开源技术的易淘汰性可能直接导致维护成本大幅升高。真的让一个严谨型项目去选型,估计还是要回归到JSP和JSTL这种通用广泛型官方技术上来。

分层不是说啥分得越细越开就越好的,层分得合不合适,是技术人员个人思路和能力问题,和应用的技术关系不大。

作为被众多人推崇认为是JSP替代品的新技术,我在想到底FreeMarker能比JSP带哪些优点能让人下决心把JSP替换掉。如果仅仅是所谓分层更清晰,那用现在各种富客户端技术直接用AJAX读取服务端数据能让页面HTML化,前后台完全分离岂不更优?那大面积在项目中应用FreeMarker的理由在哪?

用Freemarker对维护成本的降低是肯定的,但是学习Freemarker的成本是要考虑的,另外比JSP的学习成本高,这个我不同意,是Taglibs也属于JSP的范畴,你觉得想用好Taglibs成本高低,或者相关的美工作何感想。
引用

哪个公司做到了?我还是那句话,能做到不让技术看HTML,除非招几个懂技术的美工。这种搭界的工作,一定是有交叠的,一拨人干净了就得有另一波人忙着擦屁股。

完全不让技术看HTML,完全不让美工看代码,这种极端的情况是目前我觉得不太可能的存在,任何技术都是有学习和维护成本的。

引用

很多人说快,我能想到的快可能就是减少了JSP第一次编译时间。改天我也测测。

测试报告找不到了,应该说和JSP不相上下,当然JSP要预编译,否则肯定不是Freemarker的对手。


引用

这个很多人说好,想来肯定是比Taglib用着省心的。可这也不能成为替代JSP的一个理由,纠结啊...

Freemarker不是用来替代JSP的,Taglib和Macro的运用也同样是要慎重的,用抽象的描述来处理业务逻辑,对美工无法View的技术,对美工都是纠结。但是,Freemarker是作为视图技术的一种选择,一种补充,同JSP是同等的,但是无论以技术本身还是以应用场景来讲,它都是不太可能取代JSP的。

    最后,你用的爽觉得开发效率高了,腰不酸了,腿不疼了,你就用~如果你觉得反而更郁闷,那就不用,有人说C好,有人说JAVA好,还有人扯Python和Perl大旗,Ruby也有不少人站脚助威,问题在与你自己,我认为C/JAVA/PYTHON都好用,Ruby/Perl不好用,恐怕会N多人用板砖狠狠地拍我。。。但是我用了真的是郁闷。。。SO,用自己喜欢的擅长的。
18 楼 case0079 2009-11-20  
archangel 写道
case0079 写道
需要考虑几个问题。
1。view层真的需要调用JAVA程序吗?
   首先view不应该调用business代码,最多是调用一些格式化的代码。那么只要能实现一个格式化的框架就能使view完全和java无关。

2.如果技术要看美工的DreamWeaver代码那还叫技术和美工分离吗?

3。4。5。是不相上下的。


1.View层逻辑真的可以完全分离吗?分离到哪?分离出去之后看两边的程序才知道做了个啥很好吗?只是为了保持view层看上去很美?

2.要真做到技术完全不看美工生成的HTML,我能想到的唯一方法就是招俩懂技术的美工,同样的问题,你干净了,别人呢?活总是要有人干的。


1。我说view层和业务层是能完全分离的。你可以举个反例推翻这个论断。
    比如生产车间生产了一辆汽车。他完全不需要知道销售部门如何包装推销的。

2。你只能想到这样不表示就只能这样。你应该问问别人为什么想到了呢。你觉得不能分开因为你根本分不清前台程序员和后台程序员各自需要什么
17 楼 Vstar 2009-11-19  
我比较赞同楼主的观点。
之前公司的系统都是使用JSP作为模板的,半年前换成了Freemarker,感觉换了Freemarker后很多原本简单的工作变的复杂了很多。

首先说逻辑和页面分离问题,之前的JSP也几乎都是分离的,只是在必要的情况下使用尽可能少的脚本。这一点上没觉得Freemarker有什么优势。

第二个是macro的问题,不知道为什么,我更偏向于JSTL里的<c:import>,使用这个标签同样可以达到macro的作用,甚至可以向一段macro中作为参数传入多段不同的片段,并在macro中的不同位置显示出来。比如可以用做一段head部分的macro,在页面使用这个macro时,可以向这个macro中传入标题,css和javascript片段,在head macro中的不同位置加以显示。这个Freemarker的macro如何做到,我到现在还没有找到方法。不同的是通过<c:import>使用macro的时候,在一个jsp文件里只能写一个macro,而freemarker一个文件里可以写多个macro。

第三个错误提示,楼上的同学说freemarker错误提示很强大,这似乎是网上极为流行的说法。而在使用中我发现JSP的错误提示也不弱,一般的问题在出错的页面上都能准确定位到JSP的具体行号。而反倒是freemarker经常一片黄,错误信息多的让人手足无措。

第四点对于速度,单独在一个页面上写循环语句freemarker显然是不如jsp的,这个我做过测试。而对于Freemarker+模板缓存而言我没有做过测试,到目前为止还没有特殊的感觉。

第五点不能不提IDE,IDEA要收费的,我没有用过。Eclipse的Freemarker只能算是语法可以加亮而已,有时还会加错地方。牺牲了javascript、css语法提示,还有html检验,感觉很不合算。NetBeans下就不用说了,连Freemarker的可用插件都没有。

对于邮件模板和生成的文档等我还是坚持用Freemaker,毕竟这些JSP模板还实现不了。
16 楼 archangel 2009-11-19  
key232323 写道
补充一句……从2006年接触freemarker以后,jsp几乎就不用了……

给个理由吧,为啥用了FreeMarker之后几乎不用JSP了?我咋用了用之后没看出太多优点呢。
15 楼 archangel 2009-11-19  
xiaobin0530 写道
引用
、Macro,这个没有太多使用经验,就不做评论了,但是可以确定Jsp一定也能实现。
jsp还真没有办法实现

Why呢?你要说不如Macro方便我信,但是你要说一个用Java实现出来的技术用Java原始语言做不到,这个...还真有点妖怪了
14 楼 archangel 2009-11-19  
引用
业务逻辑与视图展示分离思维在目前来讲,是大家比较认可和赞成的。如果你认为在JSP写<%%>是一种很HAPPY的事情,恐怕同意你的兄台不是太多,J2EE的开发中分层的目的就是减少开发、维护的成本,使系统的结构更加清晰优美,这点你同意吗?

写<%%>不happy,但是从一个项目整体维护的角度来说,用FreeMarker这样的技术真的可以减少维护成本吗?相对于JSP而言高不少的学习成本和开源技术的易淘汰性可能直接导致维护成本大幅升高。真的让一个严谨型项目去选型,估计还是要回归到JSP和JSTL这种通用广泛型官方技术上来。

分层不是说啥分得越细越开就越好的,层分得合不合适,是技术人员个人思路和能力问题,和应用的技术关系不大。

作为被众多人推崇认为是JSP替代品的新技术,我在想到底FreeMarker能比JSP带哪些优点能让人下决心把JSP替换掉。如果仅仅是所谓分层更清晰,那用现在各种富客户端技术直接用AJAX读取服务端数据能让页面HTML化,前后台完全分离岂不更优?那大面积在项目中应用FreeMarker的理由在哪?

引用

这个不是神话,很多公司都可以做到,在多种视图技术(JSP(Sitmesh,Tiles)、Freemarker、Velocity、Facelets等等)的支持下,已经可以做到美工就是改改Css和Image,程序员只顾着自己垒垒砖头就OK~~但是完全不交互是不可能的~


哪个公司做到了?我还是那句话,能做到不让技术看HTML,除非招几个懂技术的美工。这种搭界的工作,一定是有交叠的,一拨人干净了就得有另一波人忙着擦屁股。

引用

速度吗,其实不是很快,我的测试没有JSP快,但是慢的也不多。

支持Freemarker的IDE很成熟,比如Intellij IDEA、Eclipse,不过自定义的宏需要一些额外的修改,在IDEA中修改Template Files可以让Freemarker的提示更高效。


很多人说快,我能想到的快可能就是减少了JSP第一次编译时间。改天我也测测。


引用

这个嘛。就是谁用谁知道了,不包治百病但是绝对有效!=.=


这个很多人说好,想来肯定是比Taglib用着省心的。可这也不能成为替代JSP的一个理由,纠结啊...
13 楼 archangel 2009-11-19  
忘了,要先感谢一下,谢谢兄弟们捧场,哇哈哈!
12 楼 archangel 2009-11-19  
case0079 写道
需要考虑几个问题。
1。view层真的需要调用JAVA程序吗?
   首先view不应该调用business代码,最多是调用一些格式化的代码。那么只要能实现一个格式化的框架就能使view完全和java无关。

2.如果技术要看美工的DreamWeaver代码那还叫技术和美工分离吗?

3。4。5。是不相上下的。


1.View层逻辑真的可以完全分离吗?分离到哪?分离出去之后看两边的程序才知道做了个啥很好吗?只是为了保持view层看上去很美?

2.要真做到技术完全不看美工生成的HTML,我能想到的唯一方法就是招俩懂技术的美工,同样的问题,你干净了,别人呢?活总是要有人干的。
11 楼 key232323 2009-11-19  
补充一句……从2006年接触freemarker以后,jsp几乎就不用了……
10 楼 key232323 2009-11-19  
macro不是一般的强悍,嵌套4,5层的macro,稍微风格统一的一组页面(比如几百个),一个总体的macro就够了。jsp要include就太麻烦了

freemarker除了html generator以外,还能做很多其他事情的

最近公司要做一个eclipse sap-r3 abap调用插件,我就打算用fm做代码生成的,配合正则和macro,很好用
9 楼 xiaobin0530 2009-11-19  
引用
、Macro,这个没有太多使用经验,就不做评论了,但是可以确定Jsp一定也能实现。
jsp还真没有办法实现

相关推荐

    freemarker概述

    #### 三、FreeMarker的适用范围 1. **Web开发**: FreeMarker非常适合与MVC架构的Web应用框架(如Struts)结合使用,作为视图组件。 2. **非Web应用**: 由于FreeMarker与容器无关,它可以被轻松地应用于桌面应用或...

    freemarker 中午手册

    - **架构兼容性**:Freemarker 与容器无关,这意味着它不仅可以在 Web 环境下运行,还可以在任何 Java 应用环境中使用,这极大地增强了它的灵活性和适用范围。 - **成本优势**:Freemarker 是开源且免费的,这使得它...

    freemarker中文手册.pdf

    - **适用场景**:虽然最初设计用于生成HTML网页,尤其是配合MVC架构的应用程序,但其应用范围广泛,不仅限于Web开发领域。 - **特点**: - **与容器无关**:FreeMarker不依赖于任何特定的Web容器,如Tomcat或Jetty...

    FreeMarker

    ### FreeMarker概述 FreeMarker是一种基于模板的引擎技术,它主要负责将...综上所述,FreeMarker作为一个强大的模板引擎,在Web开发和其他应用场景中都表现出色,其丰富的特性和灵活性使其成为一个不可或缺的工具。

    JSP应用开发详解

    在这个"JSP应用开发详解"的主题中,我们将深入探讨JSP的核心概念、工作原理以及实际应用。 1. JSP核心概念 - JSP页面:JSP页面由HTML或XML标记和嵌入的Java代码组成,服务器负责解析并执行这些Java代码。 - JSP...

    freemarker中文手册

    同时,它的应用范围不仅限于Web环境,也适用于非Web场景,如桌面应用或命令行工具中的文本生成任务。 #### 二、Freemarker的关键特性 1. **通用性与灵活性**:Freemarker的设计理念之一是高度通用,能适应多种文本...

    JSP网页模板

    例如FreeMarker、Velocity和Thymeleaf。 2. **使用模板引擎的优势**: - 更好的前后端分离:模板引擎处理动态内容,HTML设计师无需关心Java代码。 - 提高开发效率:模板语法简洁,易于理解和编写。 - 优化性能:...

    JSP转换HTML

    2. **模板引擎**:为了更有效地管理JSP页面,开发者经常使用模板引擎,如FreeMarker或Velocity。这些模板引擎允许开发者将HTML结构与Java代码分离,便于转换。转换时,模板引擎会解析JSP文件,执行Java表达式,并...

    freemarker中文API手册.pdf

    - **适用范围**:FreeMarker不仅仅是一个Web应用框架,更适合作为其组成部分,例如作为Model2框架(如Struts)中的视图组件。同时,它还支持在非Web环境中应用,比如用于桌面应用或其他非Web项目。 #### 二、核心...

    jsp小程序案例分析

    EL提供了一种简洁的方式来访问页面范围内的对象和其属性,简化了JSP中的数据绑定。 6. **JSTL(JavaServer Pages Standard Tag Library)** JSTL是一组标准标签库,用于增强JSP的功能,例如处理XML、查询数据库、...

    JSP速成教程书籍下载

    4. **application**:全局应用程序范围的对象,适用于所有用户共享数据。 5. **pageContext**:提供对当前页面所有作用域的访问。 6. **out**:用于向客户端输出内容。 7. **exception**:捕获并处理页面中的异常。 ...

    freemarker 中文手册

    - **适用范围**: - 不是 Web 应用框架,但可以作为 Web 应用框架的一个组成部分使用,如 Model2 架构中的视图组件。 - 与容器无关,因此既适用于 Web 应用程序环境,也适用于非 Web 的应用程序环境。 - **许可证*...

    springboot整合jsp

    而JSP(JavaServer Pages)作为传统的动态网页技术,虽然在现代Web应用中逐渐被更先进的视图技术如Thymeleaf、Freemarker等取代,但在很多项目中仍有其应用场景。本篇文章将深入探讨如何在Spring Boot项目中整合JSP...

    Freemarker开发指南

    - **适用范围**: 不仅仅用于 Web 开发,也可以应用于非 Web 的应用程序环境中。 - **与其他框架的关系**: 可以作为 Model2 架构(例如 Struts)的视图组件。此外,尽管 Freemarker 是一个独立的组件,但也可以与 JSP...

    JSP项目+Struts框架实现

    除了JSP和Struts,项目可能还涉及到了其他技术,如Servlet、JDBC用于数据库连接,以及可能的模板引擎如FreeMarker或Velocity来生成更复杂的动态视图。此外,为了提高用户体验,可能还应用了AJAX进行异步通信,以及...

    JSP由浅入深(CHM)

    随着Web开发的进步,虽然JSP仍被广泛使用,但很多现代Web框架如Spring MVC、Struts2等已经提供了更高级的视图技术,如Thymeleaf和FreeMarker。这些技术在复杂应用中提供了更好的性能和灵活性。 综上所述,"JSP...

    JSP 技术大全(PDG)

    JSP技术大全(PDG)涵盖的范围广泛,包括JSP的基础概念、语法、生命周期、内置对象、指令、表达式、脚本元素、EL(Expression Language)、JSTL(JSP Standard Tag Library)以及MVC设计模式在JSP中的应用等。...

    JSP博客系统(论文)

    《JSP博客系统》 本项目是一篇关于JSP博客系统的详细论文,涵盖了从系统设计到实现的全过程,旨在探讨如何运用Java...通过学习和理解这篇论文,读者不仅可以掌握JSP的实战技巧,还能对Web应用开发流程有更深入的理解。

Global site tag (gtag.js) - Google Analytics