活着的死人 发表于 2015-1-18 11:10:23

了解下JAVA的纯 servlet:从头思索视图

Java的桌面程序开发在java程序员里通常叫swing开发,主要用的swing包里的类开发的,也就是通常说的c/s架构开发
计划JSP的目标是将Web开辟职员的义务与计划静态页面UI的非开辟人员的义务分别开来。遗憾的是,JSP关于很多计划职员来讲太庞大了,为办理各种静态内容成绩增加的软件层让他们以为十分辣手。(比方,国际化请求将文本存储在其他中央并经由过程键来援用。)以是关于年夜多半项目,Java开辟职员只好本人处置JSP代码,这经常会包括本属于计划职员的事情,使他们的精神损耗在标志库和其他工具上,没法会合于Java代码。
与正统的体例分歧,可使用复杂的helper对象,依据惯例servlet构建简便幽美的Web界面。本文解说怎样以尺度的Java情势编写静态Web页面的视图输入。我将注释这类办法的优点,并用一个计分使用程序演示这类办法,这个程序办理一个NCAA三月狂热奖金池。
HTML是静态的
这类纯servlet办法十分复杂。它触及一个servlet基类和一个定制的写出器对象,servlet子类利用这个对象发生输入。代码很简便,由于年夜多半HTML封装在helper对象的办法中,都能够按需重写。代码重用老是使人兴奋,并且年夜多半Web站点的页面共享很多HTML,以是重用应当是个主要的思索因素。HTML输入办法发生直不雅松散的servlet代码,因而可保护性很高,这使代码的保护本钱差未几间接与代码范围成反比。经由过程将JSP界面重写成纯servlet,能够将代码缩减三分之二。
比方,要依据用户权限输入一个链接,就必要上面如许冗杂的机关代码:
<c:iftest="${user.permission]!=0}">
 <c:urlvar="editUrl"value="/EditWidget.jsp"/>
 <divclass="navigation"><ahref="<c:outvalue="${editUrl}"/>">Edit
    thiswidget</a></div>
</c:if>
经由过程利用Java语法,代码就简便多了:
if(user.getPermission(Constants.EDIT_WIDGET)!=0)
 out.printNavlinkDIV("/EditWidget.jsp","Editthiswidget");
别的,在统一个中央猎取和输入营业对象,而不是经由过程哀求对象传送它们,这也会节俭大批代码。简便是美。
利用JSP和其他视图手艺多是Web开辟中最使人头疼的部分。JSP页面不是HTML或XML、Java代码、JavaServerPagesStandardTagLibrary(JSTL)代码或表达式言语(EL),而是这些工具的年夜杂烩。JSP代码不仅是奇怪的组合体,并且每一个笼统层都给开辟带来新的停滞。比方,对JSP页面举行调试几乎就像探矿那样坚苦。您晓得某个中央出了偏差,可是没法找到出成绩的地位;奥秘难明的毛病动静固然指出了行号,但这个行号常常不是成绩的真正所在。
JSP手艺不克不及扩大基类,以是代码重用只能经由过程bean、include文件和定制的标志库来举行。标志库太贫苦,不合适举行无效的重用。为您所做的每处API修正保护一个XML长短常贫苦的,并且“标志计划就是言语计划”(拜见参考材料中NoelBergman的文章)。了局是在本已分了良多层的接口上又加了一层。
我们正面临着全新的WorldWideWeb。不管Ajax可否引领Web开辟的方向,Web站点城市持续向着加倍智能化的偏向开展。别的,只管HTML自己老是声明性的,可是发生它的代码却纷歧定云云。JSP手艺和其他模板化体系一定过分庞大,由于它们试图以声明式的体例表达实质上静态的输入。这恰是开辟职员没法容忍在JSP源代码中增加scriptlet的缘故原由:我们试图表达的逻辑具有林林总总的情势。
经由过程将HTML封装成Java代码,能够简便地表达输入逻辑。if语句和for轮回能够接纳人人熟习的情势。页面元素能够重组成办法,如许就很简单了解和保护它们。(对较年夜的JSP页面举行保护长短常贫苦的,十分简单呈现毛病,特别是在短少优秀的正文的情形下。)经由过程利用纯servlet,能够尽量增添代码重用,由于不必要为每一个页面的机关编写新的类。
狂热的计划
为了演示纯servlet的观点,我为一个NCAAMarchMadness锦标赛奖金池构建了一个计分界面。(拜见三月狂热和下载)。用户能够从列入锦标赛的64支球队当选择他们以为最杰出的20支球队,并给每一个球队分派一个加权的分数。竞赛入手下手以后,他们的选择就酿成只读的;当竞赛停止时,办理员输出获胜球队的称号。依据用户选择的球队,主动地盘算用户的积累分数并显现分数的排名。
这个项目约莫消费了我三周的专业工夫,年夜部分工夫花在款式和图象上(毕竟我不是画家)。除一个HTML文件和其他静态资本以外,UI层由21个Java类构成,依据JavaNCSS的器度尺度,一共有1,334个Java语句(拜见参考材料)。
<p>
首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。

精灵巫婆 发表于 2015-1-20 15:50:46

Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站

再现理想 发表于 2015-1-24 15:43:08

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

灵魂腐蚀 发表于 2015-2-1 23:59:23

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。

小魔女 发表于 2015-2-18 06:46:34

是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言

飘灵儿 发表于 2015-3-6 00:50:03

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

只想知道 发表于 2015-3-12 18:02:48

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

若天明 发表于 2015-3-20 01:17:17

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
页: [1]
查看完整版本: 了解下JAVA的纯 servlet:从头思索视图