JSP动态网页制作一定要知道的基础知识
2024-09-05 00:19:46
供稿:网友
一个普通的错误是把jsp当作简化的 java。它不是,(事实上, jsp 是简化的 servlets 。)程序员通常试着没有学习要求的支持技巧而 直接学习 jsp 。jsp 是一个衔接技术,并且成功地连接你需要理解的另外的技术。如果你已经知道 java , html 和 javascript,这意味着 jsp 将确实是简单的。
需要成为一个成功的 jsp 程序员可以参考这个时间表。请注意下列:
*忽略你已经熟悉的步骤。
*训练的时间只是代表学习好足够的基础时间,这样才能转移到下一步。
1、建立并且理解你的web server。
因为apache 是免费的并且在大多数平台上工作,为训练目的推荐 apache。
安装时间:2 天。
2、 保证你理解 html / xhtml 。
你将需要了解html基础, 特别是 html 布局中的table的使用。xhtml 不久将代替 html ,学习 xhtml 的基础是一个好主意。许多程序员通过 html ide 学习 html ( 集成开发环境 ) 。因为大多数 html ide产生混乱的html语法,所以花时间学习手工写作html是很有必要的。因为你将会使用 jsp 和 html 混合编程,精通html语法是重要的。所以,你必须能流利地写 html 。
训练时间:2 ~ 4 个星期。
3、开始学习 java 。
开始学习 java 1.3 理解 java 基础是很重要的。不用担心学习swing或 java 的图形方面,因为在jsp 中你不会使用这些特征。集中精力 在 java 工作的细节,学习 java 的逻辑,也在 java bean上花时间。学习applet是好的, 但是就象swing, jsp 的大多数应用将不使用小程序。
训练时间:3 ~ 6 个星期。
3、学习 javascript
学习怎么将 javascript在html中验证输入的form元素。也学习 javascript怎么能在一 html 页以内修改form的元素。最后要求你能从一html 页内的事件中触发 javascript function。
训练时间:一~ 2 个星期。
4、学习并且理解你的web server的更好的细节。
熟悉web server的特征,这是很重要的。
训练时间:2 天。
5、建立你的 jsp server
我推荐以tomcat开始。它可以很好地运行jsp程序。当你不能在生产使用tomcat时,学习尽可能多的知识以便于更好的运行程序。另外, 许多 jsp 程序员使用tomcat。因此当你遇到一个问题时,你将容易发现帮助。
安装时间:一~ 2 天。
6、开始学习 jsp 。
基本的 jsp 学习通过的步骤 1到步骤6可以完成, 然后使用 jsp 对象和脚本写 jsp 程序来联系。学习 jsp 的另外一个方面可以学习怎么创建一个分布式的应用程序。
训练时间:4 ~ 6 个星期。
7、学习更多的 jsp server。
没有关于更多的 jsp server当然也可以运行jsp程序。然而, 许多 jsp server都由自己特殊的特征,可以让你更好的理解你的jsp 工程。学习更多的jsp server如何处理jsp程序是有必要的。同样也可以优化你的 jsp 应用程序,并且使之运行得更快而不出任何问题。
训练时间:2 ~ 7 天。
8、 学习 jdbc 。
jsp 大多数应用将使用数据库,jdbc 被用于数据库连接。经常忽略的一个事实就是,每个 jdbc driver 所支持的东西是相当不同的。了解并熟悉在jsp工程上被使用的 jdbc driver的细节是很重要的。
(有时这部分的学习被包含在前面 java 或jsp的学习中了 。)
训练时间:1~ 2 个星期。
到现在,你已经成为了熟练的 jsp 程序员。仍然有很多需要学习,你可以考虑扩展你的知识比如 dhtml , xml ,java证书, jsp tag libraries 或 servlets , 看你想要造什么类型的网站而决定了。
这些训练是jsp 的核心。你不必都学习上面所有的, 取决于你在工程中分配到什么任务和你已经有什么知识。但是这是我成功地训练程序员的时间表。关键的单元是时间。平均的说, 5 个月时间确实能够训练一个人 ( 从开始到完成 ) 成为一个对jsp熟悉程序员。5 个月时间似乎很长,但要成为一个资深的web程序员所学的东西远远不止这一些。
下面为总结
任何人员需要必备的技巧主要有以下这些技术。
开发web应用程序的技术已经变得更成熟、更复杂了。现在,构建一个web应用程序不仅仅需要简单的html技术了。数据库访问、脚本语言和管理都是一个web程序员需要具备的技术。让我们来看看要成为一个市场上受欢迎的人员都需要些什么技能吧。
自从cern(欧洲粒子物理研究所),日内瓦附近的高能物理研究中心,在1991年发布了web以来,web技术已经从静态的内容和common gateway interface(cgi)发展成servlet技术和javaserver pages了。然而,在这个竞争更激烈的社会中,一个web程序员需要更多的知识。例如,如果在面试中,你提到你熟悉xml并在jndi方面有些经验(这两种技术初看似乎同web编程没有很紧密的关系),那么你就会给你未来的老板留下更深的印象。设想你已经了解了java编程语言和面向对象的编程,下面还有两组技术是一个人员日常工作中所需要的。第一组包括每个web程序员必须具备的技术。第二组包含要想成为一个高级程序员所应该掌握的技术。
基本技能
如果想称自己是个人员,下面就是必须具备的技术。
html(hypertext markup language)
html几乎是显示在浏览器上所有内容的语言。难怪html就好像是一个web程序员的生存本能一样。如果你仍需要在你的html中查找<tr>或<b>,那么你真的需要提高你的html技术了。html的当前版本是4.01,你可以从http://www.w3.org/tr/1999/rec-html401-19991224/了解更多关于它的内容。
servlets和jsp
java servlet技术是开发java web应用程序的主要技术。它是由sun microsystems在1996年开发的,当前的版本是2.3,但人们正在为版本2.4做准备。
jsp是servlet技术的扩展,现在的版本是1.2(2.0版将很快定下来)。有人认为jsp是servlets的替代,但实际并不是这样的。servlets和jsp是一起用于复杂的web应用程序的。
用java进行web编程的一个好的开端就是学习servlet技术。即使你打算在你的web应用程序中只运用jsp页面,你仍需要学习servlet技术。在更复杂的web应用程序中,jsp页面只用于显示,而javabeans和自定义标签库用来嵌入商业逻辑。即:你也必须精通javabeans和自定义标签库。
javascript
javascript是运行于所有的主要的浏览器中的脚本语言。你用javascript来进行客户端的编程。客户端编程中最重要的工作就是确认用户输入。运用客户端输入验证的好处是减少服务器的工作量并提高响应时间。另外,javascript可以用于重新定向(redirection)、cookie处理、控制applets、创建导航树、打开一个浏览器的一个新的实例、等等。
sql(strutured query language)和jdbc(java database connectivity)
如今,大多数web应用程序都包括访问关系数据库中的数据。作为一个web程序员,你需要知道如何存储、得到并操作数据库中的数据。有时侯,你也需要设计数据库,构建数据库中的表和其它结构。sql就是用来操作数据库中数据的语言。你通常需要编写sql语句(常常是动态的),把它们传递到数据库服务器,并得到返回的数据(如果有的话)。
运用java语言,你需要用jdbc来帮助web应用程序和数据库服务器进行通讯。jdbc有两部分:jdbc core api(application programming interface)和jdbc optional package api。第一组用来执行基本的数据操作,如创建一个连接或读取、更新并删除一个表中的记录。第二组提供更高级的数据库连接功能,如连接池、事务和rowset。jdbc的当前版本是3.0,api包含在j2se v. 1.4中。
web container管理和应用程序部署
你的servlets和jsp页面在一个叫做servlet/jsp container或web container的引擎中运行。你至少需要知道如何为测试以及生产运行部署你的web资源。例如,如果你运用tomcat,你需要了解的一件事就是如何映射配置文件(server.xml)中的应用程序,使tomcat知道如何调用你的jsp页面。另外,你需要知道在哪里保存你的库以及如何创建应用程序部署描述符。
xml(extensible markup language)
xml是计算机领域中一个成功的后起之秀。由world wide web consortium在1996年开发,xml现在已经是用于数据交换和可扩展数据结构的一个广泛的、公认的标准了。xml在java 中扮演着一个重要的角色。例如,每个应用程序的部署描述符都是xml格式的。而且,如果你在开发web servies,你就会用到soap(simple object access protocol),它主要是基于http和xml的。
另外,在web应用程序中,xml也可能用于存储分等级的数据。
model 2结构
这种技术在该类别中是最先进的。建议用这种结构来构建相当复杂的java web应用程序。model 2结构是基于model-view-controller设计范例的。
高级技术
下面这些技术可以将你同初学者区别开来。
jstl(jsp standard tag libraries)、jakarta taglibs项目和其它库
为了加速应用程序的开发,你应该经常重用代码。简单地说,代码重用就是,如果有人已经编写了用来执行某些功能的代码,你最好就去用那些代码,而不要自己编写了。因此,jsp可以让你运用自定义标签。你可以运用几个库,最受欢迎的是apache的jakarta taglibs项目中的库。从http://jakarta.apache.org/taglibs/index.html 可以下载这个包,你在开始创建新类前,可以运用在这个包中找到的任何现成的东西。
jstl最近已经成为了一个标准。其它标签库可以免费或以商业方式得到。
apache的struts项目
struts是一个apache赞助的公共资源项目,它为构建model 2 java web应用程序提供了一个构架。struts为mvc结构提供它自己的controller组件,将ejb、jdbc和jndi用于model,将jsp和其它技术用于view。你可以从它的网站找到更多关于这个项目的更详细的信息:http://jakarta.apache.org/struts/index.html。
xhtml(extensible hypertext markup language)
xhtml是努力将html和xml结合起来的一种技术。你可以把xhtml当作下一代的html。其当前的版本是1.0(第二版是于2002年8月1日发布的),xhtml还没有像html那么流行,但它在将来会发挥更重要的作用。根据web设计专家molly holzschlag的观点,推动各个公司转向xhtml的主要原因是美国的关于公开访问(accessibility)的法律。更多关于xhtml的信息,参阅holzschlag访谈。
dhtml(动态html)
dhtml可以允许人们在你的网站上进行更多的交互。例如,运用dhtml,当用户移动鼠标到一个链接上时,你就可以很容易地创建并显示子菜单。运用dhtml的最大的挑战是创建跨浏览器的页面。的确,在理论上,页面设计应该是由美工处理的,其中动态的html是通过运用一个工具而产生的。然而,一个web程序员通常要负责集成所有的部分,如果在页面中生成的代码被破坏了,你就需要了解dhtml来修理它。
applet 编程
applets曾经在提供交互性方面很重要,尤其在dhtml出现前。现在,applets的作用被削减了,更多的程序员已经不用applets了。microsoft决定在它的新浏览器中不为applets提供缺省的支持极大地削减了applets在web应用程序中的作用。然而,applets并没有消亡。对于某些任务,如显示新闻标题,applets仍然是不可替代的,而且applets不会产生另人头痛的跨浏览器兼容方面的问题。
http协议
java web程序员通常运用比http更高的协议,如运用servlet和jsp apis。这些apis隐藏了http协议的复杂性。因此,你仍可以构建重要的应用程序而不需要知道多少关于http协议的知识。只有当你需要处理原始数据,比如将文件作为附件上载或传送时,你才需要更多关于协议的知识。
ejb(enterprise javabeans)
ejb是j2ee的一部分,当可扩展性和强大性是你的web应用程序的主要需求时,ejb就很重要。在当前规范(ejb 2.0)中有三种类型的ejbs:会话(session)ejbs、实体(entity)ejbs和消息驱动的(message driven)ejbs。新的规范,2.1版,正在设计中。
jndi(java naming and directory interface)
当你在开发企业beans时,jndi很重要,因为对一个ejb的访问是通过jndi的命名服务完成的。运用一个命名服务来查找与一个特定名字相关的一个对象。在ejb context中,一个命名服务找到一个企业bean,给定这个bean的名字。因此,了解jndi在开发一个ejb应用程序中是至关重要的。另外,jdbc可以用jndi来访问一个关系数据库。
其它工具
了解在哪里可以找到特定的支持工具通常有助于的你的事业的发展。例如,如果你碰巧被分配去做关于基准的任务,那么你如果知道你可以从apache的jakarta project下载jmeter,你就会很高兴。另外,如果你需要以pdf格式发送输出结果,建议你从http://www.lowagie.com/itext/ 运用可以免费下载的java-pdf库。internet技术范围很广而且发展很快。这就是说,作为一个web程序员,你应该时时留心业界出现了什么新技术,发生了什么大事。在这个方面,没有什么比internet本身更伟大的资源了。
-------------------------------------------------------------
客户端(client)与服务器端(server)的概念
服务器:广义地说,服务器分两种(硬件服务器、软件服务器)
硬件服务器:指相对pc机而言,性能和稳定性较好的、采用特殊硬件的计算机。
软件服务器:通俗的说,就是指安装了某种服务软件,并能提供相应的服务的机器,我们称之为服务器。
服务软件有很多种,常见的有:
www服务的软件:pws、iis、apache
j2ee中间件应用服务器:websphere、silverstream
jsp引擎(弱的www服务功能):tomcat,resin,weblogic,jrun
smtp、 pop3:iis的smtp,exchange,lotus domino
ftp:iis所自带
客户端:相对服务器来说,就是享受了某种服务的一方,被称之为客户端。但若要享有某种服务也必须安装相应的软件,如(ie/netscape、outlook/foxmail、cuteftp)
数据类型
基本类型有以下四种:
int长度数据类型有:byte(8bits)、short(16bits)、int(32bits)、long(64bits)
float长度数据类型有:单精度(32bits float)、双精度(64bits double)
boolean类型变量的取值有:ture、false
char数据类型有:unicode字符,16位
对应的类类型:integer、float、boolean、character、double、short、byte、long
转换原则:
从低精度向高精度转换byte 、short、int、long、float、double、char
注:两个char型运算时,自动转换为int型;当char与别的类型运算时,也会先自动转换为int型的,再做其它类型的自动转换
1,基本类型向类类型转换
正向转换:
通过类包装器来new出一个新的类类型的变量
integer a= new integer(2);
反向转换:
通过类包装器来转换
int b=a.intvalue();
2,类类型向字符串转换
正向转换:
因为每个类都是object类的子类,而所有的object类都有一个tostring()函数,所以通过tostring()函数来转换即可
反向转换:
通过类包装器new出一个新的类类型的变量
eg1: int i=integer.valueof(“123”).intvalue()
说明:上例是将一个字符串转化成一个integer对象,然后再调用这个对象的intvalue()方法返回其对应的int数值。
eg2: float f=float.valueof(“123”).floatvalue()
说明:上例是将一个字符串转化成一个float对象,然后再调用这个对象的floatvalue()方法返回其对应的float数值。
eg3: boolean b=boolean.valueof(“123”).booleanvalue()
说明:上例是将一个字符串转化成一个boolean对象,然后再调用这个对象的booleanvalue()方法返回其对应的boolean数值。
eg4:double d=double.valueof(“123”).doublevalue()
说明:上例是将一个字符串转化成一个double对象,然后再调用这个对象的doublevalue()方法返回其对应的double数值。
eg5: long l=long.valueof(“123”).longvalue()
说明:上例是将一个字符串转化成一个long对象,然后再调用这个对象的longvalue()方法返回其对应的long数值。
eg6: char=character.valueof(“123”).charvalue()
说明:上例是将一个字符串转化成一个character对象,然后再调用这个对象的charvalue()方法返回其对应的char数值。
3,基本类型向字符串的转换
正向转换:
如:int a=12;
string b;
b=a+””;
反向转换:
通过类包装器
eg1:int i=integer.parseint(“123”)
说明:此方法只能适用于字符串转化成整型变量
eg2: float f=float.valueof(“123”).floatvalue()
说明:上例是将一个字符串转化成一个float对象,然后再调用这个对象的floatvalue()方法返回其对应的float数值。
eg3: boolean b=boolean.valueof(“123”).booleanvalue()
说明:上例是将一个字符串转化成一个boolean对象,然后再调用这个对象的booleanvalue()方法返回其对应的boolean数值。
eg4:double d=double.valueof(“123”).doublevalue()
说明:上例是将一个字符串转化成一个double对象,然后再调用这个对象的doublevalue()方法返回其对应的double数值。
eg5: long l=long.valueof(“123”).longvalue()
说明:上例是将一个字符串转化成一个long对象,然后再调用这个对象的longvalue()方法返回其对应的long数值。
eg6: char=character.valueof(“123”).charvalue()
说明:上例是将一个字符串转化成一个character对象,然后再调用这个对象的charvalue()方法返回其对应的char数值。