主頁(yè) > 知識(shí)庫(kù) > JSP入門教程(1)

JSP入門教程(1)

熱門標(biāo)簽:地圖標(biāo)注創(chuàng)業(yè)項(xiàng)目入駐 廣州三五防封電銷卡 地圖標(biāo)注制作道路 電銷外呼系統(tǒng) 排行榜 珠海銷售外呼系統(tǒng)運(yùn)營(yíng)商 山東智能云外呼管理系統(tǒng) 外呼系統(tǒng)啥意思 四川電信外呼系統(tǒng)靠譜嗎 長(zhǎng)春回?fù)芡夂粝到y(tǒng)廠家
 
    JavaServer Pages (JSP)是基于Java的技術(shù),用于創(chuàng)建可支持跨平臺(tái)及跨Web服務(wù)器的動(dòng)態(tài)網(wǎng)頁(yè)。

JSP可與微軟的Active Server Pages (ASP)相媲美,但JSP使用的是類似于HTML的標(biāo)記和Java 代碼片段而不是用VBScript。當(dāng)你使用不提供ASP本地支持的Web服務(wù)器(例如 Apache或Netscape服務(wù)器)時(shí),你就可以考慮使用JSP了。你雖然也可以為這些服務(wù)器弄一個(gè)ASP附加軟件模塊,但是太昂貴了?,F(xiàn)在Sun公司并不會(huì)因你使用JSP向你收費(fèi)(雖然將來(lái)可能要收),況且用于Solaris、 Linux以及Windows系統(tǒng)的組件都很容易獲得。

不要把JSP與服務(wù)器端的JavaScript語(yǔ)言搞混了。Web服務(wù)器自動(dòng)將通過(guò)JSP生成的Java代碼片段轉(zhuǎn)換成Java 片段(servlets)。 JSP也可自動(dòng)控制許多功能,如過(guò)去用Perl腳本編寫功能程序或像ASP這樣的服務(wù)器專用API(應(yīng)用編程接口)。

我們馬上就要開始幫助你建立一個(gè)使用JSP 技術(shù)的網(wǎng)站范例了。


準(zhǔn)備好計(jì)算機(jī)以使用JSP

你需要Java2軟件開發(fā)工具箱(J2SDK),過(guò)去稱之為Java開發(fā)工具箱(JDK)、JavaServer 網(wǎng)絡(luò)開發(fā)工具箱(JSWDK)、Tomcat,或者其它能支持JSP的Web服務(wù)器。升陽(yáng)公司為Windows、Solaris以及 Linux平臺(tái)提供免費(fèi)的J2SDK和JSWDK。

如果你想在現(xiàn)有的Web服務(wù)器上使用JSP,而此服務(wù)器本身不支持JSP和Java 代碼片段,可以試用Allaire公司的Jrun。它可以為Netscape的Enterprise Server和Fasttrack Server、微軟的Internet Information Server(IIS)和Personal Web Server(PWS)、Apache以及其他服務(wù)器充當(dāng)Web服務(wù)器附件。你也可以使用Apache服務(wù)器的Java版,其中包含最新的JSWDK。

下載并安裝所需的軟件
目前,版本號(hào)為1.2.2-001的J2SDK可下載版以可安裝的歸檔文件形式出現(xiàn)。這個(gè)大約20MB的下載量軟件可提供一個(gè)徹底的Java開發(fā)環(huán)境,讓你創(chuàng)造任何基于Java并且利用了而標(biāo)準(zhǔn)核心API的解決方案。其實(shí),你的Web服務(wù)器使用JSP的唯一條件是要有Java編輯器。要讓W(xué)eb服務(wù)器知道編輯器的位置,需要JAVA_HOME 環(huán)境變量設(shè)置為J2SDK安裝目錄。如果你已經(jīng)在Windows系統(tǒng)中進(jìn)行了安裝并且接受了默認(rèn)目錄, 請(qǐng)將“set JAVA_HOME=C:1.2.2”添加到你的“autoexec.bat”文件中,然后重新啟動(dòng)。

安裝J2SDK后,下載并安裝JSWDK或者是Tomcat β版,即基于Java的Apache Web服務(wù)器的β版。你把JSWDK放在什么地方是無(wú)關(guān)緊要的,只要你以后能找到它就行。通常,將其放在頂層目錄中,這樣你在替換JSWDK或JSDK時(shí)無(wú)需刪除另一個(gè)軟件。安裝好這個(gè)文件后,準(zhǔn)備工作已經(jīng)就緒,你可以開始JSP開發(fā)工作了。

正確地安裝JSWDK后,請(qǐng)運(yùn)行“startserver”腳本程序,以啟動(dòng)Web服務(wù)器,使其按照默認(rèn)情況監(jiān)聽8080端口。你要在啟動(dòng)服務(wù)器之后查看您是否已正確地安裝了此工具,請(qǐng)加載一個(gè)JSP樣本文件(http://locahost:8080/examples/jsp/)。如果你能成功地運(yùn)行這些樣本文件,說(shuō)明你已經(jīng)正確地安裝了這個(gè)軟件。如果你在用來(lái)啟動(dòng)服務(wù)器的控制臺(tái)窗口中看到報(bào)錯(cuò)信息,你就需要做些修改。最經(jīng)常發(fā)生的問(wèn)題是沒有設(shè)置或不正確地設(shè)置了JAVA_HOME環(huán)境變量。要看到當(dāng)前環(huán)境變量設(shè)置情況,要請(qǐng)?jiān)贒OS提示符下鍵入“set”設(shè)置。

開始
在解釋 JSP語(yǔ)法前,創(chuàng)建一個(gè)快捷網(wǎng)頁(yè),顯示目當(dāng)前的日期和時(shí)間,并然后將之其保存為sample.jsp:

html>
head>
title>First Page/title>
/head>
body>
H3>Today is:
%= new java.util.Date() %>
/H3>
/body>
/html>.

把這個(gè)文件以及你所有的HTML 和 JSP 頁(yè)面放在JSWDK安裝目錄下的網(wǎng)頁(yè)目錄里。你可以從http://localhost:8080/sample.jsp加載此網(wǎng)頁(yè)。該網(wǎng)頁(yè)首次被訪問(wèn)時(shí),Web服務(wù)器會(huì)把JSP編譯成Java代碼片段,這樣你就能夠看到當(dāng)前的日期和時(shí)間了。

你已經(jīng)下載、安裝并配置好了開發(fā)環(huán)境,你可以開始學(xué)習(xí)JSP語(yǔ)法并創(chuàng)建自己的基于JSP的解決方案了。

JSP基本語(yǔ)法
講完安裝問(wèn)題后,現(xiàn)在進(jìn)入來(lái)討論JSP語(yǔ)法。一個(gè)投機(jī)取巧的辦法是下載語(yǔ)法卡片。如果你不熟悉Java編程,也許你想看一下Sun的指南 。然而網(wǎng)頁(yè)創(chuàng)建者并不需要進(jìn)行太多的Java開發(fā)。除了一些方法調(diào)用,在你的JSP網(wǎng)頁(yè)里應(yīng)盡可能少用Java代碼。

記住以上提示,我們首先來(lái)看一看JSP指令和腳本元素,之后我們會(huì)解釋JavaBeans和隱含對(duì)象。共有五種JSP指令和腳本元素。在JSP 1.0版中,大部分JSP被一個(gè)以“%” 開頭和以“%>”結(jié)尾的的標(biāo)記括在其中。在更新的JSP 1.1規(guī)范出臺(tái)后,就有了與XML兼容的版本。

JSP指令和腳本元素
Directives %@ directive %>
Declarations %! declaration %>
Expressions %= expression %>
Code Fragment/Scriptlet % code fragment %>
Comments %-- comment --%>



指令
JSP指令是為JSP引擎而設(shè)計(jì)的。他們并不直接產(chǎn)生任何可見輸出,而只是告訴引擎如何處理其余JSP頁(yè)面。這些指令始終被括在 “%@ ?%>”標(biāo)記中。兩個(gè)最重要的指令是“pagePage”和“Include”?!癟aglib”指令不在討論之列,但是在用JSP1.1創(chuàng)建自定義標(biāo)記可以使用它。

幾乎在所有JSP頁(yè)面頂部都會(huì)看到“Page”指令。盡管不是必須的,但它可以讓你指定:
到何處查找起支持作用的Java類別:
%@ page import="java.util.Date" %>,

出現(xiàn)Java運(yùn)行問(wèn)題時(shí),將網(wǎng)上沖浪者引向何處:
%@ page errorPage="errorPage.jsp" %>,



還有你是否需要管理用戶的會(huì)話級(jí)信息,這些信息可能來(lái)自多個(gè)網(wǎng)頁(yè)(在下面的JavaBeans一節(jié)將對(duì)此做進(jìn)一步講)述:
%@ page session="true" %>.



“Include”指令可以把你的內(nèi)容分成更多可管理的元素,比如包括一個(gè)普通頁(yè)面頁(yè)眉或頁(yè)腳的元素。包含的網(wǎng)頁(yè)可以是一個(gè)固定的HTML 頁(yè)面或更多的JSP內(nèi)容:
%@ include file="filename.jsp" %>

聲明
JSP聲明用來(lái)讓你定義頁(yè)面級(jí)變量,以保存信息或定義JSP頁(yè)面的其余部分可能需要的支持方法。如果你發(fā)現(xiàn)代碼太多,通常最好把它們寫成一個(gè)獨(dú)立的Java類別。聲明一般都在“%! ?%>”標(biāo)記中。一定要以分號(hào)(;)結(jié)束變量聲明,因?yàn)槿魏蝺?nèi)容都必須是有效的Java語(yǔ)句:
%! int i=0; %>。

表達(dá)式
有了JSP表達(dá)式,表達(dá)式評(píng)估結(jié)果會(huì)被轉(zhuǎn)換成一個(gè)字符串,并且被直接包括在輸出頁(yè)面之內(nèi)。JSP 表達(dá)式包含在“%= ?%>” 標(biāo)記中,沒有分號(hào),除非在加引號(hào)的字符串部分使用分號(hào)。


%= i %>
%= "Hello" %> .

代碼片段/腳本片段
代碼片段/腳本片段(Scriptlets) JSP代碼片段或腳本片段是嵌在“% ?%>”標(biāo)記中的。這種Java代碼在Web服務(wù)器響應(yīng)請(qǐng)求時(shí)就會(huì)運(yùn)行。在腳本片段周圍可能是原始的HTML或XML語(yǔ)句,在這些地方,代碼片段可以使你創(chuàng)建條件執(zhí)行代碼,或要用到另外一段代碼的代碼。例如,以下的代碼組合使用表達(dá)式和代碼片段,顯示H1、H2、H3和H4標(biāo)記中的字符串“Hello”。代碼片段并不局限于一行源代碼:

% for (int i=1; i=4; i++) { %>
H%=i%>>Hello/H%=i%>>
% } %>.

注釋
最后一個(gè)主要的JSP元素是嵌入式注釋。盡管你始終可以在文件中加入HTML注釋,但用戶在查看頁(yè)面源代碼時(shí)會(huì)看到這些注釋。如果你不想讓用戶看到它,你就應(yīng)該將其嵌入“%-- ?--%>” 標(biāo)記中:

%-- comment for server side only --%>.

帶JavaBean 的JSP
雖然你可以把大段的代碼放在腳本片段(scriptlet)內(nèi),但是絕大多數(shù)的Java代碼屬于可重復(fù)使用的名為JavaBea的組件。JavaBean類似于ActiveX控件:他們都能提供常用功能并且可以重復(fù)使用。

JavaBean的值是通過(guò)一些屬性獲得的,你可通過(guò)這些屬性訪問(wèn)JavaBean設(shè)置。以一個(gè)人來(lái)打比方,這個(gè)人就是一個(gè)JavaBean,這個(gè)人的名字、身份證號(hào)碼以及住址就是其屬性。在JSP網(wǎng)站,你基本上就是通過(guò)玩“Connect the beans)”來(lái)使你的網(wǎng)站動(dòng)態(tài)化。

假設(shè)JavaBean先于網(wǎng)站被創(chuàng)建出來(lái),你需要做的第一件事就是告訴JSP頁(yè)面它將要用到一個(gè)“Bean”。你可以用“jsp:useBean>”標(biāo)記來(lái)做到這一點(diǎn):
jsp:useBean id="localName" class="com.jguru.Person" scope="application" />。

“jsp:useBean>”標(biāo)記要求你用“id”屬性來(lái)識(shí)鑒別Bean。這里你提供一個(gè)名字來(lái)JSP頁(yè)面其余部分的Bean。除了“id”屬性,你還須告訴網(wǎng)頁(yè)面從何處查找Bean,或者它的Java類別名是什么。這種類別屬性提供確 認(rèn)Bean的功能,其他一些方法也可以做到這一點(diǎn)。最后一個(gè)必需的元素是“scope”屬性。有了“scope”屬性的幫助,你就能告訴Bean為單一頁(yè)面(默認(rèn)情況)[scope="page"]、為[scope="request"]請(qǐng)求為會(huì)話[scope="session"],或者為整個(gè)應(yīng)用程序[scope="application"]保持留信息。有了會(huì)話范圍,你就能非常容易地在JSP網(wǎng)頁(yè)面上維護(hù)購(gòu)物車等項(xiàng)目。

一旦你聲名了一個(gè)JavaBean,你就可以訪問(wèn)它的屬性來(lái)定制它。要獲得屬性值,請(qǐng)用“jsp:getProperty>”標(biāo)記。有了這個(gè)標(biāo)記,你就能指定將要用到的Bean名稱(從useBean的"id"字段得到)以及你想得到其值的屬性。實(shí)際的值被放在輸出中:
jsp:getProperty id="localName" property="name" />。

要改變JavaBean屬性,你必須使用“jsp:setProperty>”標(biāo)記。對(duì)這個(gè)標(biāo)記,你需要再次識(shí)別Bean和屬性,以修改并額外提供新值。如果命名正確,這些值可以從一個(gè)已提交的表中直接獲得:參數(shù)獲得:
jsp:setProperty id="localName" property="*" />;

可以從一個(gè)參數(shù)獲得,但你必須直接命名屬性和參數(shù):
jsp:setProperty id="localName" property="serialNumber" value="string" />

或者直接用一個(gè)名字稱和值來(lái)設(shè)置: jsp:setProperty id="localName" property="serialNumber" value= %= expression %> />.

關(guān)于JavaBean 的最后一件事: 為了Web服務(wù)器能找到JavaBean,你需要將其類別文件放在一個(gè)特殊位置。用JSWDK,最 方便的位置是安裝目錄下的類別目錄,如jswdk-1.0.1classes。

JSP隱含對(duì)象
與JSP語(yǔ)法相關(guān)的最后的元素是一些叫做“隱含對(duì)象”的東西。在JSP代碼片段中,你可以利用這些隱含對(duì)象與JSP頁(yè)面的代碼片段執(zhí)行環(huán)境產(chǎn)生互動(dòng)。應(yīng)盡量少訪問(wèn)這些內(nèi)置隱含對(duì)象。但是,在一某些情況下,訪問(wèn)隱含對(duì)象是可被接受的。若要充分利用隱含對(duì)象,就需了解最新的Java Servlet API。
下表列出可用的隱含對(duì)象集合。

隱含對(duì)象說(shuō)明
request 客戶端請(qǐng)求,包括從GET/POST請(qǐng)求傳遞過(guò)來(lái)的參數(shù)
response 網(wǎng)頁(yè)傳回客戶端的反應(yīng)
pageContext 在此管理網(wǎng)頁(yè)屬性
session 與請(qǐng)求關(guān)聯(lián)的會(huì)話
application 代碼片段的運(yùn)行環(huán)境
out 傳送響應(yīng)的輸出流
config 代碼片段配置對(duì)象
page JSP網(wǎng)頁(yè)本身
exception 有錯(cuò)的網(wǎng)頁(yè)中未被捕獲的例外



這些都是用來(lái)做什么的,你又如何來(lái)使用它們呢?基本上說(shuō),在你的腳本片段里,你可以用它們進(jìn)入執(zhí)行JSP代碼的代碼片段。用不著深入了解太多的Servlet API細(xì)節(jié),我們來(lái)看看能用它們來(lái)做到的某些事情:


你可以不用表達(dá)式,直接進(jìn)入“Out”隱含對(duì)象,將某些內(nèi)容輸出到響應(yīng)中:
% out.println("Hello"); %>。
用不著把一個(gè)參數(shù)直接送到JavaBean,你可以從請(qǐng)求對(duì)象獲取參數(shù)值:
% String name=request.getParameter("name"); out.println(name); %>.

在你用JSP進(jìn)行開發(fā)的過(guò)程中,進(jìn)行更多的開發(fā)的過(guò)程中,如果創(chuàng)建了JavaBeans或發(fā)現(xiàn)JSP文件中加入了太多的Java源代碼,你就需要?jiǎng)?chuàng)建起支持作用的Java分類(class)了,它可以協(xié)助你重復(fù)利用源代碼并減少JSP網(wǎng)頁(yè)編譯時(shí)間。當(dāng)你需要?jiǎng)?chuàng)建Java分類文件時(shí),你必須:


將JDSWK installationin目錄添加到PATH中。在autoexec.bat文件PATH行的末尾,加入“C:1.2.2/bin”。
用這個(gè)命令將JAR文件復(fù)制到“jrelibext:”目錄中: copy c:jswdk-1.0.1libservlet.jar c:jdk1.2.2jrelibext.

創(chuàng)建一個(gè)JSP網(wǎng)站
現(xiàn)在該是把所有這些JSP語(yǔ)法派上用場(chǎng)的時(shí)候了。我們將創(chuàng)建一個(gè)網(wǎng)頁(yè),它有一個(gè)輸入表單,可以使用戶輸入一個(gè)股票代號(hào)以獲得出當(dāng)前股價(jià)(有20分鐘)。如果輸入有誤,則顯示報(bào)錯(cuò)網(wǎng)頁(yè)。

quote.jsp
首先,用 這個(gè)代碼 創(chuàng)建一個(gè)quote.jsp網(wǎng)頁(yè)并將其保存在JSWDK安裝目錄下的網(wǎng)頁(yè)目錄中。大多數(shù)的網(wǎng)頁(yè)是標(biāo)準(zhǔn)的HTML,其間散布著JSP代碼。第六行是一個(gè)網(wǎng)頁(yè)指示,表示將把所有錯(cuò)誤發(fā)送到“errorPage.jsp”文中。第13到15行是一個(gè)腳本片段,主要說(shuō)明只有提供“符號(hào)”參數(shù)才會(huì)顯示表格?!癐f”代碼段在32到34行結(jié)束。第17行定義了要用的JavaBean,第18行從參數(shù)加載JavaBean的符號(hào)屬性。第27行到29行顯示Bean的屬性。除了"if "代碼段,實(shí)際上并不涉及其它Java代碼。

errorPage.jsp
下一步,將下列JSP源代碼保存到網(wǎng)頁(yè)目錄中的“errorPage.jsp”文件中?!斑@是一個(gè)錯(cuò)誤網(wǎng)頁(yè)”的提示為第一行,它將isErrorPage網(wǎng)頁(yè)提示屬性設(shè)置為真。上一頁(yè)說(shuō)了明錯(cuò)誤網(wǎng)頁(yè)的位置,本頁(yè)則說(shuō)明這就是錯(cuò)誤網(wǎng)頁(yè)。其它JSP文件中的JSP專用代碼只有訪問(wèn)隱含例外對(duì)象才用到。網(wǎng)頁(yè)只顯示其值:

%@ 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資源來(lái)獲得股票價(jià)格。需要將此 資源保存到JSWDK安裝目錄下“classescomjguru”目錄中的“quotes.java”文件中。請(qǐng)?jiān)诖擞肑SDK中的Javac編輯器來(lái)編輯它。


你的第一個(gè)JSP網(wǎng)頁(yè)。
創(chuàng)建了這兩個(gè)JSP文件,建立了JavaBean資源文件并編輯了它后,你就可以從http://localhost:8080/quote.jsp加載“quote.jsp”文件以查看結(jié)果,假設(shè)你沒有更改JSWDK安裝設(shè)置,轉(zhuǎn)而使用別的端口。這個(gè)網(wǎng)頁(yè)當(dāng)然能做得更漂亮,但是它已實(shí)現(xiàn)了需要實(shí)現(xiàn)的功能,并且很好地展示了JSP的功能。

標(biāo)簽:紹興 肇慶 吳忠 廣元 北海 潮州 保定 玉樹

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《JSP入門教程(1)》,本文關(guān)鍵詞  JSP,入門教程,JSP,入門教程,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《JSP入門教程(1)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于JSP入門教程(1)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章