仓酷云
标题:
JAVA编程:我以为JSP有成绩(上)
[打印本页]
作者:
精灵巫婆
时间:
2015-1-18 11:26
标题:
JAVA编程:我以为JSP有成绩(上)
诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net里有这些工具吗?要简单多少?。js|成绩我以为JSP有成绩(上)
(小龙亭主Blueski编译 2000年12月22日14:22)
(编者:这篇文章的原文初次在外洋呈现时,JSP还只是一种方才崭露锋芒的手艺,并没有像如今如许方兴未艾。如今看来这篇文章的某些概念大概会有必定的范围性,但我不能不供认这是一篇很年夜气的作品,个中触及良多JSP的内涵道理。因而,我想仍是有需要把这篇文章先容给人人,以便列位从另外一个正面更深切的懂得JSP手艺。)
现在每个利用servlets的开辟者都晓得JSP,一种建构在servlet手艺之上的由Sun公司创造并消费大批精神加以奉行的web手艺。JSP将servlet中的html代码离开了出来,从而能够减速web使用开辟和页面保护。实践上,由Sun公布的官方"使用开辟模子"文档上说得更远:"JSP手艺应当被视为尺度,而servlets在多半情形下可视为一种增补。"
本文将对照JSP和另外一项基于servlets的手艺:templateengines(模板引擎)。
间接利用Servlets的成绩
当Servlets被创造时,全部天下都看到了它的优胜性。基于Servlet的静态网页能够被疾速实行,能够在多个服务器之间容易转移,而且能够和背景数据库完善地集成,因而Servlets被普遍承受成为一种web服务器真个首选平台。
可是,一般经由过程复杂体例便可完成的html代码如今却要让程序员经由过程out.println()挪用每行HTML行,这在实践的Servlet使用中酿成一个严峻成绩。HTML内容不能不经由过程代码来完成,这关于年夜的HTML页来讲不啻是一项沉重费时的事情。别的,卖力网页内容的职员不能不请开辟职员来举行一切的更新。为此,人们追求这一种更好的办理体例。
JSP出生
JSP0.90出生了。在这类手艺中你能够将Java代码嵌进到HTML文件,服务器将主动为页面创立一个Servlet。JSP被以为是一种写Servlet的浅易体例。一切HTML能够间接失掉而不用经由过程out.println()挪用,而卖力页面内容的职员能够间接修正HTML而不用冒损坏Java代码的风险。
可是,让页面美术计划师和开辟职员在统一文件上事情其实不幻想,让Java嵌进HTML被证实是就象将HTML嵌进Java一样使人为难。读取一堆很乱的代码仍旧是一件坚苦的事变。
因而,人们在利用jsp方面变得成熟,更多地利用了JavaBeans。Beans包括了jsp所需的营业逻缉代码。JSP中的年夜多半代码都能够掏出来放到bean中往,而只留下少少的标志用于挪用bean。
比来,人们入手下手以为这类体例下的JSP页面真的很象是视图(view)。它们成为一个用于显现客户端哀求了局的组件。因而人们会想,为何不间接对view发送哀求呢?方针view假如对该哀求分歧适又将怎样?说究竟,良多的哀求有多种大概来获得了局view视图。比方,统一哀求大概发生乐成的页面、数据库破例堕落呈报,大概是短少参数的堕落呈报。统一哀求大概发生一个英文页面也多是西班牙文页面,这取决于客户真个locale。为何客户端必需间接将哀求发送给view?为何客户端不该该将哀求发送给一些通用的服务器组件并让服务器来决意JSPview的前往?
这使良多人承受了已被称为"Model2"的计划,这是在JSP0.92中界说的基于model-view-controller的模子。在这类计划中,哀求被发送到一个servlet把持器,它实行了贸易逻缉并发生一个邻近的数据"model"来用于显现。这一数据随后经由过程外部送到一个JSP"view"来举行显现,如许看起来JSP页就象是一个一般的嵌进的JavaBean。能够依据卖力把持的servlet的外部逻辑来选择得当的JSP页面举行显现。如许,JSP文件成了一个大度的templateview。这就是另外一种开展,并被别的一些开辟者所推许至今。
进进TemplateEngines
假如利用templateengine来取代一般目标的JSP,接下往的计划将变得复杂,语法更复杂,堕落信息更容易读,工具也更用户化。一些公司已做了如许的引擎,最出名的多是WebMacro,他们的引擎是收费的。
开辟者应当了然,选定一个templateengine来代替JSP供应了以下一些手艺上风,而这些同时也恰是jsp的不敷的地方:
成绩#1:Java代码太模板化了
固然被以为是欠好的计划,JSP仍试图将Java代码到场web页面。这有些象是Java已经做过的事变,即对C++的简化修正,templateengines也经由过程将jsp中的较低层的源码移往来使之简化。而Templateengines实施了更好的计划。
成绩#2:请求写Java代码
在JSP页中请求写一些Java代码。比方,假定某页要决意以后web使用中根的高低文从而导向其主页,在JSP中最好利用以下Java代码:
<ahref="<%=request.getContextPath()%>/index.html">Homepage</a>
你能够试图制止Java代码,而利用<jsp:getProperty>标志,但这将给你以下难以浏览的字符串:
<ahref="<jsp:getPropertyname="request"property="contextPath"/>/index.html">HomePage</a>
利用templateengine则没有Java代码和丢脸的语法。这里是一样请求下在WebMacro中的写法:
<ahref="$Request.ContextPath;/index.html">Homepage</a>
在WebMacro中,ContextPath作为$Request变量的一个属性,利用相似Perl的语法。别的templateengines利用了别的的语法范例。
再看另外一个例子,假定一个初级的"view"必要设定一个cookie来纪录用户缺省的色彩设置--这类义务看起来也许只能由view而不是servlet把持器来完成。在JSP中要有如许的Java代码:
<%Cookiec=newCookie("colorscheme","blue");response.addCookie(c);%>
在WebMacro中则没有Java代码:
#set$Cookie.colorscheme="blue"
作为最初一个例子,假设又要从头找回本来的cookie中的色彩设置。关于JSP,我们能够以为也有一个响应的工具类来供应匡助,由于用getCookies()间接做如许低层的会变得好笑并且坚苦。在JSP中:
<%Stringcolorscheme=ServletUtils.getCookie(request,"colorscheme");%>
在WebMacro中没有对工具类的必要,一般是:
$Cookie.colorscheme.Value
关于必需往写jsp的图形界面计划师,哪种语法更简单进修呢?
JSP1.1引进了自界说标志(customtags)同意恣意的和HTML类似的标志在JSP页面中在背景实行Java代码,这将具有必定的代价,但条件是要有一个普遍晓得的,全功效的,能够收费失掉的,尺度化的标志库。今朝还没有呈现如许的标志库。
因为能用到多少功能就用多少,不能用就不用!总的来说:要简单要性能好,可以不用框架。你说java复杂,就是因为你把java(j2ee)与这些框架混在了一起。
作者:
简单生活
时间:
2015-1-18 15:39
是一种突破用户端机器环境和CPU
作者:
admin
时间:
2015-1-22 07:38
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
作者:
变相怪杰
时间:
2015-1-25 08:38
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
作者:
爱飞
时间:
2015-1-26 13:17
Java是一种计算机编程语言,拥有跨平台、面向对java
作者:
小魔女
时间:
2015-1-26 19:39
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
作者:
山那边是海
时间:
2015-2-4 18:41
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者:
精灵巫婆
时间:
2015-2-10 05:19
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
作者:
金色的骷髅
时间:
2015-2-28 21:18
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
作者:
再见西城
时间:
2015-3-9 21:59
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
作者:
小妖女
时间:
2015-3-17 02:07
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
作者:
若相依
时间:
2015-3-17 02:07
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
作者:
只想知道
时间:
2015-3-17 02:07
是一种使网页(Web Page)产生生动活泼画面的语言
作者:
透明
时间:
2015-3-17 02:07
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
作者:
小女巫
时间:
2015-3-23 13:31
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2