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

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的,以及使用中的一些优点和问题。

 

分享到:
评论
48 楼 key232323 2009-11-22  
如果只是用c fmt or **这些标签,是简洁了,但功能上就没法和fm比了
47 楼 key232323 2009-11-22  
吐血——在html中,markup tag不放在第一位放在哪(jsp taglib是compiled markup tag,不算)?

技术上再屏蔽html/js/css,比如**bean,**taglib,结果那些web uier只会增加更多的学习成本,如果做个改动?还要修改jsp tag source?多麻烦啊
46 楼 番茄有益 2009-11-21  
case0079 写道
番茄有益 写道

把中文变成拼音显示的问题,我也插一句。看怎么考虑这个问题,我认为在哪里解决都是合理的,可以认为这是一个显示逻辑,数据我给出来了,页面怎么显示是页面的事情。你也可以说,我就要要一个拼音,你需要直接给我结果。
扩展一下,也许按照老外的习惯,把名放到前面呢,都推给后台处理,没有太大的必要。

如同上面那个问题,一个Date给出来,在zh_CN 下应该是2009-11-20,在en_US 下应该是 11/20/09 ,这个也可以理解为页面的显示逻辑。

关键有些时候在JSP上想动些小手脚,还是比较方便的。什么都弄到Controller里,确实没有必要啊。

软件以用为本,以实用简洁易维护为原则,只要不是故意违反,没有那么多限制吧。

用JSP2.0 + tagfile ,也是很好的方案,我认为也不比Freemarker差到哪里去,用过的人都应该很清楚,我考虑用FM生成的东西更好打包管理容易,更方便其他项目重用。


1.在JSP上想动些小手脚,确实是比较方便的。就好象当时不分mvc一样也是很自由的。项目中临时使用一下确实不为过。

2。但是做软件还是要精益求精的,那些格式化的东西放Controller和放Freemarker/JSP都不好,难道就不能放别的地方吗?我觉得对于格式化的东西完全可以做一个框架出来。



我的理解是,对于格式化的东西,是一个 内容 + 形式的 问题, 我想 fmt: Tag 提供了一个思路, 或许按照一个 指定的 形式 格式化内容 也算是个较好的办法

如上面提到的显示拼音的问题,可以是 <yourtag:format value="" type="pinyin"> 这么个意思。
45 楼 蔡华江 2009-11-21  
xiaobin0530 写道
archangel 写道
xiaobin0530 写道
引用
、Macro,这个没有太多使用经验,就不做评论了,但是可以确定Jsp一定也能实现。
jsp还真没有办法实现

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

我是说jsp实现不了。你用纯jsp标签实现来看看。

Macro是基于freemarker表达式,这样比较就不能强求jsp要遵循一点表达式不用的规则。
使用jstl标签库也是能实现相似的功能。
<c:import>和<c:param>
在一个页面中的,到是没想到什么方案,不过用scriptlet到是有可能
44 楼 xiaobin0530 2009-11-21  
archangel 写道
xiaobin0530 写道
引用
、Macro,这个没有太多使用经验,就不做评论了,但是可以确定Jsp一定也能实现。
jsp还真没有办法实现

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

我是说jsp实现不了。你用纯jsp标签实现来看看。
43 楼 case0079 2009-11-21  
番茄有益 写道

把中文变成拼音显示的问题,我也插一句。看怎么考虑这个问题,我认为在哪里解决都是合理的,可以认为这是一个显示逻辑,数据我给出来了,页面怎么显示是页面的事情。你也可以说,我就要要一个拼音,你需要直接给我结果。
扩展一下,也许按照老外的习惯,把名放到前面呢,都推给后台处理,没有太大的必要。

如同上面那个问题,一个Date给出来,在zh_CN 下应该是2009-11-20,在en_US 下应该是 11/20/09 ,这个也可以理解为页面的显示逻辑。

关键有些时候在JSP上想动些小手脚,还是比较方便的。什么都弄到Controller里,确实没有必要啊。

软件以用为本,以实用简洁易维护为原则,只要不是故意违反,没有那么多限制吧。

用JSP2.0 + tagfile ,也是很好的方案,我认为也不比Freemarker差到哪里去,用过的人都应该很清楚,我考虑用FM生成的东西更好打包管理容易,更方便其他项目重用。


1.在JSP上想动些小手脚,确实是比较方便的。就好象当时不分mvc一样也是很自由的。项目中临时使用一下确实不为过。

2。但是做软件还是要精益求精的,那些格式化的东西放Controller和放Freemarker/JSP都不好,难道就不能放别的地方吗?我觉得对于格式化的东西完全可以做一个框架出来。

42 楼 蔡华江 2009-11-21  
从为不否定jsp+tagfile不是个很好的方案,甚至可以说是个最强大的解决方案。
如果做传统的web应用,基本上可以认为freemarker没有什么优势,因为第一IDE支持不好,第二这个时候的freemarker通常还得借助于taglib。
但是如果作ajax的web应用的话,那么freemarker的优势应该还是明显的。毕竟对于ajax应用来说,数据通常就是xml或者json。freemarker的表达式可以方便地支持数据展示,而jsp通常要借助于taglib。另外一点,比如输出xml数据,freemarker的输出通常可以由用户进行扩展,而jsp的输出总是比较多的是通过定义,就简洁上来说,还是freemarker略胜一些。
顺便说一句,taglib无疑功能强大,一些用于格式转化的taglib先不说,但是对于一些揉和了业务控制、权限管理的taglib,传统web页面中广泛支持无可厚非,但是在ajax应用中如果过多的依赖话,是不是可以认为在业务处理得不完善呢。
41 楼 archangel 2009-11-21  
番茄有益 写道

把中文变成拼音显示的问题,我也插一句。看怎么考虑这个问题,我认为在哪里解决都是合理的,可以认为这是一个显示逻辑,数据我给出来了,页面怎么显示是页面的事情。你也可以说,我就要要一个拼音,你需要直接给我结果。
扩展一下,也许按照老外的习惯,把名放到前面呢,都推给后台处理,没有太大的必要。

如同上面那个问题,一个Date给出来,在zh_CN 下应该是2009-11-20,在en_US 下应该是 11/20/09 ,这个也可以理解为页面的显示逻辑。

关键有些时候在JSP上想动些小手脚,还是比较方便的。什么都弄到Controller里,确实没有必要啊。

软件以用为本,以实用简洁易维护为原则,只要不是故意违反,没有那么多限制吧。

用JSP2.0 + tagfile ,也是很好的方案,我认为也不比Freemarker差到哪里去,用过的人都应该很清楚,我考虑用FM生成的东西更好打包管理容易,更方便其他项目重用。

我跟你想法很像,简单,方便,清晰就OK,没有太多的约束。

原则这东西有时候很让人挠头。就像我们老祖宗说大丈夫宁折不弯是美德,但是改天他又说大丈夫要能屈能伸...我靠,到底怎样?...

所以我选技术就三点,1满足需求,2用着方便,3未来不给我找太多麻烦。对于Web开发来讲JSP基本满足,FreeMarker呢?
40 楼 archangel 2009-11-21  
引用

1.定位不一样的,jsp是server page,要有server code的,虽然现在更多是view角色,但它很轻易就做到独大了,我觉得这是越权。
2.scripty,fm对象属性、方法访问比较简洁,语法也简单,让一个美工来读规范的fm和jsp代码,一般fm更容易理解。groovy有gsp,但他们(和jsp)都把page中的dyn code(java、groovy代码)放在第一位,html tag放在此为(个人感觉),而fm始终是html html(做web时候)——因为我就是用来生成html的么,比较下macro和taglib的设计思想就知道了。

我觉得这个更多是感觉问题,最终结果是一样的。

引用

3.性能上,fm缓存一下很方便的,延迟refresh load,生成后的html的cache直接就在配置里配就好了,jsp好像要第三方做才可以。

这个不错,相对方便。但是页面Cache多见于互联网应用,对于企业应用来讲,访问量大而又对实时性要求不高的情况并不多见。更多情况下在用的是Data Cache。

引用

4.还是macro,jsp的include static / dyn实现方式,可重用性不如macro高。

一般情况下重用性只和设计有关,和技术无关。

引用

5.个人喜欢——java么,你就管好server端的事儿,要想多管的前端的,就弄个web bean,整一套东东过来(jsf貌似要这么做,zk也做得不错),gwt/dwr等更event-driven dev的方式不太感冒,但是真整一套过来,灵活性就不好说了(我正在为努力适应web dynpro而努力,优点体会)——还是喜欢markup + js这种(svg > flash flex > **activex,在我眼中)简洁明了的关系和开发模式。

个人喜欢不算理由...
39 楼 archangel 2009-11-21  
holan 写道

保持controller的纯洁。
我不相信有谁能完全把页面剥得没有逻辑。
比如假如我要输出一个客户列表,假如这个客户是90后,需要输出非主流
你把逻辑写在controller里?从hibernate拿到客户List,你再遍历这个List,遇到90后,在客户的某个域里写上非主流?
那你这个客户的Model是不是不纯粹了?多了一个字段叫 是否非主流?还多遍历了一次List
这种逻辑是不是只能在视图层面上做?
这个例子很简单,但是以此类推,肯定会有逻辑在视图上做。
不是所有的逻辑都放在controller里才是好的


这位兄弟说的有一定道理。为什么大家会对V层的“干净”如此苛求,而忽略C的感受。我觉得原因有两个:
1、V层代码历来不好看,达不到Java程序员所追求的优雅。
2、MVC结构中,人们对M和V的认识相对清晰,C相对模糊。

M和V,边界清晰。C除了前后台交互控制,数据转换,还应该做什么?为了追求V的“干净”,就把原本是V的事情推给C,然后宣称天下太平,维护性提升。有一天当C变得臃肿起来之后呢?要知道这种情况下C里背下的V层的代码不结合V来看很大程度上是不可理解的。

更何况很多原本就是V中的逻辑,因为要强迫搬出去很可能产生大量额外,纯技术逻辑的代码。这种代码是可读性最差的。维护成本怎么降低呢?
38 楼 番茄有益 2009-11-20  

把中文变成拼音显示的问题,我也插一句。看怎么考虑这个问题,我认为在哪里解决都是合理的,可以认为这是一个显示逻辑,数据我给出来了,页面怎么显示是页面的事情。你也可以说,我就要要一个拼音,你需要直接给我结果。
扩展一下,也许按照老外的习惯,把名放到前面呢,都推给后台处理,没有太大的必要。

如同上面那个问题,一个Date给出来,在zh_CN 下应该是2009-11-20,在en_US 下应该是 11/20/09 ,这个也可以理解为页面的显示逻辑。

关键有些时候在JSP上想动些小手脚,还是比较方便的。什么都弄到Controller里,确实没有必要啊。

软件以用为本,以实用简洁易维护为原则,只要不是故意违反,没有那么多限制吧。

用JSP2.0 + tagfile ,也是很好的方案,我认为也不比Freemarker差到哪里去,用过的人都应该很清楚,我考虑用FM生成的东西更好打包管理容易,更方便其他项目重用。
37 楼 key232323 2009-11-20  
archangel 写道
key232323 写道
补充一句……从2006年接触freemarker以后,jsp几乎就不用了……

给个理由吧,为啥用了FreeMarker之后几乎不用JSP了?我咋用了用之后没看出太多优点呢。


html是markup lang,
template engine很适合这种markup lang——jsp当然也可以容易生成这些——但是

1.定位不一样的,jsp是server page,要有server code的,虽然现在更多是view角色,但它很轻易就做到独大了,我觉得这是越权。

2.scripty,fm对象属性、方法访问比较简洁,语法也简单,让一个美工来读规范的fm和jsp代码,一般fm更容易理解。groovy有gsp,但他们(和jsp)都把page中的dyn code(java、groovy代码)放在第一位,html tag放在此为(个人感觉),而fm始终是html html(做web时候)——因为我就是用来生成html的么,比较下macro和taglib的设计思想就知道了。

3.性能上,fm缓存一下很方便的,延迟refresh load,生成后的html的cache直接就在配置里配就好了,jsp好像要第三方做才可以。

4.还是macro,jsp的include static / dyn实现方式,可重用性不如macro高。

5.个人喜欢——java么,你就管好server端的事儿,要想多管的前端的,就弄个web bean,整一套东东过来(jsf貌似要这么做,zk也做得不错),gwt/dwr等更event-driven dev的方式不太感冒,但是真整一套过来,灵活性就不好说了(我正在为努力适应web dynpro而努力,优点体会)——还是喜欢markup + js这种(svg > flash flex > **activex,在我眼中)简洁明了的关系和开发模式。

6.熟悉fm的继续补充,说错了地方大家拍砖指正
36 楼 case0079 2009-11-20  
这种需求和把20091120显示为2009年11月20日有本质区别吗?
如果你的需求变成:把中文变成拼音显示。你觉得应该怎么样实现呢?
35 楼 holan 2009-11-20  
case0079 写道
那么页面嵌入代码的好处是什么?

保持controller的纯洁。
我不相信有谁能完全把页面剥得没有逻辑。
比如假如我要输出一个客户列表,假如这个客户是90后,需要输出非主流
你把逻辑写在controller里?从hibernate拿到客户List,你再遍历这个List,遇到90后,在客户的某个域里写上非主流?
那你这个客户的Model是不是不纯粹了?多了一个字段叫 是否非主流?还多遍历了一次List
这种逻辑是不是只能在视图层面上做?
这个例子很简单,但是以此类推,肯定会有逻辑在视图上做。
不是所有的逻辑都放在controller里才是好的
34 楼 case0079 2009-11-20  
那么页面嵌入代码的好处是什么?
33 楼 holan 2009-11-20  
case0079 写道
archangel 写道
case0079 写道
需要考虑几个问题。
1。view层真的需要调用JAVA程序吗?
   首先view不应该调用business代码,最多是调用一些格式化的代码。那么只要能实现一个格式化的框架就能使view完全和java无关。

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

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


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

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


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

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


引用agile web development with rails里一句话,页面里不能嵌入代码?那是教条主义的做法。
我不觉得嵌入代码有什么问题,如果这个程序员算得上是个程序员的话,这个度很好把握
32 楼 archangel 2009-11-20  
jansel 写道


之前我的答复中也提到过了,既然是模板,那么肯定应用范围就是通过模板生成一段文本。

这段文本,可以输出到UI中,那么就是做UI了,可是直接用,而可以类似Struts2一样用FM实现Tag。

这段文本,可能就是Java代码,那么估计就是用FM生成java代码了。

周围还有人用FM生成XML,不过不太看好这个,不是强项,XML的工具太多了。

再比如就是邮件模板啊,等等有简单逻辑的替换了。


这么说没问题,但是“可以做”和“适合做”不能同等。

FreeMarker对于文档生成来说适合,但是对于Web开发呢?我们从网上看到的FreeMarker的教程还有大家写的例子,绝大多数是用FreeMarker替代JSP做Web开发,但是这样能带来什么好处呢?逻辑清晰?后期维护成本降低?还是说仅仅是因为这么做比较“in”...。我只想用它去做我认为它能做好的事。
31 楼 archangel 2009-11-20  
achenbj 写道
习惯问题,freemarker将js和css分离比较好。
拿来静态页面之后很快就可以加成动态的页面。

如果说CSS的选择器和JQuery的选择器一定程度解耦了HTML和CSS,JS,我觉得没问题。FreeMarker和JS和CSS有啥关系?它是执行在服务器端的,咋分离JS和CSS?
30 楼 jansel 2009-11-20  
archangel 写道
jansel 写道

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

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

2.美工技术分离,也就是人能分开,活儿很难分开。想让什么美工管美工的,技术管技术的,基本上都是扯淡。


OK,我的例子不算好,也说不清问题,打住不说了。回归正题,我想讨论的是FreeMarker的应用范围。


之前我的答复中也提到过了,既然是模板,那么肯定应用范围就是通过模板生成一段文本。

这段文本,可以输出到UI中,那么就是做UI了,可是直接用,而可以类似Struts2一样用FM实现Tag。

这段文本,可能就是Java代码,那么估计就是用FM生成java代码了。

周围还有人用FM生成XML,不过不太看好这个,不是强项,XML的工具太多了。

再比如就是邮件模板啊,等等有简单逻辑的替换了。

29 楼 archangel 2009-11-20  
jansel 写道

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

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

2.美工技术分离,也就是人能分开,活儿很难分开。想让什么美工管美工的,技术管技术的,基本上都是扯淡。


OK,我的例子不算好,也说不清问题,打住不说了。回归正题,我想讨论的是FreeMarker的应用范围。

相关推荐

    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