不帅 发表于 2015-1-18 11:31:06

JAVA网页设计自界说JSP标签(tag)浅议

C#跟java类似,但是在跨平台方面理论上可以跨平台,实际上应用不大,执行性能优于java,跟C++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱.js由于版本变更的干系,这篇文章一定有普适性



看这篇文章之前应当先看Sun的文章并最好下手理论之

http://java.sun.com/developer/technicalArticles/xml/WebAppDev3/

而且晓得J2EEAPI文档的地位在

http://java.sun.com/j2ee/sdk_1.3/techdocs/api/index.html



自界说Tag实在并非一件很坚苦的事变,就是猛一打仗,不晓得该从何动手。保举先看看Sun公司的一篇文章,看完了,大抵就有了一个印象。在这里偶然往翻译这篇复杂的文章,而是从这篇文章睁开往说说。要申明的一点就是sun的文档中代码都是完整可用的,可是由于排版成绩,代码的分行有些中央不准确,间接copy的时分要细心收拾一下代码,不然有大概会通不外编译,部署的时分会给你一年夜堆非常。



自界说Tag利用的包是javax.servlet.jsp.tagext,假如编译有成绩,能够往Tomcat的commonlib文件夹上面找jsp-api.jar援用上就能够了。



这个包内里的类和接口,基础上我们次要体贴的就是以“Tag”开头的那几个,接口Tag和BodyTag,类TagSupport和BodyTagSupport,另有一个接口IterationTag,不外一样平常不会用到。其他的我们都能够看做是帮助类,匡助猎取信息甚么的。我们能够细心看看J2EE的API文档内里关于这个包的类申明。



下面类名内里的Body的意义大概一会儿对照难了解。tag指的就是像<tagname></tagname>如许的工具,Body就是夹在tag两头的工具,好比<tagname>IamBody</tagname>。这么一来,这个tag也就成了BodyTag,由于它能够带Body。以是计划tag也要事前思索好带不带Body,不外实际思索,仿佛没有Body的tag应当也对照少吧。



Tag接口是这些类内里的根,以是先看看内里有甚么。API文档内里谁人Lifecycle丹青的很粗拙,不外也能大抵看分明。我们也不外分胶葛细节,大抵体贴的就是doStartTag()和doEndTag()这一段。每当你写的tag在Jsp页面内里要被注释的时分,服务器就主动挪用你的类内里的doStartTag()函数来完成你界说的逻辑,当剖析完标签后挪用doEndTag()。完成Tag接口来定制本人的tag无疑是最天真的。可是,难度也对照年夜,我们界说本人的tag的时分完整不用要弄得这么有内在。

BodyTag跟Tag类也不同不年夜,BodyTag承继自Tag和IterationTag,由于触及了Body的缘故原由,逻辑要庞大一些。API文档内里的Lifecycle图也对照明晰。有需要好悦目看。内里次要申明的就是函数挪用的按次。可是在详细使用中,纷歧建都要墨守成规的走完这全部Lifecycle,假如要想把持这些挪用的线路。就要借用函数的前往值了,在上一个函数前往特定的值(都是已界说好的常数)就能够改动服务器挪用下一个函数的举动来完成你本人的逻辑。看到这里我也不由信服这些写类库的人,能想出这么个举措来办理成绩。



为了便利我们开辟,又供应了两个带“Support”的类来“撑持”我们,便利我们开辟。一样平常情形下我们只需承继这两个类中的一个,并且我以为BodyTagSupport也更经常使用一些仿佛。要申明的一点就是两个Support类中TagSupport是BodyTagSupport的父类。类中的getId()和setId()这两个函数名并非逝世的,这两个“Id”应当在你的程序中交换成你的标署名,好比你的tag名字是tagname,就是<tagname>,那末函数名就酿成了getTagname()和getTagname()。如许的弄法本来在其他中央也有领教。(注重tagname第一个字母在函数名中年夜写)变更的名字有服务器本人去向理,无需编程者本人费心。本来函数名都是能够变更的,必定要注重。



说到这里能够分离Sun的文档的代码看看,就分明了。



至于部署和.tlb文件的格局,Sun文档上也都有。不再赘述。最初附上收拾的前往值列表,这个我以为对照主要。



英文Evaluate大抵是“评价,求值”的意义,这里我们能够了解为服务器“读取,读进,处置”的意义,翻译的时分我就随语境变通一下,上面加了下划线,假如有不妥,请斧正。




EVAL_BODY_INCLUDE:把Body读进存在的输入流中,doStartTag()函数可用


EVAL_PAGE:持续处置页面,doEndTag()函数可用


SKIP_BODY:疏忽对Body的处置,doStartTag()和doAfterBody()函数可用


SKIP_PAGE:疏忽对余下页面的处置,doEndTag()函数可用


EVAL_BODY_TAG:已废除,由EVAL_BODY_BUFFERED代替


EVAL_BODY_BUFFERED:请求缓冲区,由setBodyContent()函数失掉的BodyContent对象来处置tag的body,假如类完成了BodyTag,那末doStartTag()可用,不然不法


EVAL_BODY_AGAIN:哀求持续处置body,前往自doAfterBody(),这个前往值在你制造轮回tag的时分是很有效的。我察看了一下JSTL的源代码,想看看它的ForEach怎样体例的,可是一看内里逻辑非常庞大,短工夫不克不及看出眉目,以是在这里也不敢妄语,假如哪位仁兄有研讨,还请不惜见教。



:包内里的其他类还没有研讨,假如有研讨再另行写个文档。



一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。

老尸 发表于 2015-1-21 09:20:03

科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

爱飞 发表于 2015-1-30 13:21:59

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

因胸联盟 发表于 2015-2-6 12:41:20

是一种将安全性(Security)列为第一优先考虑的语言

分手快乐 发表于 2015-2-8 15:52:07

是一种为 Internet发展的计算机语言

谁可相欹 发表于 2015-2-27 00:52:08

有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)

冷月葬花魂 发表于 2015-2-28 17:17:52

多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

深爱那片海 发表于 2015-3-8 16:26:18

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

金色的骷髅 发表于 2015-3-9 09:12:12

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

仓酷云 发表于 2015-3-11 13:10:26

是一种为 Internet发展的计算机语言

只想知道 发表于 2015-3-17 18:47:23

学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。

山那边是海 发表于 2015-3-24 19:16:52

Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。

小魔女 发表于 2015-3-25 18:53:28

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

第二个灵魂 发表于 2015-3-27 10:10:06

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!

蒙在股里 发表于 2015-4-1 15:57:17

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

兰色精灵 发表于 2015-4-3 05:13:11

J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。

灵魂腐蚀 发表于 2015-4-4 18:07:10

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。

莫相离 发表于 2015-4-4 23:42:22

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

再现理想 发表于 2015-4-10 13:23:52

设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
页: [1]
查看完整版本: JAVA网页设计自界说JSP标签(tag)浅议