js入门(js(JavaScript)和jsp(Java Server Pages)的区别)

时间:2021-12-25 21:06:00


该入门由hamal搜集网上的资料整理而成。

希望大家在看完本入门之后能分清楚js(JavaScript)和jsp(Java Server Pages)的区别。

希望这两篇文档对大家能有所帮助!

............................................................................................................

JavaScript简介

通过超文本(Hyper Text)和超媒体(Hyper Media)技术结合超链接(Hyper link)的链接功能将各

种信息组织成网络结构(web),构成网络文档(Document),实现Internet上的“漫游”。通过HTML符

号的描述就可以实现文字、表格、声音、图像、动画等多媒体信息的检索。

然而采用这种超链技术存在有一定的缺陷,那就是它只能提供一种静态的信息资源,缺少动态的

客户端与服务器端的交互。虽然可通过CGI(Common Gateway Interface)通用网关接口实现一定的交

互,但由于该方法编程较为复杂,因而在一段时间防碍了Internet技术的发展。而JavaScript的出

现,无凝为Internet网上用户带来了一线生机。可以这样说,JavaScript的出现是时代的需求,是当

今的信息时代造就了JavaScript。

JavaScript的出现,它可以使得信息和用户之间不仅只是一种显示和浏览的关系,而是实现了一

种实时的、动态的、可交式的表达能力。从而基于CGI静态的HTML页面将被可提供动态实时信息,并

对客户操作进行反应的Web页面的取代。JavaScript脚本正是满足这种需求而产生的语言。它深受广

泛用户的喜爱的欢迎。它是众多脚本语言中较为优秀的一种,它与WWW的结合有效地实现了网络计算

和网络计算机的蓝图。无凝Java家族将占领Internet网络的主导地位。因此,尽快掌握JavaScript

脚本语言编程方法是我国广大用户日益关心的。

一、JavaScript的历史

  谈到JavaScript的历史,首先就得介绍[网景](Netscape)这家公司,相信很多人使用过

Netscape浏览器来浏览网页,这家公司在设计浏览器的时候,一方面为了辅助本身发展的一种名为

LiveWire的程式,另一方面为了提高网页设计的互动性,所以发展了LiveScript这个电脑语言。

  那JavaScript和LiveScript有什么关系呢?在Netscape发展LiveScript的同时,另一家名为[升

阳](Sun)的公司也正在发展Java语言,为了辅助Java的网页程式方面的设计,所以这两家公司进

行合作,共同发展LiveScript语言,并且将LiveScript语言改名为Javacript,这就是Javacript的

由来。

  JavaScript刚开始时仅应用在Netscape浏览器,不过随着使用JavaScript制作网页的人愈来愈

多,微软的IE浏览器也提供了新功能,现在可以在IE浏览器上看到JavaScript的效果了。


二、什么是JavaScript

JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。使用

它的目的是与HTML超文本标记语言、Java 脚本语言(Java小程序)一起实现在一个Web页面中链接

多个对象,与Web客户交互作用。从而可以开发客户端的应用程序等。它是通过嵌入或调入在标准的

HTML语言中实现的。它的出现弥补了HTML语言的缺陷,它是Java与HTML折衷的选择,具有以下几个

基本特点:

1、是一种脚本编写语言
JavaScript是一种脚本语言,它采用小程序段的方式实现编程。像其它脚本语言一样,JavaScript同

样已是一种解释性语言,它提供了一个易的开发过程。
它的基本结构形式与C、C++、VB、Delphi十分类似。但它不像这些语言一样,需要先编译,而是在

程序运行过程中被逐行地解释。它与HTML标识结合在一起,从而方便用户的使用操作。

2、基于对象的语言。
JavaScript是一种基于对象的语言,同时以可以看作一种面向对象的。这意味着它能运用自己已经

创建的对象。因此,许多功能可以来自于脚本环境中对象的方法与脚本的相互作用。

3、简单性
JavaScript的简单性主要体现在:首先它是一种基于Java基本语句和控制流之上的简单而紧凑的设

计, 从而对于学习Java是一种非常好的过渡。其次它的变量类型是采用弱类型,并未使用严格的数

据类型。

4、安全性
JavaScript是一种安全性语言,它不允许访问本地的硬盘,并不能将数据存入到服务器上,不允许

对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互。从而有效地防止数据的丢

失。

5、动态性的
JavaScript是动态的,它可以直接对用户或客户输入做出响应,无须经过Web服务程序。它对用户的

反映响应,是采用以事件驱动的方式进行的。所谓事件驱动,就是指在主页(Home Page)中执行了某

种操作所产生的动作,就称为“事件”(Event)。比如按下鼠标、移动窗口、选择菜单等都可以视为

事件。当事件发生后,可能会引起相应的事件响应。

6、跨平台性
JavaScript是依赖于浏览器本身,与操作环境无关,只要能运行浏览器的计算机,并支持

JavaScript的浏览器就可正确执行。从而实现了“编写一次,走遍天下”的梦想。

实际上JavaScript最杰出之处在于可以用很小的程序做大量的事。无须有高性能的电脑,软件仅需

一个字处理软件及一浏览器,无须WEB服务器通道,通过自己的电脑即可完成所有的事情。

综合所述JavaScript是一种新的描述语言,它可以被箝入到HTML的文件之中。JavaScript语言可以

做到回应使用者的需求事件(如:form的输入),而不用任何的网路来回传输资料,所以当一位使用

者输入一项资料时,它不用经过传给伺服端(server)处理,再传回来的过程,而直接可以被客户端

(client) 的应用程式所处理。

JavaScript 和 Java 很类似,但到底并不一样! Java 是一种比 JavaScript 更复杂许多的程式语

言,而 JavaScript 则是相当容易了解的语言。JavaScript 创作者可以不那麽注重程式技巧,所以

许多 Java 的特性在 Java Script 中并不支援。

三、JavaScript和Java的区别

虽然JavaScript与Java有紧密的联系,但却是两个公司开发的不同的两个产品。Java是SUN公司推出

的新一代面向对象的程序设计语言,特别适合于Internet应用程序开发;而JavaScript是Netscape

公司的产品,其目的是为了扩展Netscape Navigator功能,而开发的一种可以嵌入Web页面中的基于

对象和事件驱动的解释性语言, 它的前身是Live Script;而Java的前身是Oak语言。下面对两种语

言间的异同作如下比较:

1、基于对象和面向对象
Java是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象。
JavaScript是种脚本语言,它可以用来制作与网络无关的,与用户交互作用的复杂软件。它是一种

基于对象(Object Based)和事件驱动(Event Driver)的编程语言。因而它本身提供了非常丰富

的内部对象供设计人员使用。

2、解释和编译
两种语言在其浏览器中所执行的方式不一样。Java的源代码在传递到客户端执行之前,必须经过编

译,因而客户端上必须具有相应平台上的仿真器或解释器,它可以通过编译器或解释器实现独立于

某个特定的平台编译代码的束缚。
JavaScript是一种解释性编程语言,其源代码在发往客户端执行之前不需经过编译,而是将文本格

式的字符代码发送给客户编由浏览器解释执行。

3、JavaScript的结构较为*松散,譬如,程式中使用的变数前并不是需要明确的定义,而Java和

正统的程式语言一样,结构较为严谨。
例如:强变量和弱变量
两种语言所采取的变量是不一样的。
Java采用强类型变量检查,即所有变量在编译之前必须作声明。如:

Integer x;
String y;
x=1234;
x=4321;

其中X=1234说明是一个整数,Y=4321说明是一个字符串。
JavaScript中变量声明,采用其弱类型。即变量在使用前不需作声明,而是解释器在运行时检查其

数据类型,如:

x=1234;
y="4321";

前者说明x为其数值型变量,而后者说明y为字符型变量。

4、代码格式不一样
JavaScript的代码是一种文本字符格式,可以直接嵌入HTML文档中,并且可动态装载。编写HTML文

档就像编辑文本文件一样方便。并且JavaScript必须编写在HTML文件中,直接查看网页的原始码,

就可以看到JavaScript程式,所以没有保护,任何人都可以透过HTML文件复制程式。
Java是一种与HTML无关的格式,必须通过像HTML中引用外媒体那么进行装载,其代码以字节代码的

形式保存在独立的文档中。Java应用在网页的程式称为Java Applet(Applet是[小程式]的意思),

是和HTML文件分开的。

5、嵌入方式不一样
在HTML文档中,两种编程语言的标识不同,JavaScript使用<Script>...</Script>来标识,而Java

使用<applet>...</applet>来标识。

6、静态联编和动态联编
JavaScript是一种象文件一样的描述语言,透过浏览器就可以直接执行;而Java像正统的程式语言

(如C/C++)一样,必须先进行编绎和连结等动作才可执行。
Java采用静态联编,即Java的对象引用必须在编译时的进行,以使编译器能够实现强类型检查。
JavaScript采用动态联编,即JavaScript的对象引用在运行时进行检查,如不经编译则就无法实现

对象引用的检查。

7、JavaScript不具有读写档案及网络控制等功能(它的设计者考虑到安全性的因素而没有提供支持

),Java则有提供这些功能,但是JavaScript在网页内容的控制和互动性方面,可算是最方便快捷

的。

四、JavaScript程序运行环境

软件环境:
·Windows 95/98或Windows NT。
·Netscape Navigator x.0或Internet Explorer x.0。
·用于编辑HTML文档的字符编辑器(WS、WPS、Notepad、WordPad等)或HTML文档编辑器。

硬件配置:
首先必须具备运行Windows 95/98或Windows NT的基本硬件配置环境。推荐:
·基本内存32M。
·CRT只少需要256颜色,分辨率在640X480以上。
·CPU只少233以上。
·鼠标和其它外部设置(根据需要选用)。

五、编写第一个JavaScript程序

下面我们通过一个例子,编写第一个JavaScript程序。通过它可说明JavaScript的脚本是怎样被嵌

入到HTML文档中的。

test1.html文档:

<html>
<head>
<Script Language ="JavaScript">
// JavaScript Appears here.
alert("这是第一个JavaScript例子!");
alert("欢迎你进入JavaScript世界!");
alert("今后我们将共同学习JavaScript知识!");
</Script>
</Head>
</Html>

说明:

·test.html是HTML文档,其标识格式为标准的HTML格式;
·如同HTML标识语言一样, JavaScript程序代码是一些可用字处理软件浏览的文本,它在描述页面

的HTML相关区域出现。
·JavaScript代码由 <Script Language ="JavaScript">...</Script>说明。在标识<Script

Language ="JavaScript">...</Script>之间就可加入JavaScript脚本。
·alert()是JavaScript的窗口对象方法,其功能是弹出一个具有OK对话框并显示()中的字符串。
·通过<!-- ...//-->标识说明:若不认识JavaScript代码的浏览器,则所有在其中的标识均被忽略

;若认识,则执行其结果。使用注释这是一个好的编程习惯,它使其他人可以读懂你的语言。
·JavaScript 以 </Script> 标签结束。

从上面的实例分析中我们可以看出,编写一个JavaScript程序确实非常容易的。

----------------------------------------------

JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。

  用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。

  JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。

  Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。

  JSP与Java Servlet一样,是在服务器端执行的,通常返回该客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。

  JSP的1.0规范的最后版本是1999年9月推出的,12月又推出了1.1规范。目前较新的是JSP1.2规范,JSP2.0规范的征求意见稿也已出台。

  JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Java Servlet 是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。

  自JSP推出后,众多大公司都支持JSP技术的服务器,如IBM、Oracle、Bea公司等,所以JSP迅速成为商业应用的服务器端语言。

[编辑本段]JSP 2.0介绍

  新的JSP规范版本包括新的用于提升程序员工作效率功能,主要有:

  An Expression Language (EL)

  允许开发者创建 Velocity-样式 templates (among other things).更快更简单的创建新标签的方法。

  Hello, ${param.visitor} <%-- same as: Hello, <%=request.getParameter("visitor")%> --%>

  MVC 模式

  为了把表现层presentation从请求处理request processing 和数据存储data storage中分离开来,SUN公司推荐在JSP文件中使用一种“模型-视图-控制器”Model-view-controller 模式。规范的SERVLET或者分离的JSP文件用于处理请求。当请求处理完后,控制权交给一个只作为创建输出作用的JSP页。有几种平台都基于服务于网络层的模-视图-控件 模式(比如Struts 和Spring framework)。

[编辑本段]JSP技术的强势

  (1)一次编写,到处运行。在这一点上Java比PHP更出色,除了系统之外,代码不用做任何更改。

  (2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/PHP的局限性是显而易见的。

  (3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。

  (4)多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。

[编辑本段]JSP技术的弱势

  (1) 与ASP一样,Java的一些优势正是它致命的问题所在。正是由于为了跨平台的功能,为了极度的伸缩能力,所以极大的增加了产品的复杂性。

  (2) Java的运行速度是用class常驻内存来完成的,所以它在一些情况下所使用的内存比起用户数量来说确实是“最低性能价格比”了。从另一方面,它还需要硬盘空间来储存一系列的.java文件和.class文件,以及对应的版本文件。

[编辑本段]JSP内置对象:

  一.request对象:

  该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以获取用户提交信息。

  下面介绍request的常用方法:1,getParameter();使用如下 String str=request.getParameter();2,setAttribute();和getAttribute();

  removeAttribute(); getMethod();getProtocol();getReqeustURI();getRemoteAddr();getServerPort();he getServerName();

  二.response对象

  对客户的请求做出动态的响应,向客户端发送数据。

  

  三.session对象

  1.什么是session:session对象是一个JSP内置对象,它在第一个JSP页面被装载时自动创建,完成会话期管理。

  从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间反复连接,反复刷新一个页面,服务器应当通过某种办法知道这是同一个客户,这就需要session对象。

  2.session对象的ID:当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个session对象,同时分配一个String类型的ID号,JSP引擎同时将这个ID号发送到客户端,存放在Cookie中,这样session对象和客户之间就建立了一一对应的关系。当客户再访问连接该服务器的其他页面时,不再分配给客户新的session对象,直到客户关闭浏览器后,服务器端该客户的session对象才取消,并且和客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的session对象。

  3.session对象存在一定时间过期问题,所以存在session中的名值对会在一定时间后失去,可以通过更改session有效时间来避免这种情况。同时编程时尽量避免将大量有效信息存储在session中,request是一个不错的替代对象。

  四.application对象

  1.什么是application:

  服务器启动后就产生了这个application对象,当客户在所访问的网站的各个页面之间浏览时,这个application对象都是同一个,直到服务器关闭。但是与session不同的是,所有客户的application对象都是同一个,即所有客户共享这个内置的application对象。

  2.application对象常用方法:

  (1)public void setAttribute(String key,Object obj): 将参数Object指定的对象obj添加到application对象中,并为添加的对象指定一个索引关键字。

  (2)public Object getAttribute(String key): 获取application对象中含有关键字的对象。

  五.out对象

  out对象是一个输出流,用来向客户端输出数据。out对象用于各种数据的输出。

  六.page java.lang.Object
对应this关键字。JSP网页本身,page对象是当前页面转换后的Servlet类的实例。从转换后的Servlet类的代码中,可以看到这种关系:Object page = this;在JSP页面中,很少使用page对象。

  

  七.config

  javax.servlet. ServletConfig 的实例,该实例代表该JSP 的配置信息。常用的方法有getInitParameter(String paramNarne) 及getInitParameternarnes() 等方法。事实上, JSP 页面通常无须配置,也就不存在配置信息。因此,该对象更多地在Servlet 中有效。

  八.exception

  java.lang.Throwable 的实例,该实例代表其他页面中的异常和错误。只有当页面是错误处理页面,即编译指令page 的isErrorPage 属性为true 时,该对象才可以使用。常用的方法有getMessage()和printStackTrace()等。

  九. pageContext

  javax.servlet.jsp.PageContext 的实例,该对象代表该JSP 页面上下文,使用该对象可以访问页面中的共享数据。常用的方法有getServletContext()和getServletConfig()等。

  //使用pageContext 设置属性,该属性默认在page 范围内

  pageContext. setAttribute("page" , "hello") ;

  //使用request 设置属性,该属性默认在request 范围内

  request. setAttribute ("request" , "hello");

  //使用pageContext将属性设置在request 范围中

  pageContext.setAttribute("request2" , "hello" , pageContext.REQUEST_SCOPE);

  // 使用session将属性设置在session 范围中

  session.setAttribute("session" , "hello");

  //使用pageContext将属性设置在session范围中

  pageContext.setAttribute("session2" , "hello" , pageContext.SESSION_SCOPE);

  //使用application将属性设置在application范围中

  application. setAttribute ("app" , "hello") ;

  //使用pageContext 将属性设置在application 范围中

  pageContext.setAttribute("app2" , "hello" , pageContext.APPL 工CATION_SCOPE) ;

[编辑本段]JSP的技术方法

  为了快速方便地进行动态网站的开发,JSP在以下几个方面做了改进,使其成为快速建立跨平台的动态网站的首选方案。

  1.将内容的生成和显示进行分离

  用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面,并使用JSP标识或者小脚本来生成页面上的动态内容(内容是根据请求变化的,例如请求账户信息或者特定的一瓶酒的价格等)。生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在脚本中,所有的脚本在服务器端运行。由于核心逻辑被封装在标识和JavaBeans中,所以Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。

  在服务器端,JSP引擎解释JSP标识和脚本,生成所请求的内容(例如,通过访问JavaBeans组件,使用JDBC技术访问数据库或者包含文件),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这既有助于作者保护自己的代码,又能保证任何基于HTML的Web浏览器的完全可用性。

  2.可重用组件

  绝大多数JSP页面依赖于可重用的、跨平台的组件(JavaBeans或者Enterprise JavaBeans组件)来执行应用程序所要求的复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者和客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。

  3.采用标识

  Web页面开发人员不会都是熟悉脚本语言的编程人员。JSP技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容生成所需要的。标准的JSP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。

  4.适应平台

  几乎所有平台都支持Java,JSP+JavaBeans几乎可以在所有平台下通行无阻。从一个平台移植到另外一个平台,JSP和JavaBeans甚至不用重新编译,因为Java字节码都是标准的与平台无关的。

  5.数据库连接

  Java中连接数据库的技术是JDBC,Java程序通过JDBC驱动程序与数据库相连,执行查询、提取数据等操作。Sun公司还开发了JDBC-ODBC bridge,利用此技术Java程序可以访问带有ODBC驱动程序的数据库,目前大多数数据库系统都带有ODBC驱动程序,所以Java程序能访问诸如Oracle、Sybase、MS SQL Server和MS Access等数据库。

  此外,通过开发标识库,JSP技术可以进一步扩展。第三方开发人员和其他人员可以为常用功能创建自己的标识库。这使得Web页面开发人员能够使用熟悉的工具和如同标识一样的执行特定功能的构件来进行工作。

  JSP技术很容易整合到多种应用体系结构中,以利用现存的工具和技巧,并且能扩展到支持企业级的分布式应用中。作为采用Java技术家族的一部分,以及Java 2(企业版体系结构)的一个组成部分,JSP技术能够支持高度复杂的基于Web的应用。 由于JSP页面的内置脚本语言是基于Java的,而且所有的JSP页面都被编译成为Java Servlets,所以JSP页面具有Java技术的所有好处,包括健壮的存储管理和安全性。作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。

[编辑本段]JSP的应用模型

  利用JSP技术,动态信息由JSP页面来表现,JSP页面由安装在Web服务器或者使用JSP的应用服务器上的JSP引擎执行。JSP引擎接受客户端对JSP页面的请求,并且生成JSP页面作为对客户端的响应。

  JSP页面通常被编译成为Java Servlets,这是一个标准的Java扩展。页面开发人员能够访问全部的Java应用环境,以利用Java技术的扩展性和可移植性。当JSP页面第一次被调用时,如果它还不存在,就会被编译成为一个Java Servlets类,并且存储在服务器的内存中。这就使得在接下来的对该页面的调用中,服务器会有非常快的响应(这避免了CGI-BIN为每个HTTP请求生成一个新的进程的问题)。

  JSP页面可以包含在多种不同的应用体系结构或者模型中,可以用于由不同协议、组件和格式所组成的联合体中。基于JSP的动态信息发布技术是一个开放的、可扩展的建立动态Web页面的标准。不论采用什么创建工具,开发人员都可以使用JSP页面来创建可移植的Web应用,在不同的Web应用服务器上运行。

[编辑本段]JSP开发入门

  JavaServer Pages (JSP) 是一种以 Java为主的跨平台web开发语言。

  JSP与微软的Active Server Pages 兼容,但它是使用类似HTML的卷标以及Java程序代码段而不是VBScript。当你所使用的网站服务器没有提供本地ASP支持,也就是Apache或Netscape服务器时,你可以考虑使用JSP。虽然你可以取得这些服务器的ASP附加配备模块,但价格相当昂贵,而目前Sun并没有对你所需要的JSP组件收取费用(虽然Sun未来有可能会收费)。对于Solaris与Linux以及Windows,这些组件也都很容易取得。 

  请不要将JSP与服务器端的JavaScript混为一谈。网站服务器会自动将以JSP写成的Java程序代码段转换成Java servlets。而许多先前必须以Perl手写程序或服务器特定的API(如ASP)控制的功能也都可透过JSP来自动化处理。

  现在就让我们开始动手帮助你建立一个可执行JSP范例网站。

  一、安装好你的机器来使用JSP

  二、JSP语法的基本原理

  三、JSP与JavaBean

  四、JSP的内部对象

  五、JSP其他相关资源

  JSP开发入门2

  安装好你的机器来使用JSP

  你将会需要Java 2软件开发工具(JSDK),它原来的名称是Java开发工具(JDK)以及JavaServer网站开发工具(JSWDK),Tomcat,或是其它支持JSP的网络服务器。Sun免费提供JSDK与JSWDK来供Windows,Solaris,以及Linux平台使用。 

  如果你想要在你目前的网络服务器上使用JSP,但服务器本身并不支持JSP与Java servlets,你可以试试看Allaire的Jrun,它的作用就像是针对Netscape企业版与FastTrack服务器、微软的网际网络信息服务器(IIS)与个人网络服务器(PWS)、Apache、以及其它服务器的网络服务器附加设备。你也可以使用Apache网络服务器的Java版本,最新的JSWDK里有提供。

  下载与安装你需要的组件

  目前发布的1.2.2-001,JSDK可下载的版本是以可安装的压缩形式。下载的文件大约是20MB,可提供完整的Java发展环境,让你能建立利用标准API为核心的Java解决之道。然而,你的网络服务器需要应用到JSP的唯一一件事是Java编译器。要让网络服务器知道编译器的位置,将环境变量JAVA.HOME设到JSDK的安装目录。如果你是在Windows上安装并且接受预设目录,将这行程序代码set JAVA.HOME=C:1.2.2加到你的autoexec.bat档案并且重新开机。

  在安装好JSDK之后,下载并且安装JSWDK或beta版的Tomcat,以Java为主的Apache网络服务器。安装在哪里并不重要,重要的是你可以找到它。一般而言,它会放在上层目录,这种方式可以让你取代JSWDK或 JSDK的网络服务器,不需要移动其它的网络服务器。在你安装好这个档案之后,你就可以准备发展JSP了。

  在你正确的安装JSWDK之后,执行startserver指令文件来激活网络服务器,预设通讯端口 为 8080。要看你在激活服务器之后是均C有正确的安装工具,你可以加载范例JSP档案中的任何一个(http://localhost:8080/examples/jsp/)。如果你能够成功的执行一个范例档案,你可以知道你已经正确的设定好软件了。如果你在激活服务器的控制台窗口看到错误讯息,那么你需要解决这个问题。最常发生的问题是没有设定(或者不正确设定)环境变量JAVA.HOME。要检视目前的环境设定,在DOS模式下键入set。

  开始

  解释JSP语法之前,先建立一个显示目前日期与时间的快速网页并且将它储存成sample.jsp:

  <html>

  <head>

  <title>First Page</title>

  </head>

  <body>

  <H3>Today is:

  <%= new java.util.Date() %>

  </H3>

  </body>

  </html>.

  将这个档案与你所有的HTML与JSP网页放在你JSWDK安装目录下的网页目录里. 你可以在http://localhost:8080/sample.jsp下载此页.当你第一次参观这个网页时,网站服务器会将JSP翻译成Java servlet程序代码,那你就会看到目前的日期与时间.

  现在你已经下载,安装,并且架构好发展环境,你已经准备好要了解JSP语法与建立你自己的JSP为主的解决之道.

  JSP开发入门3

  JSP语法的基本原理

  安装之后,接下来我们要讨论JSP的语法.如果要偷懒,你可以下载语法卡而如果你不熟悉 Java的程序设计,你可能会想要参考Sun的使用手册;然而,网站建立者不应该做太多的Java发展。除了几个函数调用之外,出现在你JSP网页上的Java程序代码应该将它减到最少;

  记住这点之后,现在让我们先来看看JSP的编译器指引与指令组件,之后我们将解释JavaBeans与内部对象. JSP编译器指引与指令组件有五种型态.JSP 1.0之后,大部分的JSP是包含在以<% 作为开始%>作为结束的单一卷标里.新的 JSP 1.1规格已经发表了,它同时也与XML兼容.

  JSP的编译器指引与指令组件

  编译器指示 <%@ 编译器指示 %>

  声明 <%! 声明 %>

  表达式 <%= 表达式 %>

  程序代码段/小型指令 <% 程序代码片段 %>

  注释 <%-- 注释 --%>

  编译器指示

  JSP的编译器指示是针对JSP引擎。它们并不会直接产生任何看得见的输出;相反的,它们是在告诉引擎如何处理其它的JSP网页。它们永远包含在 <%@ ?%>卷标里。两个主要的指引是 page与include。我们不会讨论taglib编译器指引但它可以在JSP1.1里用来建立自订卷标。

  你几乎可以在你所有的JSP网页最上面找到page编译器指示。虽然这不是必须的,但它可以让你指定到哪里可以找到支持的Java类别这类的事:

  <%@ page import="java.util.Date" %>, 

  当发生Java问题的事件时应该将讯息传送到哪里:

  <%@ page errorPage="errorPage.jsp" %>, 

  以及你是?需要为使用者管理通话期的信息,可能存取多个网页(稍后在JavaBeans里会有更多通话期的讨论):

  <%@ page session="true" %>。 

  include编译器指示让你将你的内容分成几个可管理的组件,就像那些有表头或脚注的网页。所包含的网页可以是固定格式的HTML网页或者是JSP内容的网页:

  <%@ include file="filename.jsp" %>。

  宣告

  JSP声明让你定义网页层的变量,来储存信息或定义支持的函式,让JSP网页的其余部分能够使用。如果你发现自己有太多的程序代码,你最好将它们放在不同的Java类别里。你可以在 <%! ?%>卷标里找到声明。记住要在变量声明的后面加上分号,就跟任何有效的Java叙述的形式一样: <%! int i=0; %>。

  表达式

  JSP里有表达式,评估表达式的结果可以转换成字符串并且直接使用在输出网页上。JSP运算是属于 <%= ?%> 卷标里,并不包含分号,加引号字符串的无用部分。

  <%= i %>

  <%= "Hello" %> 。

  程序代码段/小型指令文件

  JSP程序代码片段或小型指令文件是包含在<% ?%> 卷标里。当网络服务器接受这段请求时,这段Java程序代码会执行。小型指令文件可以是原始的HTML或XML,其内部的程序代码片段可以让你建立有条件的执行程序代码,或者只是一些使用另一块程序代码的东西。举例来说,下列的程序代码结合了表达式与小型指令文件,在H1,H2,H3,以及H4卷标里显示字符串"Hello"。小型指令文件不限于一行的原始程序代码 :

  <% for (int i=1; i<=4; i++) { %>

  <H<%=i%>>Hello</H<%=i%>>

  <% } %>。

  注释

  最后一个主要JSP组件是嵌入式注释。虽然你可以在你的档案里包含HTML注释,如果使用者检视网页的原始码,他们也会看到这些注释。如果你不要让使用者看到你的批注,你可以将它放在<%-- ?--%>卷标里:

  <%-- 针对服务器端的注释 --%>。

  JSP开发入门4

  JSP与JavaBean

  虽然你可以在小型指令文件里放入一大块的程序代码,但是大多数的Java程序代码是属于可以重复使用的组件,称为JavaBean。JavaBean就跟ActiveX控件一样:它们提供已知的功能,并且是为了可随时重复使用的目的而设计的。

  JavaBean的价值在于它可以经由一组特性来使用,而这些特性则提供对JavaBean设定的存取。以人来作范例,此人就是JavaBean,而他的姓名,社会福利安全号码,以及住址可以是特性。对于JSP网站,基本上你是将'JavaBean'动态的连接到你的网站。

  假设JavaBean是在建立网站之前建好的,你要做的第一件事是告诉JSP网页它所需要使用JavaBean.这工作可以用<jsp:useBean>卷标来完成:<jsp:useBean id="localName" class="com.jguru.Person" scope="application" />.

  <jsp:useBean>卷标需要你以id 属性来辨识豆子.在这里,你提供一个名称让JSP网页来辨识豆子,除了id 属性之外,你也必须告诉网页要到哪里去找这个豆子,或者是它的Java类别名称。类别属性提供如何在各式方法之中找到它,最后一个需要的组件是scope 属性.有了范围属性的帮助,你可以告诉豆子,要它为单一网页(预设)[scope="page"];为一个被请求的网页[scope="request"];为通话期[scope="session"];或为整个应用程序[scope="application"]来维护它自己的信息.对于通话期范围,你可以很容易的维护JSP网页里的项目,例如购物车。

  一但你宣告了JavaBean之后,你就可以存取它的特性来订定它。要取得一特性的值,使用<jsp:getProperty>卷标。有了<jsp:getProperty>卷标,你可以指定要使用的豆子名称(从useBean的id字段),以及你要取得值的特性。接着,真正的值就会放在输出里:<jsp:getProperty id="localName" property="name" />.

  要更改JavaBean的特性,你需要使用<jsp:setProperty>卷标.对这个卷标,你也需要辨认豆子以及要修正的特性,除此之外,你还需要提供新值.如果命名正确,这些可以直接经由规定的格式取得:<jsp:setProperty id="localName" property="*" />; 

  要从一参数取得,你必须直接命名此特性以及参数: <jsp:setProperty id="localName" property="address" param="parameterName" />; 

  或是直接以名称与值来设定: <jsp:setProperty id="localName" property="serialNumber" value="string" /> or <jsp:setProperty id="localName" property="serialNumber" value= <%= expression %> />.

  有关JavaBean的最后一点:要让网络服务器可以找到JavaBean,你需要将它们的类别档案放在特别位置。对JSWDK而言,最简单的地方是在安装目录里的类别目录,例如 jswdk-1.0.1classes.

  JSP开发入门5

  JSP的内部对象

  最后一个与JSP语法有关的组件叫做内部对象.在JSP小型指令文件内,你可以存取这些内部对象来与执行JSP网页的servlet环境相互作用。许多对内部对象的存取应该要简化。然而,这些是范例,它们的存取都是可接受的,要完整的利用内部对象设定则需要对最新的Java Servlet API有所了解。

  下表列出你可以使用的内部对象。

  内部对象说明

  request 客户端请求,此请求会包含来自GET/POST请求的参数

  response 网页传回客户端的响应

  pageContext 网页的属性是在这里管理

  session 与请求有关的会话

  application servlet正在执行的内容

  out 用来传送响应的输出流

  config servlet的架构对象

  page JSP网页本身

  exception 针对错误网页,未捕捉的例外

  那么,这些是做什么的,而你应该如何使用它们呢?基本上,在你的小型指令文件里,你可以使用它们来存取执行JSP程序代码的servlet。为了避免谈论到太多Servlet API 的细节,让我们来检视一些你可以利用它们来做的事: 

  不必使用表达式,你可以直接存取内部out对象来打印一些东西到response:

  <% out.println("Hello"); %>. 

  不必直接传送参数到JavaBean,你可以藉由请求对象来取得参数的值:

  <% String name=request.getParameter("name"); out.println(name); %>。

  当你以JSP写了许多的应用程序之后,如果你建立了JavaBeans或者发现你自己将太多的Java原始码放入你的JSP档案,你需要建立支持的Java类别,这样可以鼓励重复使用并且降低JSP网页转换时所需要的时间。当你需要建立Java类别时,你必须:

  将JDSWK的安装目录in目录加到你的PATH。在你的autoexec.bat档案的PATH行的最后,加入C:1.2.2in; 。

  以下面的指令将JAR档案复制到jrelibext目录:

  copy c:jswdk-1.0.1libservlet.jar c:jdk1.2.2jrelibext.

  jsp-与ASP的比较

  JSP(Java Server Page)与ASP(Active Server Page)两者都是常用的动态网页技术,也都是可以嵌入HTML中的程序,但两者是有着本质的不同,主要从以下几个方面对其进行比较:

  1.Web服务器的支持:大多数通用的 Web服务器如:ApacheNetscape和Microsoft IIS都支持JSP页面,只有微软本身的Microsoft IIS和Personal Web Server可以支持ASP。

  2.平台的支持:JSP具有平*立性,只要是一般的Java程序可以运行的平台,都支持JSP程序。Windows平台可以很好的支持ASP,但ASP对于基于Win32逐渐模型的依赖,使得它难于移植到其它平台上。

  3.组件模型:JSP是建立在可重用的、跨平台的组件(如:JavaBeans、Enterprises JavaBeans 和用户定制的标签库组件)之上的,而ASP使用的是基于Win32的COM组件模型。

  4.脚本语言:JSP可以使用Java编程语言或JavaScript作为脚本语言,而ASP使用VBScriptJscript作为脚本语言。

  5.安全性:JSP使用Java安全模型,而ASP使用Windows NT的安全结构。

  6.与Access数据库的连接:JSP使用JDBC建立与Access数据库的连接,而ASP对Access数据库使用Data Active Objects。

  7.用户定制的标签:JSP可以使用用户定制标签库进行扩充,而ASP中没有用户定制标签库,ASP是不能扩充的。

[编辑本段]jsp运行时经常遇到的问题及解决方法

  [1]1、如何显示目录列表:

  我们在本机测试程序时,一般都习惯在浏览器中就能遍历到某个目录下都有哪些文件,这就需要web服务器支持目录列表:

  打开文件conf/web.xml,找到以下代码:

  <param-name>listings</param-name>

  <param-value>false</param-value>

  将其中的false改成true

  2、配置[2]error-page:(指定处理错误的页面)

  打开文件D:/demo/WEB-INF/web.xml:

  在<web-app>…</web-app>中间加入:

  <error-page>

  <error-code>404</error-code>

  <location>/NotFound.jsp</location>

  </error-page>

  (错误代码为404的错误导向到NotFound.jsp)

  <error-page>

  <error-code>500</error-code>

  <location>/error.jsp</location>

  </error-page>

  (当系统发生500错误即服务器内部错误时,跳转到错误处理页面error.jsp)

  <error-page>

  <exception-type>java.lang.NullException</exception-type>

  <location>/error.jsp</location>

  </error-page>

  (当系统发生java.lang.NullException(即空指针异常)时,跳转到错误处理页面error.jsp)

  提醒:

  以上页面都需要做大一点(>=2kB),否则不起作用。

  原因:tomcat把这样的页面字节限制在不少于多少字节。

  3、jsp页面出现乱码如何解决?

  在页头加上:

  <%@ page contentType=“text/html; charset=gb2312″%>