javaserver pages (jsp)是基于java的技术,用于创建可支持跨平台及跨web服务器的动态网页。
jsp可与微软的active server pages (asp)相媲美,但jsp使用的是类似于html的标记和java 代码片段而不是用vbscript。当你使用不提供asp本地支持的web服务器(例如 apache或netscape服务器)时,你就可以考虑使用jsp了。你虽然也可以为这些服务器弄一个asp附加软件模块,但是太昂贵了。现在sun公司并不会因你使用jsp向你收费(虽然将来可能要收),况且用于solaris、 linux以及windows系统的组件都很容易获得。
不要把jsp与服务器端的javascript语言搞混了。web服务器自动将通过jsp生成的java代码片段转换成java 片段(servlets)。 jsp也可自动控制许多功能,如过去用perl脚本编写功能程序或像asp这样的服务器专用api(应用编程接口)。
我们马上就要开始帮助你建立一个使用jsp 技术的网站范例了。
准备好计算机以使用jsp
你需要java2软件开发工具箱(j2sdk),过去称之为java开发工具箱(jdk)、javaserver 网络开发工具箱(jswdk)、tomcat,或者其它能支持jsp的web服务器。升阳公司为windows、solaris以及 linux平台提供免费的j2sdk和jswdk。
如果你想在现有的web服务器上使用jsp,而此服务器本身不支持jsp和java 代码片段,可以试用allaire公司的jrun。它可以为netscape的enterprise server和fasttrack server、微软的internet information server(iis)和personal web server(pws)、apache以及其他服务器充当web服务器附件。你也可以使用apache服务器的java版,其中包含最新的jswdk。
下载并安装所需的软件 目前,版本号为1.2.2-001的j2sdk可下载版以可安装的归档文件形式出现。这个大约20mb的下载量软件可提供一个彻底的java开发环境,让你创造任何基于java并且利用了而标准核心api的解决方案。其实,你的web服务器使用jsp的唯一条件是要有java编辑器。要让web服务器知道编辑器的位置,需要java_home 环境变量设置为j2sdk安装目录。如果你已经在windows系统中进行了安装并且接受了默认目录, 请将“set java_home=c:1.2.2”添加到你的“autoexec.bat”文件中,然后重新启动。
安装j2sdk后,下载并安装jswdk或者是tomcat β版,即基于java的apache web服务器的β版。你把jswdk放在什么地方是无关紧要的,只要你以后能找到它就行。通常,将其放在顶层目录中,这样你在替换jswdk或jsdk时无需删除另一个软件。安装好这个文件后,准备工作已经就绪,你可以开始jsp开发工作了。
正确地安装jswdk后,请运行“startserver”脚本程序,以启动web服务器,使其按照默认情况监听8080端口。你要在启动服务器之后查看您是否已正确地安装了此工具,请加载一个jsp样本文件(http://locahost: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加载此网页。该网页首次被访问时,web服务器会把jsp编译成java代码片段,这样你就能够看到当前的日期和时间了。
你已经下载、安装并配置好了开发环境,你可以开始学习jsp语法并创建自己的基于jsp的解决方案了。
jsp基本语法 讲完安装问题后,现在进入来讨论jsp语法。一个投机取巧的办法是下载语法卡片。如果你不熟悉java编程,也许你想看一下sun的指南 。然而网页创建者并不需要进行太多的java开发。除了一些方法调用,在你的jsp网页里应尽可能少用java代码。
记住以上提示,我们首先来看一看jsp指令和脚本元素,之后我们会解释javabeans和隐含对象。共有五种jsp指令和脚本元素。在jsp 1.0版中,大部分jsp被一个以“<%” 开头和以“%>”结尾的的标记括在其中。在更新的jsp 1.1规范出台后,就有了与xml兼容的版本。
jsp指令和脚本元素 directives <%@ directive %> declarations <%! declaration %> expressions <%= expression %> code fragment/scriptlet <% code fragment %> comments <%-- comment --%>
指令 jsp指令是为jsp引擎而设计的。他们并不直接产生任何可见输出,而只是告诉引擎如何处理其余jsp页面。这些指令始终被括在 “<%@ ?%>”标记中。两个最重要的指令是“pagepage”和“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" %> .
代码片段/脚本片段 代码片段/脚本片段(scriptlets) jsp代码片段或脚本片段是嵌在“<% ?%>”标记中的。这种java代码在web服务器响应请求时就会运行。在脚本片段周围可能是原始的html或xml语句,在这些地方,代码片段可以使你创建条件执行代码,或要用到另外一段代码的代码。例如,以下的代码组合使用表达式和代码片段,显示h1、h2、h3和h4标记中的字符串“hello”。代码片段并不局限于一行源代码:
<% for (int i=1; i<=4; i++) { %> <h<%=i%>>hello</h<%=i%>> <% } %>.
注释 最后一个主要的jsp元素是嵌入式注释。尽管你始终可以在文件中加入html注释,但用户在查看页面源代码时会看到这些注释。如果你不想让用户看到它,你就应该将其嵌入“<%-- ?--%>” 标记中:
<%-- comment for server side only --%>.
带javabean 的jsp 虽然你可以把大段的代码放在脚本片段(scriptlet)内,但是绝大多数的java代码属于可重复使用的名为javabea的组件。javabean类似于activex控件:他们都能提供常用功能并且可以重复使用。
javabean的值是通过一些属性获得的,你可通过这些属性访问javabean设置。以一个人来打比方,这个人就是一个javabean,这个人的名字、身份证号码以及住址就是其属性。在jsp网站,你基本上就是通过玩“connect the beans)”来使你的网站动态化。
假设javabean先于网站被创建出来,你需要做的第一件事就是告诉jsp页面它将要用到一个“bean”。你可以用“<jsp:usebean>”标记来做到这一点: <jsp:usebean id="localname" class="com.jguru.person" scope="application" />。
“<jsp:usebean>”标记要求你用“id”属性来识鉴别bean。这里你提供一个名字来jsp页面其余部分的bean。除了“id”属性,你还须告诉网页面从何处查找bean,或者它的java类别名是什么。这种类别属性提供确 认bean的功能,其他一些方法也可以做到这一点。最后一个必需的元素是“scope”属性。有了“scope”属性的帮助,你就能告诉bean为单一页面(默认情况)[scope="page"]、为[scope="request"]请求为会话[scope="session"],或者为整个应用程序[scope="application"]保持留信息。有了会话范围,你就能非常容易地在jsp网页面上维护购物车等项目。
一旦你声名了一个javabean,你就可以访问它的属性来定制它。要获得属性值,请用“<jsp:getproperty>”标记。有了这个标记,你就能指定将要用到的bean名称(从usebean的"id"字段得到)以及你想得到其值的属性。实际的值被放在输出中: <jsp:getproperty id="localname" property="name" />。
要改变javabean属性,你必须使用“<jsp:setproperty>”标记。对这个标记,你需要再次识别bean和属性,以修改并额外提供新值。如果命名正确,这些值可以从一个已提交的表中直接获得:参数获得: <jsp:setproperty id="localname" property="*" />;
可以从一个参数获得,但你必须直接命名属性和参数: <jsp:setproperty id="localname" property="serialnumber" value="string" />
或者直接用一个名字称和值来设置: <jsp:setproperty id="localname" property="serialnumber" value= <%= expression %> />.
关于javabean 的最后一件事: 为了web服务器能找到javabean,你需要将其类别文件放在一个特殊位置。用jswdk,最 方便的位置是安装目录下的类别目录,如jswdk-1.0.1classes。
jsp隐含对象 与jsp语法相关的最后的元素是一些叫做“隐含对象”的东西。在jsp代码片段中,你可以利用这些隐含对象与jsp页面的代码片段执行环境产生互动。应尽量少访问这些内置隐含对象。但是,在一某些情况下,访问隐含对象是可被接受的。若要充分利用隐含对象,就需了解最新的java servlet api。 下表列出可用的隐含对象集合。
隐含对象说明 request 客户端请求,包括从get/post请求传递过来的参数 response 网页传回客户端的反应 pagecontext 在此管理网页属性 session 与请求关联的会话 application 代码片段的运行环境 out 传送响应的输出流 config 代码片段配置对象 page jsp网页本身 exception 有错的网页中未被捕获的例外
这些都是用来做什么的,你又如何来使用它们呢?基本上说,在你的脚本片段里,你可以用它们进入执行jsp代码的代码片段。用不着深入了解太多的servlet api细节,我们来看看能用它们来做到的某些事情:
你可以不用表达式,直接进入“out”隐含对象,将某些内容输出到响应中: <% out.println("hello"); %>。 用不着把一个参数直接送到javabean,你可以从请求对象获取参数值: <% string name=request.getparameter("name"); out.println(name); %>.
在你用jsp进行开发的过程中,进行更多的开发的过程中,如果创建了javabeans或发现jsp文件中加入了太多的java源代码,你就需要创建起支持作用的java分类(class)了,它可以协助你重复利用源代码并减少jsp网页编译时间。当你需要创建java分类文件时,你必须:
将jdswk installationin目录添加到path中。在autoexec.bat文件path行的末尾,加入“c:1.2.2/bin”。 用这个命令将jar文件复制到“jrelibext:”目录中: copy c:jswdk-1.0.1libservlet.jar c:jdk1.2.2jrelibext.
创建一个jsp网站 现在该是把所有这些jsp语法派上用场的时候了。我们将创建一个网页,它有一个输入表单,可以使用户输入一个股票代号以获得出当前股价(有20分钟)。如果输入有误,则显示报错网页。
quote.jsp 首先,用 这个代码 创建一个quote.jsp网页并将其保存在jswdk安装目录下的网页目录中。大多数的网页是标准的html,其间散布着jsp代码。第六行是一个网页指示,表示将把所有错误发送到“errorpage.jsp”文中。第13到15行是一个脚本片段,主要说明只有提供“符号”参数才会显示表格。“if”代码段在32到34行结束。第17行定义了要用的javabean,第18行从参数加载javabean的符号属性。第27行到29行显示bean的属性。除了"if "代码段,实际上并不涉及其它java代码。
errorpage.jsp 下一步,将下列jsp源代码保存到网页目录中的“errorpage.jsp”文件中。“这是一个错误网页”的提示为第一行,它将iserrorpage网页提示属性设置为真。上一页说了明错误网页的位置,本页则说明这就是错误网页。其它jsp文件中的jsp专用代码只有访问隐含例外对象才用到。网页只显示其值:
<%@ page iserrorpage="true" %>
<html> <head> <title>error page</title> </head> <body>
<h1>our error page</h1></font>
<!-- print exception --> we got ourselves an exception: <%= exception %> <a href="quote.jsp">restart</a> </body> </html>。
quotes.java quotes javabean 利用yahoo资源来获得股票价格。需要将此 资源保存到jswdk安装目录下“classescomjguru”目录中的“quotes.java”文件中。请在此用jsdk中的javac编辑器来编辑它。
你的第一个jsp网页。 创建了这两个jsp文件,建立了javabean资源文件并编辑了它后,你就可以从http://localhost:8080/quote.jsp加载“quote.jsp”文件以查看结果,假设你没有更改jswdk安装设置,转而使用别的端口。这个网页当然能做得更漂亮,但是它已实现了需要实现的功能,并且很好地展示了jsp的功能。
申明:本教程内容由威凡网编辑整理并提供IT程序员分享学习,如文中有侵权行为,请与站长联系(QQ:254677821)!
|