JSP动态网页制作技术(doc13)共6页word资料
- 格式:doc
- 大小:32.50 KB
- 文档页数:6
JSP动态网页制作技术JavaServer Pages (JSP) 是一种结合了跨平台与跨网站服务器机制,以 Java为主的技术来产生动态网页。
JSP与微软的ASP(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你将需要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、下载与安装你需要的组件目前发表的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。
要看你在启动服务器之後是否有正确的安装工具,你可以载入范例JSP文件中的任何一个(http://localhost:8080/examples/jsp/)。
如果你能够成功的执行一个范例文件,你可以知道你已经正确的设定好软件了。
如果你在启动服务器的控制台视窗看到错误讯息,那麽你需要解决这个问题。
最常发生的问题是没有设定(或者不正确设定)环境参数JAVA.HOME。
要检查目前的环境设定,在DOS模式下键入set。
2、开始解释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语法的基本原理安装之後,接下来我们要讨论JSP的语法.如果要偷懒,你可以下载语法卡,如果你不熟悉 Java的程序设计,你可能会想要参考Sun的使用手册;然而,网站建立者不应该做太多的Java使用程序,除了几个函数式之外,出现在你JSP网页上的Java程序码应该将它减到最少。
记住这点之後,现在让我们先来看看JSP的编译器指引与指令元件,之後我们将解释JavaBeans与内部物件. JSP编译器指引与指令元件有五种型态.JSP 1.0之後,大部分的JSP是包含在以<% 作为开始%>作为结束的单一标签里,新的 JSP 1.1规格已经发表了,它同时也与XML相容。
1、JSP的编译器指引与指令元件编译器指引 <%@ 编译器指引 %>预定义 <%! 预定义 %>运算式 <%= 运算式 %>程序码片段/小型指令 <% 程序码片段 %>注解 <%-- 注解 --%>2、编译器指引JSP的编译器指引是针对JSP引擎。
它们并不会直接产生任何看得见的输出;相反的,它们是在告诉引擎如何处理其他的JSP网页。
它们永远包含在 <%@ ?%>标签里。
两个主要的指引是 page与include。
我们不会讨论taglib编译器指引但它可以在JSP1.1里用来建立自订标签。
你几乎可以在你所有的JSP网页最上面找到page编译器指引。
虽然这不是必须的,但它可以让你指定到那里可以找到支持的Java类别: <%@ pageimport="java.util.Date" %>,当发生Java问题的事件时应该将信息传送到那里: <%@ page errorPage="errorPage.jsp" %>,以及你是否要为使用者管理通话期的通信,可能存取多个网页(稍後在JavaBeans里会有更多通话期的讨论): <%@ page session="true" %>。
include编译器指引让你将你的内容分成几个可管理的元件,就像那些有表头或注脚的网页。
所包含的网页可以是固定格式的HTML网页或者是JSP内容的网页: <%@ include file="filename.jsp" %>。
3、JSP预定义让你定义网页层的参数,来储存信息或定义支持的函数式,让JSP 网页的其余部分能够使用。
如果你发现自己有太多的程序码,你最好将它们放在不同的Java类别里。
你可以在 <%! ?%>标签里找到预定义。
记住要在参数预定义的後面加上分号,就跟任何有效的Java叙述的形式一样: <%! int i=0; %>。
4、JSP里有运算式,评估运算式的结果可以转换成字串并且直接使用在输出网页上。
JSP运算是属於 <%= ?%> 标签里,并不包含分号,加引号字串的无用部分: <%= i %><%= "Hello" %> 。
5、JSP程序码片段或小型指令文件是包含在<% ?%> 标签里。
当网络服务器接受这段请求时,这段Java程序码会执行。
小型指令文件可以是原始的HTML或XML,其内部的程序码片段可以让你建立有条件的执行程序码,或者只是一些使用另一块程序码的东西。
举例来说,下列的程序码结合了运算式与小型指令文件,在H1,H2,H3,以及H4标签里显示字串"Hello"。
小型指令文件不限於一行的原始程序码 :<% for (int i=1; i<=4; i++) { %><H<%=i%>>Hello</H<%=i%>>注解.最後一个主要JSP元件是嵌入式注解。
虽然你可以在你的文件里包含HTML注解,如果使用者检视网页的原始码,他们也会看到这些注解。
如果你不要让使用者看到你的注解,你可以将它放在<%-- ?--%>标签里:<%-- 针对服务器端的注解 --%>。
三、JSP与JavaBean虽然你可以在小型指令档里放入一大块的代码,但是大多数的Java代码是属於可以重复使用的元件,称为JavaBean。
JavaBean就跟ActiveX控制项一样:它们提供已知的功能,并且是为了可随时重复使用的目的而设计的。
JavaBean的¤值在於它可以经由一组特性来使用,而这些特性则提供对JavaBean设定的存取。
以人来作范例,此人就是JavaBean,而他的姓名,社会福利安全号码,以及住址可以是特性。
对於JSP网站,基本上你是将'JavaBean'动态的连接到你的网站。
假设JavaBean是在建立网站之前建好的,你要做的第一件事是告诉JSP网页它所需要使用JavaBean,这工作可以用<jsp:useBean>标签来完成:<jsp:useBean id="localName" class="com.jjj.Person" scope="application" />.<jsp:useBean>标签需要你以id 属性来辨识usebean.在这里,你提供一个名称让JSP网页来辨识usebean,除了id 属性之外,你也必须告诉网页要到哪里去找这个usebean,或者是它的Java类别名称。
类别属性提供如何在各式方法之中找到它,最後一个需要的元件是scope 属性。
有了范围属性的帮助,你可以告诉usebean,要它为单一网页(预设)[scope="page"];为一个被请求的网页[scope="request"];为通话期[scope="session"];或为整个应用程式[scope="application"]来维护它自己的资源。