|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在ruby里才是一切皆对象。当然我不并不是很了解ruby,但是ruby确实是将语法简化得很好。终究正式进进J2ee的细节部分了,首当其冲确当然是Servlet和Jsp了,上篇已经提到过J2ee只是一个标准和指南,界说了一组必需要遵守的接口,中心观点是组件和容器。已经有的人问笔者Servlet的Class文件是那里来的?他以为是J2ee官方供应的,我举了一个复杂的反例:略微反省了一下Tomcat5.0内里的Servlet.jar文件和JBoss内里的Servlet.jar文件巨细,很分明是纷歧样的,最少已申明了它们不是源自同根的吧。实在Servlet是由容器依据J2ee的接口界说本人来完成的,完成的体例固然能够分歧,只需都恪守J2ee标准和指南。
上述只是一个罕见的误区而已,告知我们要编译运转Servlet,是要依附于完成它的容器的,否则连jar文件都没有,编译都没法举行。那末Jsp呢?JavaServerPage的简称,是为了开辟静态网页而出生的手艺,其实质也是Jsp,在编写终了以后会在容器启动时经由编译成对应的Servlet。只是我们使用Jsp的良多新特征,能够加倍专注于前背景的分别,初期Jsp做前台是满盛行的,究竟内里撑持Html代码,这让前台美工职员能够更无效率的往完成本人的事情。然后Jsp将哀求转发到背景的Servlet,由Servlet处置营业逻辑,再转发还别的一个Jsp在前台显现出来。这仿佛已成为一种经常使用的形式,最后笔者进修J2ee的时分,大批工夫也在编写如许的代码。
只管如今做前台的手艺愈来愈多,比方Flash、Ajax等,已有良多人不再以为Jsp主要了。笔者以为Jsp带来的不单单是前后端分别的计划理念,它的别的一项手艺成绩了我们明天用的良多框架,那就是Tag标签手艺。以是与其说是在进修Jsp,不如更苏醒的告知本人在不休的了解Tag标签的意义和实质。
1.Servlet和Jsp的性命周期
Servlet是Jsp的本色,只管容器对它们的处置有所区分。Servlet有init()办法初始化,service()办法举行Web服务,destroy()办法举行烧毁,从生到灭都由容器来把握,以是这些办法除非你想本人来完成Servlet,不然是很少会打仗到的。恰是因为很少打仗,才简单被宽大初学者所疏忽,但愿人人最少记着Servlet性命周期办法都是回调办法。回调这个观点复杂来讲就是把本人注进别的一个类中,由它来挪用你的办法,所谓的别的一个类就是Web容器,它只熟悉接口和接口的办法,注进出去的是如何的对象不论,它只会依据所需挪用这个对象在接口界说存在的那些办法。由容器来挪用的Servlet对象的初始化、服务和烧毁办法,以是叫做回调。这个观点对进修其他J2ee手艺相称关头!
那末Jsp呢?本领上是Servlet,仍是有些区分的,它的性命周期是如许的:
a)一个客户真个Request抵达服务器->
b)判别是不是第一次挪用->是的话编译Jsp成Servlet
c)否的话再判别此Jsp是不是有改动->是的话也从头编译Jsp成Servlet
d)已编译比来版本的Servlet装载所需的其他Class
e)公布Servlet,即挪用它的Service()办法
以是Jsp号称的是第一次Load迟缓,今后城市很快的运转。从它的性命的周期的确不丢脸出来这个特性,客户真个操纵很少会改动Jsp的源码,以是它不必要编译第二次就一向能够为客户端供应服务。这里略微注释一下Http的无形态性,由于发明良多人曲解,Http的无形态性是指每次一张页面显现出来了,与服务器的毗连实在就已断开了,当再次有提交举措的时分,才会再次与服务器举行毗连哀求供应服务。固然另有如今对照盛行的是Ajax与服务器异步经由过程xml交互的手艺,在做前台的范畴潜力伟大,笔者不是Ajax的妙手,这里没法为人人注释。
2.Tag标签的实质
笔者之前说了,Jsp自己初志是使得Web使用前背景的开辟能够离开耦合分隔无效的举行,惋惜这个理念的奉献反倒不如它带来的Tag手艺对J2ee的奉献要年夜。大概已有良多人入手下手利用Tag手艺了结其实不懂得它。以是才倡议人人在进修J2ee入手下手的时分必定要仔细进修Jsp,实在最主要的就是分明标签的实质。
Html标签我们都很熟习了,有<html>、<head>、<body>、<title>,Jsp带来的Tag标签遵守一样的格局,大概说更严厉的Xml格局标准,比方<jsp:include>、<jsp:useBean>、<c:if>、<c:forEach>等等。它们没有甚么奥秘的中央,就其泉源也仍是JavaClass罢了,Tag标签的本色也就是一段Java代码,大概说一个Class文件。当设置文件设置好往那里寻觅这些Class的路径后,容器卖力将页面中存在的标签对应到响应的Class上,实行那段特定的Java代码,云云罢了。
说得分明一点的话仍是举几个复杂的例子申明一下吧:
<jsp:include>往那里找实行甚么class呢?起首这是个jsp类库的标签,固然要往jsp类库寻觅响应的class了,一样它也是由Web容器来供应,比方Tomcat就应当往安装目次的lib文件夹上面的jsp-api.jar内里找,有乐趣的能够往找一找啊!
<c:forEach>又往那里找呢?这个是由Jsp2.0版本保举的和中心标志库的内容,比方<c:if>就对应在页面中做if判别的功效的一断Java代码。它的class文件在jstl.jar这个类库内里,常常还必要和一个standard.jar类库一同导进,放在详细Web项目标WEB-INF的lib目次上面就能够利用了。
特地干脆一句,WebProject的目次布局是绝对流动的,由于容器会依照流动的路径往寻觅它必要的设置文件和资本,这个任何一本J2ee进门书上都有,这里就不先容了。懂得Tag的实质还要懂得它的事情道理,以是人人往J2ee的API里找到并研讨这个包:javax.servlet.jsp.tagext。它有一些接口,和一些完成类,专门用语开辟Tag,只要本人亲身写出几个分歧功效的标签,才算是真正了解了标签的道理。别健忘了本人开辟的标签要本人往完成设置文件,容器只是集成了往那里寻觅jsp标签对应class的路径,本人写的标签库固然要告知容器往那里找啦。
说了这么多,我们为何要用标签呢?完整在Jsp内里来个<%%>就能够在内里恣意写Java代码了,可是临时理论发明页面代码一致都是与html同作风的标志言语加倍有助于美工职员举行开辟前台,它不必要懂Java,只需Java程序员给个列表告知美工甚么标签能够完成甚么逻辑功效,他就能够专注于美工,也算是进一步断绝了前背景的事情吧!
3.成绩Web框架
框架是甚么?已经看过如许的界说:与形式相似,框架也是办理特定成绩的可重用办法,框架是一个形貌性的构建块和服务汇合,开辟职员能够用来告竣某个方针。一样平常来讲,框架供应懂得决某类成绩的基本举措措施,是用来创立办理计划的工具,而不是成绩的办理计划。
恰是因为Tag的呈现,成绩了今后呈现的那末多Web框架,它们都开辟了本人成熟有用的一套标签,然后由特定的Xml文件来设置加载信息,力争使得Web使用的开辟变得加倍高效。上面这些标签响应对良多人来讲相称熟习了:
<html:password>
<logic:equal>
<bean:write>
<f:view>
<h:form>
<h:message>
它们分离来自Struts和JSF框架,最壮大的功效在于把持转发,就是MVC三层模子两头完成把持器的事情。Struts-1实践上并未做到真实的三层断绝,这一点在Struts-2上失掉了很年夜的改善。而Jsf一直以对照完美公道的标签库遭到人们推许。
明天就也许讲这么多吧,再次必要夸大的是Servlet/Jsp是进修J2ee必经之路,也是最基本的常识,但愿人人授与充足的器重!
来自:http://topic.csdn.net/u/20070924/21/18482496-082f-4907-8751-b80ab5d56622.html?seed=1386683868
前些天,在CSDN上看到了一个消息,说是net网页编程网页编程AJAX成功在Linux上运行,这一点对我触动很大,而且引发了我许多感叹,所以想写出来分享一下。 |
|