JAVA网页编程之一个开辟职员眼中的JSP手艺(上)
net程序员的大部门代码都靠控件拖拽完成的,虽然java也有,但是无论从美观和速度上都没发和.net比。java程序员都是代码完成的,所以java程序员常戏称.net程序员是操作员,呵呵。jsJavaServerTMPages(JSP)手艺为我们供应了一种创建静态网页的复杂办法,并且也简化了机关web程序的事情。本文从一个开辟职员的角度对JSP手艺做了一个周全先容(并供应了一些JSP实例程序)。媒介
JavaServerPages手艺可让web开辟职员和计划职员十分简单的创立和保护静态网页,出格是今朝的贸易体系。作为JavaTM手艺的一部分,JSP可以疾速开辟出基于web、自力于平台的使用程序。JSP把用户界面从体系内容平分分开来,使得计划职员可以在不改动底层静态内容的条件下改动全部网页结构。
那末甚么是JavaServerPage呢?复杂的说,一个JSP网页就是在HTML网页中包括了可以天生静态内容的可实行使用程序代码。此使用程序大概包括JavaBeanTM,JDBCTM对象,EnterpriseJavaBeanTM(EJB)和RemoteMethodInvocation(RMI)对象,一切的部分都能够十分简单的从JSP网页上会见到。比方,一个JSP网页能够包括HTML代码所显现的静态文本和图象,也能够挪用一个JDBC对象来会见数据库;当网页显现到用户界面上今后,它将包括静态HTML内容和从数据库中找到响应的静态信息。
在JSP网页中,要把用户界面和使用程序分隔能够思索在网页计划职员和开辟职员之间实行一个十分便利的受权义务。它也同意开辟职员往创建天真的代码,从而十分简单的举行更新和反复使用。因为JSP网页可以依据必要主动举行编译,web计划职员不必从头编译使用程序逻辑就能够改动表述代码。这也使得JSP与Javaservlet(它是JavaSeverPages功效的扩大)比拟成为一种能够更天真天生静态web内容的办法。
JSP和Servlet
假如你已用过Javaservlet,那末你就会晓得servlet可让你创建静态天生的网页,而网页中包括有从服务器方的Java对象中所取得的数据。可是你也得晓得servlet天生网页的办法就是在Java类中嵌进HTML标签和表述代码。这就意味着改动表述代码必要修正和从头编译servlet源文件。由于计划HTML页面的计划职员大概与编写servlet代码的开辟职员不是统一团体,更新基于servlet的web使用程序就成了一件十分辣手的事变。
EnterJavaServerPage是ServletAPI的一个扩大。现实上,JSP网页在编译成servlet之前也能够利用,以是它们也具有servlet的一切上风,包含会见JavaAPI。因为JSP是嵌进到servlet中关于使用程序的一样平常表述代码,以是他们可以被当作一种“完全”的servlet。
JSP网页次要供应了一种创建servlet的高程度办法,它还带来了其他的长处。即便你已为web使用程序编写了servlet,利用JSP仍旧有良多上风:
JSP网页能够十分简单的与静态模板分离,包含HTML或XML片断,和天生静态内容的代码。
JSP网页能够在被哀求的时分静态的编译成servlet,以是网页的计划职员能够十分简单的对表述代码举行更新。假如必要的话,JSP网页还能够举行预编译。
为了挪用JavaBean组件,JSP标签能够完整办理这些组件,制止网页计划职员庞大化使用程序。
开辟职员能够供应定制化的JSP标签库。
网页计划职员可以改动和编纂网页的流动模板部分而不影呼应用程序。一样,开辟职员也不必一个个编纂页面而只须对组件举行公道的改动。
一般,JSP同意开辟职员向很多网页计划职员分发功效性使用程序。这些计划职员也不用晓得Java编程言语或任何servlet代码,以是他们可以会合精神往编写HTML代码,而编程职员就能够会合精神往创建对象和使用程序。
创建JSP页面
大略看来,JSP网页和HTML(或XML)网页十分类似――都包括用标签封装的文本(在“<>”之间被界说)。当HTML标签被用户的扫瞄器处置以显现网页的时分,JSP标签可以经由过程web服务器的处置来天生静态内容。这些JSP标签可以界说一般的操纵,好比说用一个办法来挪用JavaBean,大概包括尺度的Java代码块(也就是所谓的scriptlet),这些代码块可以在网页被会见的时分被实行。
为了懂得它们怎样利用,上面我们先容了一个JSP网页的复杂例子,在这个JSP网页中包括了静态HTML内容和从JavaBean天生的静态数据。当用户会见这个网页的时分,它能够显现以后的日期,并依据以后的工夫增添响应的问候语(比方“早上好”和“下战书好”)。为复杂起见,JSP标签显现在块中:
<HTML>
<%@pagelanguage="java"imports="java.util.*"%>
<H1>Welcome</H1>
<P>Todayis</P>
<jsp:useBeanid="clock"class="jspCalendar"/>
<UL>
<LI>Day:<%=clock.getDayOfMonth()%>
<LI>Year:<%=clock.getYear()%>
</UL>
<%--CheckforAMorPM--%>
<%!inttime=Calendar.getInstance().get(Calendar.AM_PM);%>
<%
if(time==Calendar.AM){
%>
早上好
<%
}
else{
%>
下战书好
<%
}
%>
<%@includefile="copyright.html"%>
</HTML>
下面的JSP例子是否是很复杂?我们在JSP网页中利用了几个分歧的组件。这些组件包含上面的内容:
JSPaction(或JSP标签)利用了多种函数并扩大了JSP的功效。JSPaction利用的是一品种似XML的语法,而且被用来处置JavaBean组件。在下面的例子中,jsp:useBeanaction初始化了一个JavaBean,JavaBean将在网页的前面部分被用到:
<jsp:useBeanid=="clock"class=="jspCalendar"/>
假如在网页中必要取得和设置这个Bean的属性,另外一个JSPaction将被给出,利用的是上面的语法:
<jsp:getPropertyname="bean"property="property"/>
<jsp:setPropertyname="bean"property="property"value="value"/>
当网页被编译成一个servlet的时分,Directive将被JSP引擎处置。Directive被用来设置页面级的指令、从内部文件拔出数据和制订定制的标签库。Directive被界说在<%@和%>之间。在下面的例子中,Directive界说了页面所利用的言语(Java),为了联系关系Java类必要植进代码并指定一个将要拔出页面底部的HTML文件内容:
<%@pagelanguage=="java"imports=="java.util.*"%>
<%@includefile=="copyright.html"%>
声明与Java中的变量声明类似,它也是为了前面表达式或scriptlet的必要来界说变量。声明被界说在<%!和%>之间。在下面的例子中,“int”声明并给出了一个以后工夫的响应值(AM或PM):
<%!inttime=Calendar.getInstance().get(Calendar.AM_PM);%>
表达式能够是变量或常量,它插在由web服务器所前往的数据里,并?lt;%=和%>来界说。在下面的例子中,表达式将挪用JavaBean组件并在页面中拔出了局数据:
<%=clock.getDayOfMonth()%>
<%=clock.getYear()%>
Scriptlet将作为一个Java代码块植进JSP页面中。Scriptlet代码被逐一拔出由页面所发生的servlet中,它被界说在<%和%>之间。下面例子中的scriptlet能够依据以后用户发生响应的工夫和问候语:
<%
if(time==Calendar.AM){
%>
早上好
<%
}
else{
%>
下战书好
<%
}
%>
正文部分和HTML的⑹拖嗨疲痹谥葱械氖焙JSP引擎将往失落对正文的注释。这就意味着JSP正文其实不前往到用户的扫瞄器中。不象HTML正文被界说在<!-和-->标签之间,JSP正文被界说在<%--和--%>之间。比方:
<%--CheckforAMorPM--%>
为什么外国人还要写那些框架进行代码封装,他们不就是为了别人使用时可以更简单么!如果要达到一个企业级项目的不用框架是很难的。小一些的项目还行,大的光是MVC模式的设计的编码量就够大的了。还有性能方面,单轮windows,这个工具是微软写的,。 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
页:
[1]