分手快乐 发表于 2015-1-18 11:36:24

JAVA网页编程之Java 进修杂谈(八):Servlet/Jsp仓酷云

在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上运行,这一点对我触动很大,而且引发了我许多感叹,所以想写出来分享一下。

爱飞 发表于 2015-1-21 10:55:19

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

透明 发表于 2015-1-25 12:09:59

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

深爱那片海 发表于 2015-1-26 17:11:05

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

金色的骷髅 发表于 2015-2-5 11:55:41

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

因胸联盟 发表于 2015-2-11 16:34:39

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。

若天明 发表于 2015-2-12 10:57:44

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

精灵巫婆 发表于 2015-3-3 02:18:14

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

只想知道 发表于 2015-3-11 08:41:32

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。

飘飘悠悠 发表于 2015-3-11 18:41:48

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。

谁可相欹 发表于 2015-3-12 14:31:57

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

蒙在股里 发表于 2015-3-19 22:48:39

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。

小魔女 发表于 2015-4-2 02:10:05

当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

若相依 发表于 2015-4-3 10:43:33

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

柔情似水 发表于 2015-4-10 08:30:18

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

愤怒的大鸟 发表于 2015-4-16 17:12:41

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

简单生活 发表于 2015-4-20 19:26:50

至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。

飘灵儿 发表于 2015-4-26 15:12:38

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

变相怪杰 发表于 2015-6-12 22:50:52

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

小女巫 发表于 2015-6-28 11:30:46

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
页: [1]
查看完整版本: JAVA网页编程之Java 进修杂谈(八):Servlet/Jsp仓酷云