找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3191|回复: 1

JSP入门教程

firstcosmos  | 发表于 2005-12-15 18:34:11 | 显示全部楼层 |阅读模式 来自 中国四川成都

马上注册,结交更多好友,享用更多功能。

您需要 登录 才可以下载或查看,没有帐号?注册

x
<>JSP入门教程(1) </P>
<> <BR> <BR>    JavaServer Pages (JSP)是基于Java的技术,用于创建可支持跨平台及跨Web服务器的动态网页。 </P>
<>JSP可与微软的Active Server Pages (ASP)相媲美,但JSP使用的是类似于HTML的标记和Java 代码片段而不是用VBScript。当你使用不提供ASP本地支持的Web服务器(例如 Apache或Netscape服务器)时,你就可以考虑使用JSP了。你虽然也可以为这些服务器弄一个ASP附加软件模块,但是太昂贵了。现在Sun公司并不会因你使用JSP向你收费(虽然将来可能要收),况且用于Solaris、 Linux以及Windows系统的组件都很容易获得。 </P>
<P>不要把JSP与服务器端的JavaScript语言搞混了。Web服务器自动将通过JSP生成的Java代码片段转换成Java 片段(servlets)。 JSP也可自动控制许多功能,如过去用Perl脚本编写功能程序或像ASP这样的服务器专用API(应用编程接口)。 </P>
<P>我们马上就要开始帮助你建立一个使用JSP 技术的网站范例了。 </P>
<P><BR>准备好计算机以使用JSP </P>
<P>你需要Java2软件开发工具箱(J2SDK),过去称之为Java开发工具箱(JDK)、JavaServer 网络开发工具箱(JSWDK)、Tomcat,或者其它能支持JSP的Web服务器。升阳公司为Windows、Solaris以及 Linux平台提供免费的J2SDK和JSWDK。 </P>
<P>如果你想在现有的Web服务器上使用JSP,而此服务器本身不支持JSP和Java 代码片段,可以试用Allaire公司的Jrun。它可以为Netscape的Enterprise Server和Fasttrack Server、微软的Internet Information Server(IIS)和Personal Web Server(PWS)、Apache以及其他服务器充当Web服务器附件。你也可以使用Apache服务器的Java版,其中包含最新的JSWDK。 </P>
<P>下载并安装所需的软件 <BR>目前,版本号为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”文件中,然后重新启动。 </P>
<P>安装J2SDK后,下载并安装JSWDK或者是Tomcat β版,即基于Java的Apache Web服务器的β版。你把JSWDK放在什么地方是无关紧要的,只要你以后能找到它就行。通常,将其放在顶层目录中,这样你在替换JSWDK或JSDK时无需删除另一个软件。安装好这个文件后,准备工作已经就绪,你可以开始JSP开发工作了。 </P>
<P>正确地安装JSWDK后,请运行“startserver”脚本程序,以启动Web服务器,使其按照默认情况监听8080端口。你要在启动服务器之后查看您是否已正确地安装了此工具,请加载一个JSP样本文件(<a href="http://locahost:8080/examples/jsp/" target="_blank" >http://locahost:8080/examples/jsp/</A>)。如果你能成功地运行这些样本文件,说明你已经正确地安装了这个软件。如果你在用来启动服务器的控制台窗口中看到报错信息,你就需要做些修改。最经常发生的问题是没有设置或不正确地设置了JAVA_HOME环境变量。要看到当前环境变量设置情况,要请在DOS提示符下键入“set”设置。 </P>
<P>开始 <BR>在解释 JSP语法前,创建一个快捷网页,显示目当前的日期和时间,并然后将之其保存为sample.jsp: </P>
<P>&lt;html&gt; <BR>&lt;head&gt; <BR>&lt;title&gt;First Page&lt;/title&gt; <BR>&lt;/head&gt; <BR>&lt;body&gt; <BR>&lt;H3&gt;Today is: <BR>&lt;%= new java.util.Date() %&gt; <BR>&lt;/H3&gt; <BR>&lt;/body&gt; <BR>&lt;/html&gt;. </P>
<P>把这个文件以及你所有的HTML 和 JSP 页面放在JSWDK安装目录下的网页目录里。你可以从<a href="http://localhost:8080/sample.jsp" target="_blank" >http://localhost:8080/sample.jsp</A>加载此网页。该网页首次被访问时,Web服务器会把JSP编译成Java代码片段,这样你就能够看到当前的日期和时间了。 </P>
<P>你已经下载、安装并配置好了开发环境,你可以开始学习JSP语法并创建自己的基于JSP的解决方案了。 </P>
<P>JSP基本语法 <BR>讲完安装问题后,现在进入来讨论JSP语法。一个投机取巧的办法是下载语法卡片。如果你不熟悉Java编程,也许你想看一下Sun的指南 。然而网页创建者并不需要进行太多的Java开发。除了一些方法调用,在你的JSP网页里应尽可能少用Java代码。 </P>
<P>记住以上提示,我们首先来看一看JSP指令和脚本元素,之后我们会解释JavaBeans和隐含对象。共有五种JSP指令和脚本元素。在JSP 1.0版中,大部分JSP被一个以“&lt;%” 开头和以“%&gt;”结尾的的标记括在其中。在更新的JSP 1.1规范出台后,就有了与XML兼容的版本。 </P>
<P>JSP指令和脚本元素 <BR>Directives &lt;%@ directive %&gt; <BR>Declarations &lt;%! declaration %&gt; <BR>Expressions &lt;%= expression %&gt; <BR>Code Fragment/Scriptlet &lt;% code fragment %&gt; <BR>Comments &lt;%-- comment --%&gt; </P>

<P>指令 <BR>JSP指令是为JSP引擎而设计的。他们并不直接产生任何可见输出,而只是告诉引擎如何处理其余JSP页面。这些指令始终被括在 “&lt;%@ ?%&gt;”标记中。两个最重要的指令是“pagePage”和“Include”。“Taglib”指令不在讨论之列,但是在用JSP1.1创建自定义标记可以使用它。 </P>
<P>几乎在所有JSP页面顶部都会看到“Page”指令。尽管不是必须的,但它可以让你指定: <BR>到何处查找起支持作用的Java类别: <BR>&lt;%@ page import="java.util.Date" %&gt;, </P>
<P>出现Java运行问题时,将网上冲浪者引向何处: <BR>&lt;%@ page errorPage="errorPage.jsp" %&gt;, </P>

<P>还有你是否需要管理用户的会话级信息,这些信息可能来自多个网页(在下面的JavaBeans一节将对此做进一步讲)述: <BR>&lt;%@ page session="true" %&gt;. </P>

<P>“Include”指令可以把你的内容分成更多可管理的元素,比如包括一个普通页面页眉或页脚的元素。包含的网页可以是一个固定的HTML 页面或更多的JSP内容: <BR>&lt;%@ include file="200453092147.htm.jsp" %&gt; </P>
<P>声明 <BR>JSP声明用来让你定义页面级变量,以保存信息或定义JSP页面的其余部分可能需要的支持方法。如果你发现代码太多,通常最好把它们写成一个独立的Java类别。声明一般都在“&lt;%! ?%&gt;”标记中。一定要以分号(;)结束变量声明,因为任何内容都必须是有效的Java语句: <BR>&lt;%! int i=0; %&gt;。 </P>
<P>表达式 <BR>有了JSP表达式,表达式评估结果会被转换成一个字符串,并且被直接包括在输出页面之内。JSP 表达式包含在“&lt;%= ?%&gt;” 标记中,没有分号,除非在加引号的字符串部分使用分号。 </P>
<P><BR>&lt;%= i %&gt; <BR>&lt;%= "Hello" %&gt; . </P>
<P>代码片段/脚本片段 <BR>代码片段/脚本片段(Scriptlets) JSP代码片段或脚本片段是嵌在“&lt;% ?%&gt;”标记中的。这种Java代码在Web服务器响应请求时就会运行。在脚本片段周围可能是原始的HTML或XML语句,在这些地方,代码片段可以使你创建条件执行代码,或要用到另外一段代码的代码。例如,以下的代码组合使用表达式和代码片段,显示H1、H2、H3和H4标记中的字符串“Hello”。代码片段并不局限于一行源代码: </P>
<P>&lt;% for (int i=1; i&lt;=4; i++) { %&gt; <BR>&lt;H&lt;%=i%&gt;&gt;Hello&lt;/H&lt;%=i%&gt;&gt; <BR>&lt;% } %&gt;. </P>
<P>注释 <BR>最后一个主要的JSP元素是嵌入式注释。尽管你始终可以在文件中加入HTML注释,但用户在查看页面源代码时会看到这些注释。如果你不想让用户看到它,你就应该将其嵌入“&lt;%-- ?--%&gt;” 标记中: </P>
<P>&lt;%-- comment for server side only --%&gt;. </P>
<P>带JavaBean 的JSP <BR>虽然你可以把大段的代码放在脚本片段(scriptlet)内,但是绝大多数的Java代码属于可重复使用的名为JavaBea的组件。JavaBean类似于ActiveX控件:他们都能提供常用功能并且可以重复使用。 </P>
<P>JavaBean的值是通过一些属性获得的,你可通过这些属性访问JavaBean设置。以一个人来打比方,这个人就是一个JavaBean,这个人的名字、身份证号码以及住址就是其属性。在JSP网站,你基本上就是通过玩“Connect the beans)”来使你的网站动态化。 </P>
<P>假设JavaBean先于网站被创建出来,你需要做的第一件事就是告诉JSP页面它将要用到一个“Bean”。你可以用“&lt;jsp:useBean&gt;”标记来做到这一点: <BR>&lt;jsp:useBean id="localName" class="com.jguru.Person" scope="application" /&gt;。 </P>
<P>“&lt;jsp:useBean&gt;”标记要求你用“id”属性来识鉴别Bean。这里你提供一个名字来JSP页面其余部分的Bean。除了“id”属性,你还须告诉网页面从何处查找Bean,或者它的Java类别名是什么。这种类别属性提供确 认Bean的功能,其他一些方法也可以做到这一点。最后一个必需的元素是“scope”属性。有了“scope”属性的帮助,你就能告诉Bean为单一页面(默认情况)[scope="page"]、为[scope="request"]请求为会话[scope="session"],或者为整个应用程序[scope="application"]保持留信息。有了会话范围,你就能非常容易地在JSP网页面上维护购物车等项目。 </P>
<P>一旦你声名了一个JavaBean,你就可以访问它的属性来定制它。要获得属性值,请用“&lt;jsp:getProperty&gt;”标记。有了这个标记,你就能指定将要用到的Bean名称(从useBean的"id"字段得到)以及你想得到其值的属性。实际的值被放在输出中: <BR>&lt;jsp:getProperty id="localName" property="name" /&gt;。 </P>
<P>要改变JavaBean属性,你必须使用“&lt;jsp:setProperty&gt;”标记。对这个标记,你需要再次识别Bean和属性,以修改并额外提供新值。如果命名正确,这些值可以从一个已提交的表中直接获得:参数获得: <BR>&lt;jsp:setProperty id="localName" property="*" /&gt;; </P>
<P>可以从一个参数获得,但你必须直接命名属性和参数: <BR>&lt;jsp:setProperty id="localName" property="serialNumber" value="string" /&gt; </P>
<P>或者直接用一个名字称和值来设置: &lt;jsp:setProperty id="localName" property="serialNumber" value= &lt;%= expression %&gt; /&gt;. </P>
<P>关于JavaBean 的最后一件事: 为了Web服务器能找到JavaBean,你需要将其类别文件放在一个特殊位置。用JSWDK,最 方便的位置是安装目录下的类别目录,如jswdk-1.0.1classes。 </P>
<P>JSP隐含对象 <BR>与JSP语法相关的最后的元素是一些叫做“隐含对象”的东西。在JSP代码片段中,你可以利用这些隐含对象与JSP页面的代码片段执行环境产生互动。应尽量少访问这些内置隐含对象。但是,在一某些情况下,访问隐含对象是可被接受的。若要充分利用隐含对象,就需了解最新的Java Servlet API。 <BR>下表列出可用的隐含对象集合。 </P>
<P>隐含对象说明 <BR>request 客户端请求,包括从GET/POST请求传递过来的参数 <BR>response 网页传回客户端的反应 <BR>pageContext 在此管理网页属性 <BR>session 与请求关联的会话 <BR>application 代码片段的运行环境 <BR>out 传送响应的输出流 <BR>config 代码片段配置对象 <BR>page JSP网页本身 <BR>exception 有错的网页中未被捕获的例外 </P>

<P>这些都是用来做什么的,你又如何来使用它们呢?基本上说,在你的脚本片段里,你可以用它们进入执行JSP代码的代码片段。用不着深入了解太多的Servlet API细节,我们来看看能用它们来做到的某些事情: </P>
<P><BR>你可以不用表达式,直接进入“Out”隐含对象,将某些内容输出到响应中: <BR>&lt;% out.println("Hello"); %&gt;。 <BR>用不着把一个参数直接送到JavaBean,你可以从请求对象获取参数值: <BR>&lt;% String name=request.getParameter("name"); out.println(name); %&gt;. </P>
<P>在你用JSP进行开发的过程中,进行更多的开发的过程中,如果创建了JavaBeans或发现JSP文件中加入了太多的Java源代码,你就需要创建起支持作用的Java分类(class)了,它可以协助你重复利用源代码并减少JSP网页编译时间。当你需要创建Java分类文件时,你必须: </P>
<P><BR>将JDSWK installationin目录添加到PATH中。在autoexec.bat文件PATH行的末尾,加入“C:1.2.2/bin”。 <BR>用这个命令将JAR文件复制到“jrelibext:”目录中: copy c:jswdk-1.0.1libservlet.jar c:jdk1.2.2jrelibext. </P>
<P>创建一个JSP网站 <BR>现在该是把所有这些JSP语法派上用场的时候了。我们将创建一个网页,它有一个输入表单,可以使用户输入一个股票代号以获得出当前股价(有20分钟)。如果输入有误,则显示报错网页。 </P>
<P>quote.jsp <BR>首先,用 这个代码 创建一个quote.jsp网页并将其保存在JSWDK安装目录下的网页目录中。大多数的网页是标准的HTML,其间散布着JSP代码。第六行是一个网页指示,表示将把所有错误发送到“errorPage.jsp”文中。第13到15行是一个脚本片段,主要说明只有提供“符号”参数才会显示表格。“If”代码段在32到34行结束。第17行定义了要用的JavaBean,第18行从参数加载JavaBean的符号属性。第27行到29行显示Bean的属性。除了"if "代码段,实际上并不涉及其它Java代码。 </P>
<P>errorPage.jsp <BR>下一步,将下列JSP源代码保存到网页目录中的“errorPage.jsp”文件中。“这是一个错误网页”的提示为第一行,它将isErrorPage网页提示属性设置为真。上一页说了明错误网页的位置,本页则说明这就是错误网页。其它JSP文件中的JSP专用代码只有访问隐含例外对象才用到。网页只显示其值: </P>
<P>&lt;%@ page isErrorPage="true" %&gt; </P>
<P>&lt;html&gt; <BR>&lt;head&gt; <BR>&lt;title&gt;Error Page&lt;/title&gt; <BR>&lt;/head&gt; <BR>&lt;body&gt; </P>
<P>&lt;h1&gt;Our Error Page&lt;/h1&gt;&lt;/font&gt; </P>
<P>&lt;!-- Print Exception --&gt; <BR>We got ourselves an exception: <BR>&lt;%= exception %&gt; <BR>&lt;a href="quote.jsp"&gt;Restart&lt;/a&gt; <BR>&lt;/body&gt; <BR>&lt;/html&gt;。 </P>
<P>Quotes.java <BR>Quotes JavaBean 利用Yahoo资源来获得股票价格。需要将此 资源保存到JSWDK安装目录下“classescomjguru”目录中的“quotes.java”文件中。请在此用JSDK中的Javac编辑器来编辑它。 </P>
<P><BR>你的第一个JSP网页。 <BR>创建了这两个JSP文件,建立了JavaBean资源文件并编辑了它后,你就可以从<a href="http://localhost:8080/quote.jsp" target="_blank" >http://localhost:8080/quote.jsp</A>加载“quote.jsp”文件以查看结果,假设你没有更改JSWDK安装设置,转而使用别的端口。这个网页当然能做得更漂亮,但是它已实现了需要实现的功能,并且很好地展示了JSP的功能。 <BR></P>
firstcosmos 发表于 2005-12-15 18:35:00 | 显示全部楼层 来自 中国四川成都
<>JSP入门教程(4) <BR> <BR> <BR>使用脚本 <BR>在有些地方,你大概要加一些好的,成熟的程序到你的JSP页里,JSP的标签虽然很强大,但是完成某些工作还是比较费力的困难的。这时你可以使用脚本语言段来补充JSP标签。 <BR>使用的JSP引擎是支持脚本语言的,SUN的JSP参考文说明,必须使用Java程序语言来编写脚本,但是其他第三方的JSP引擎允许使用其他语言来写脚本程。 <BR>如何增加脚本 <BR>首先,你必须了解一些增加脚本元素到JSP页中的一些基本规则 <BR>1、 在JSP页面里用Page指令定义脚本(默认值是Java,一般不需要定义) <BR>2、 声明语法&lt;%!……%&gt;声明变量和方法(函数)。 <BR>3、 表达式语法&lt;%=……%&gt;定义脚本语言表达式 <BR>4、 脚本语法〈%……%&gt;可以操作声明、表达式和其他类型合法的代码段在页脚本语言。 <BR>5、 一定要在结尾加%&gt;标签 <BR>声明、表达式、脚本使用起来有一些相似,但也有一些不同让我们用一些例子来讲述一下相同点和不同点吧。 <BR>声明&lt;%!……%&gt;包含了一个或多个变量和方法,结尾以分号分隔。 <BR>例:&lt;%! Int I=0 ; %&gt; <BR>&lt;%! Int a, b ; double c ; %&gt; <BR>&lt;%! Circle a = new circle(2.0) ; %&gt; <BR>在页面中使用变量和方法之前必须声明 <BR>声明的范围通常是JSP页,但如果页面中使用INCLUDE指令包含其他页面,范围应变得扩展到被包含的页面。 <BR>表达式&lt;%=……%&gt;可以在页面中包含任何合法的语言表达式,不用分号。 <BR>例:&lt;%= Math.sqrt(2) %&gt; <BR>&lt;%= item %&gt; <BR>&lt;%= a+b+c %&gt; <BR>&lt;%= new java.util.date() %&gt; <BR>表达式和脚本的一个关键的不同点就是不需要分号。如果你需要在脚本中使用表达式就必须加分号。 <BR>脚本&lt;%……%&gt;允许你写的任何数量的脚本语言 <BR>例:&lt;% String name=null ; <BR>If (request.getParmeter("name")==null{ <BR>%&gt; <BR>记住在脚本中必须使用分号结尾。 <BR>猜数字游戏 <BR>猜数字游戏非常的有趣,而且从这里你还可以学到很多表达式的用法。 <BR>代码 <BR>显示用的主屏幕(numguess.jsp) <BR>&lt;!-- <BR>Number Guess Game <BR>Written by Jason Hunter, CTO, K&amp;A Software <BR><a href="mailtjasonh@kasoftware.com" target="_blank" >jasonh@kasoftware.com</A>, <a href="http://www.servlets.com" target="_blank" >http://www.servlets.com</A> <BR>Copyright 1999, K&amp;A Software <BR>Distributed by Sun Microsystems with permission <BR>--&gt; <BR>&lt;%@ page import = "num.NumberGuessBean" %&gt; </P>
<>&lt;jsp:useBean id="numguess" class="num.NumberGuessBean" scope="session" /&gt; <BR>&lt;jsp:setProperty name="numguess" property="*" /&gt; </P>
<>&lt;html&gt; <BR>&lt;head&gt;&lt;title&gt;Number Guess&lt;/title&gt;&lt;/head&gt; <BR>&lt;body bgcolor="white"&gt; <BR>&lt;font size=4&gt; </P>
<P>&lt;% if (numguess.getSuccess() ) { %&gt; </P>
<P>Congratulations! You got it. <BR>And after just &lt;%= numguess.getNumGuesses() %&gt;tries.&lt;p&gt; </P>
<P>&lt;% numguess.reset(); %&gt; <BR>Care to &lt;a href="numguess.jsp"&gt;try again&lt;/a&gt;? </P>
<P>&lt;% } else if (numguess.getNumGuesses() == 0) { %&gt; </P>
<P>Welcome to the Number Guess game.&lt;p&gt; <BR>I'm thinking of a number between 1 and 100.&lt;p&gt; </P>
<P>&lt;form method=get&gt; <BR>What's your guess? &lt;input type=text name=guess&gt; <BR>&lt;input type=submit value="Submit"&gt; <BR>&lt;/form&gt; </P>
<P>&lt;% } else { %&gt; <BR>Good guess, but nope. Try &lt;b&gt;&lt;%= numguess.getHint() %&gt;&lt;/b&gt;. <BR>You have made &lt;%= numguess.getNumGuesses() %&gt; guesses. <BR>&lt;p&gt;I'm thinking of a number between 1 and 100. <BR>&lt;p&gt;&lt;form method=get&gt; </P>
<P>What's your guess? &lt;input type=text name=guess&gt; <BR>&lt;input type=submit value="Submit"&gt; <BR>&lt;/form&gt; <BR>&lt;% } %&gt; <BR>&lt;/font&gt; <BR>&lt;/body&gt; <BR>&lt;/html&gt; </P>
<P>操作程序(NumberGuessBean.java) <BR>// Number Guess Game <BR>// Written by Jason Hunter, CTO, K&amp;A Software <BR>// <a href="mailtjasonh@kasoftware.com" target="_blank" >jasonh@kasoftware.com</A>, <a href="http://www.servlets.com" target="_blank" >http://www.servlets.com</A> <BR>// Copyright 1999, K&amp;A Software <BR>// Distributed by Sun Microsystems with permission </P>
<P>package num; <BR>import java.util.*; <BR>public class NumberGuessBean { <BR>int answer; <BR>boolean success; <BR>String hint; <BR>int numGuesses; <BR>public NumberGuessBean() { <BR>reset(); <BR>} <BR>public void setGuess(String guess) { <BR>numGuesses++; <BR>int g; <BR>try { <BR>g = Integer.parseInt(guess); <BR>} <BR>catch (NumberFormatException e) { <BR>g = -1; <BR>} <BR>if (g == answer) { <BR>success = true; <BR>} <BR>else if (g == -1) { <BR>hint = "a number next time"; <BR>} <BR>else if (g &lt; answer) { <BR>hint = "higher"; <BR>} <BR>else if (g &gt; answer) { <BR>hint = "lower"; <BR>} <BR>} <BR>public boolean getSuccess() { <BR>return success; <BR>} <BR>public String getHint() { <BR>return "" + hint; <BR>} <BR>public int getNumGuesses() { <BR>return numGuesses; <BR>} <BR>public void reset() { <BR>answer = Math.abs(new Random().nextInt() % 100) <BR>+ 1; <BR>success = false; <BR>numGuesses = 0; <BR>} <BR>} </P>
<P>在JSP文件中使用脚本 <BR>numguess.jsp是一个非常有趣儿的用脚本写的例子,你看他的结构其实是一个很大的IF……ELSE结构,但是很一个从句又都是用HTML写的,看起来象一个大的程序段。 <BR>不过你也不一定非得象numguess.jsp那样用HTML和JSP标签一起来写脚本。在&lt;%和%&gt;标签之间,你可以写任意多行的脚本代码,在通常情况下,尽量少用脚本来处理程序,而尽可能的使用servlets或者Beans,这样你的程序看起来会非常的清析,明了。话又说回来,怎么写JSP还得根据你的习惯和爱好,我不强迫非得使用任何一种方法,SUN的JSP详细说明书不规定脚本的长度。 </P>
<P>用标签组合脚本 <BR>使用HTML和JSP标签来写脚本的时候,注意前后的标签不要忘记,一定要“封”好。说的不明白,举个例子吧: <BR>&lt;% } else { %&gt; &lt;!-- 用JSP标签的时候先关上 --&gt; </P>
<P>... 这时候用JSP标签吧 ... </P>
<P>&lt;% } %&gt; &lt;!-- 这样你应该看懂了吧?! --&gt; <BR>开始的时候这种做法看起来可能有一点奇怪,但它以确保你JSP文件编译的时候脚本的成功转换。 </P>
<P>那么,脚本什么时候执行呢? <BR>一个JSP原文件的处理分为两个阶段:一个是HTTP的编译时候,一个是请求的处理时间。 </P>
<P>HTTP编译的时候,当用户第一次读JSP页面的时候,JSP的原代码被编译成CLASS,通常是servlet。HTML标签和JSP标签在这个时候同时被处理了,这之前用户还没有任何的请求被提交。 </P>
<P>请求处理时间是当用户在JSP页面中提交了一个请求,这时请求由客户端被request对象传到了服务器端,JSP引擎根据用户提交的值执行编译过的JSP文件或者servlet。 </P>
<P>当你在JSP页中使用脚本的时候,你必须知道他们什么时候被执行。声明在HTTP编译阶段就已经被处理了,其他脚本,表达式在编译JSP文件的时候也可用。表达式在HTTP编译的时候也被执行了。表达式的值被转换成了字符串被插入到JSP文件中一块儿被编译。其实在请求阶段,脚本也是可以利用的。 </P>
<P>如何运行例子 <BR>我现在给出的都是在UNIX风格下的路径,如果你用Windows,那么改成Windows风格路径 <BR>1、猜数字游戏在装TOMCAT或者JSWDK的时候就已经装好了。 <BR>2、.jsp和.html文件在../jswdk-1.0.1/examples/num中 <BR>3、.java和.class文件在../jswdk-1.0.1/examples/WEB-INF/jsp/bean/num中 <BR>4、开浏览器,http://机器名/examples/jsp/num/numguess.jsp <BR></P>
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表