JSP動態網頁制作一定要知道的基礎知識
2024-09-05 00:19:46
供稿:網友
一個普通的錯誤是把jsp當作簡化的 java。它不是,(事實上, jsp 是簡化的 servlets 。)程序員通常試著沒有學習要求的支持技巧而 直接學習 jsp 。jsp 是一個銜接技術,并且成功地連接你需要理解的另外的技術。如果你已經知道 java , html 和 javascript,這意味著 jsp 將確實是簡單的。
需要成為一個成功的 jsp 程序員可以參考這個時間表。請注意下列:
*忽略你已經熟悉的步驟。
*訓練的時間只是代表學習好足夠的基礎時間,這樣才能轉移到下一步。
1、建立并且理解你的web server。
因為apache 是免費的并且在大多數平臺上工作,為訓練目的推薦 apache。
安裝時間:2 天。
2、 保證你理解 html / xhtml 。
你將需要了解html基礎, 特別是 html 布局中的table的使用。xhtml 不久將代替 html ,學習 xhtml 的基礎是一個好主意。許多程序員通過 html ide 學習 html ( 集成開發環境 ) 。因為大多數 html ide產生混亂的html語法,所以花時間學習手工寫作html是很有必要的。因為你將會使用 jsp 和 html 混合編程,精通html語法是重要的。所以,你必須能流利地寫 html 。
訓練時間:2 ~ 4 個星期。
3、開始學習 java 。
開始學習 java 1.3 理解 java 基礎是很重要的。不用擔心學習swing或 java 的圖形方面,因為在jsp 中你不會使用這些特征。集中精力 在 java 工作的細節,學習 java 的邏輯,也在 java bean上花時間。學習applet是好的, 但是就象swing, jsp 的大多數應用將不使用小程序。
訓練時間:3 ~ 6 個星期。
3、學習 javascript
學習怎么將 javascript在html中驗證輸入的form元素。也學習 javascript怎么能在一 html 頁以內修改form的元素。最后要求你能從一html 頁內的事件中觸發 javascript function。
訓練時間:一~ 2 個星期。
4、學習并且理解你的web server的更好的細節。
熟悉web server的特征,這是很重要的。
訓練時間:2 天。
5、建立你的 jsp server
我推薦以tomcat開始。它可以很好地運行jsp程序。當你不能在生產使用tomcat時,學習盡可能多的知識以便于更好的運行程序。另外, 許多 jsp 程序員使用tomcat。因此當你遇到一個問題時,你將容易發現幫助。
安裝時間:一~ 2 天。
6、開始學習 jsp 。
基本的 jsp 學習通過的步驟 1到步驟6可以完成, 然后使用 jsp 對象和腳本寫 jsp 程序來聯系。學習 jsp 的另外一個方面可以學習怎么創建一個分布式的應用程序。
訓練時間:4 ~ 6 個星期。
7、學習更多的 jsp server。
沒有關于更多的 jsp server當然也可以運行jsp程序。然而, 許多 jsp server都由自己特殊的特征,可以讓你更好的理解你的jsp 工程。學習更多的jsp server如何處理jsp程序是有必要的。同樣也可以優化你的 jsp 應用程序,并且使之運行得更快而不出任何問題。
訓練時間:2 ~ 7 天。
8、 學習 jdbc 。
jsp 大多數應用將使用數據庫,jdbc 被用于數據庫連接。經常忽略的一個事實就是,每個 jdbc driver 所支持的東西是相當不同的。了解并熟悉在jsp工程上被使用的 jdbc driver的細節是很重要的。
(有時這部分的學習被包含在前面 java 或jsp的學習中了 。)
訓練時間:1~ 2 個星期。
到現在,你已經成為了熟練的 jsp 程序員。仍然有很多需要學習,你可以考慮擴展你的知識比如 dhtml , xml ,java證書, jsp tag libraries 或 servlets , 看你想要造什么類型的網站而決定了。
這些訓練是jsp 的核心。你不必都學習上面所有的, 取決于你在工程中分配到什么任務和你已經有什么知識。但是這是我成功地訓練程序員的時間表。關鍵的單元是時間。平均的說, 5 個月時間確實能夠訓練一個人 ( 從開始到完成 ) 成為一個對jsp熟悉程序員。5 個月時間似乎很長,但要成為一個資深的web程序員所學的東西遠遠不止這一些。
下面為總結
任何人員需要必備的技巧主要有以下這些技術。
開發web應用程序的技術已經變得更成熟、更復雜了。現在,構建一個web應用程序不僅僅需要簡單的html技術了。數據庫訪問、腳本語言和管理都是一個web程序員需要具備的技術。讓我們來看看要成為一個市場上受歡迎的人員都需要些什么技能吧。
自從cern(歐洲粒子物理研究所),日內瓦附近的高能物理研究中心,在1991年發布了web以來,web技術已經從靜態的內容和common gateway interface(cgi)發展成servlet技術和javaserver pages了。然而,在這個競爭更激烈的社會中,一個web程序員需要更多的知識。例如,如果在面試中,你提到你熟悉xml并在jndi方面有些經驗(這兩種技術初看似乎同web編程沒有很緊密的關系),那么你就會給你未來的老板留下更深的印象。設想你已經了解了java編程語言和面向對象的編程,下面還有兩組技術是一個人員日常工作中所需要的。第一組包括每個web程序員必須具備的技術。第二組包含要想成為一個高級程序員所應該掌握的技術。
基本技能
如果想稱自己是個人員,下面就是必須具備的技術。
html(hypertext markup language)
html幾乎是顯示在瀏覽器上所有內容的語言。難怪html就好像是一個web程序員的生存本能一樣。如果你仍需要在你的html中查找<tr>或<b>,那么你真的需要提高你的html技術了。html的當前版本是4.01,你可以從http://www.w3.org/tr/1999/rec-html401-19991224/了解更多關于它的內容。
servlets和jsp
java servlet技術是開發java web應用程序的主要技術。它是由sun microsystems在1996年開發的,當前的版本是2.3,但人們正在為版本2.4做準備。
jsp是servlet技術的擴展,現在的版本是1.2(2.0版將很快定下來)。有人認為jsp是servlets的替代,但實際并不是這樣的。servlets和jsp是一起用于復雜的web應用程序的。
用java進行web編程的一個好的開端就是學習servlet技術。即使你打算在你的web應用程序中只運用jsp頁面,你仍需要學習servlet技術。在更復雜的web應用程序中,jsp頁面只用于顯示,而javabeans和自定義標簽庫用來嵌入商業邏輯。即:你也必須精通javabeans和自定義標簽庫。
javascript
javascript是運行于所有的主要的瀏覽器中的腳本語言。你用javascript來進行客戶端的編程??蛻舳司幊讨凶钪匾墓ぷ骶褪谴_認用戶輸入。運用客戶端輸入驗證的好處是減少服務器的工作量并提高響應時間。另外,javascript可以用于重新定向(redirection)、cookie處理、控制applets、創建導航樹、打開一個瀏覽器的一個新的實例、等等。
sql(strutured query language)和jdbc(java database connectivity)
如今,大多數web應用程序都包括訪問關系數據庫中的數據。作為一個web程序員,你需要知道如何存儲、得到并操作數據庫中的數據。有時侯,你也需要設計數據庫,構建數據庫中的表和其它結構。sql就是用來操作數據庫中數據的語言。你通常需要編寫sql語句(常常是動態的),把它們傳遞到數據庫服務器,并得到返回的數據(如果有的話)。
運用java語言,你需要用jdbc來幫助web應用程序和數據庫服務器進行通訊。jdbc有兩部分:jdbc core api(application programming interface)和jdbc optional package api。第一組用來執行基本的數據操作,如創建一個連接或讀取、更新并刪除一個表中的記錄。第二組提供更高級的數據庫連接功能,如連接池、事務和rowset。jdbc的當前版本是3.0,api包含在j2se v. 1.4中。
web container管理和應用程序部署
你的servlets和jsp頁面在一個叫做servlet/jsp container或web container的引擎中運行。你至少需要知道如何為測試以及生產運行部署你的web資源。例如,如果你運用tomcat,你需要了解的一件事就是如何映射配置文件(server.xml)中的應用程序,使tomcat知道如何調用你的jsp頁面。另外,你需要知道在哪里保存你的庫以及如何創建應用程序部署描述符。
xml(extensible markup language)
xml是計算機領域中一個成功的后起之秀。由world wide web consortium在1996年開發,xml現在已經是用于數據交換和可擴展數據結構的一個廣泛的、公認的標準了。xml在java 中扮演著一個重要的角色。例如,每個應用程序的部署描述符都是xml格式的。而且,如果你在開發web servies,你就會用到soap(simple object access protocol),它主要是基于http和xml的。
另外,在web應用程序中,xml也可能用于存儲分等級的數據。
model 2結構
這種技術在該類別中是最先進的。建議用這種結構來構建相當復雜的java web應用程序。model 2結構是基于model-view-controller設計范例的。
高級技術
下面這些技術可以將你同初學者區別開來。
jstl(jsp standard tag libraries)、jakarta taglibs項目和其它庫
為了加速應用程序的開發,你應該經常重用代碼。簡單地說,代碼重用就是,如果有人已經編寫了用來執行某些功能的代碼,你最好就去用那些代碼,而不要自己編寫了。因此,jsp可以讓你運用自定義標簽。你可以運用幾個庫,最受歡迎的是apache的jakarta taglibs項目中的庫。從http://jakarta.apache.org/taglibs/index.html 可以下載這個包,你在開始創建新類前,可以運用在這個包中找到的任何現成的東西。
jstl最近已經成為了一個標準。其它標簽庫可以免費或以商業方式得到。
apache的struts項目
struts是一個apache贊助的公共資源項目,它為構建model 2 java web應用程序提供了一個構架。struts為mvc結構提供它自己的controller組件,將ejb、jdbc和jndi用于model,將jsp和其它技術用于view。你可以從它的網站找到更多關于這個項目的更詳細的信息:http://jakarta.apache.org/struts/index.html。
xhtml(extensible hypertext markup language)
xhtml是努力將html和xml結合起來的一種技術。你可以把xhtml當作下一代的html。其當前的版本是1.0(第二版是于2002年8月1日發布的),xhtml還沒有像html那么流行,但它在將來會發揮更重要的作用。根據web設計專家molly holzschlag的觀點,推動各個公司轉向xhtml的主要原因是美國的關于公開訪問(accessibility)的法律。更多關于xhtml的信息,參閱holzschlag訪談。
dhtml(動態html)
dhtml可以允許人們在你的網站上進行更多的交互。例如,運用dhtml,當用戶移動鼠標到一個鏈接上時,你就可以很容易地創建并顯示子菜單。運用dhtml的最大的挑戰是創建跨瀏覽器的頁面。的確,在理論上,頁面設計應該是由美工處理的,其中動態的html是通過運用一個工具而產生的。然而,一個web程序員通常要負責集成所有的部分,如果在頁面中生成的代碼被破壞了,你就需要了解dhtml來修理它。
applet 編程
applets曾經在提供交互性方面很重要,尤其在dhtml出現前。現在,applets的作用被削減了,更多的程序員已經不用applets了。microsoft決定在它的新瀏覽器中不為applets提供缺省的支持極大地削減了applets在web應用程序中的作用。然而,applets并沒有消亡。對于某些任務,如顯示新聞標題,applets仍然是不可替代的,而且applets不會產生另人頭痛的跨瀏覽器兼容方面的問題。
http協議
java web程序員通常運用比http更高的協議,如運用servlet和jsp apis。這些apis隱藏了http協議的復雜性。因此,你仍可以構建重要的應用程序而不需要知道多少關于http協議的知識。只有當你需要處理原始數據,比如將文件作為附件上載或傳送時,你才需要更多關于協議的知識。
ejb(enterprise javabeans)
ejb是j2ee的一部分,當可擴展性和強大性是你的web應用程序的主要需求時,ejb就很重要。在當前規范(ejb 2.0)中有三種類型的ejbs:會話(session)ejbs、實體(entity)ejbs和消息驅動的(message driven)ejbs。新的規范,2.1版,正在設計中。
jndi(java naming and directory interface)
當你在開發企業beans時,jndi很重要,因為對一個ejb的訪問是通過jndi的命名服務完成的。運用一個命名服務來查找與一個特定名字相關的一個對象。在ejb context中,一個命名服務找到一個企業bean,給定這個bean的名字。因此,了解jndi在開發一個ejb應用程序中是至關重要的。另外,jdbc可以用jndi來訪問一個關系數據庫。
其它工具
了解在哪里可以找到特定的支持工具通常有助于的你的事業的發展。例如,如果你碰巧被分配去做關于基準的任務,那么你如果知道你可以從apache的jakarta project下載jmeter,你就會很高興。另外,如果你需要以pdf格式發送輸出結果,建議你從http://www.lowagie.com/itext/ 運用可以免費下載的java-pdf庫。internet技術范圍很廣而且發展很快。這就是說,作為一個web程序員,你應該時時留心業界出現了什么新技術,發生了什么大事。在這個方面,沒有什么比internet本身更偉大的資源了。
-------------------------------------------------------------
客戶端(client)與服務器端(server)的概念
服務器:廣義地說,服務器分兩種(硬件服務器、軟件服務器)
硬件服務器:指相對pc機而言,性能和穩定性較好的、采用特殊硬件的計算機。
軟件服務器:通俗的說,就是指安裝了某種服務軟件,并能提供相應的服務的機器,我們稱之為服務器。
服務軟件有很多種,常見的有:
www服務的軟件:pws、iis、apache
j2ee中間件應用服務器:websphere、silverstream
jsp引擎(弱的www服務功能):tomcat,resin,weblogic,jrun
smtp、 pop3:iis的smtp,exchange,lotus domino
ftp:iis所自帶
客戶端:相對服務器來說,就是享受了某種服務的一方,被稱之為客戶端。但若要享有某種服務也必須安裝相應的軟件,如(ie/netscape、outlook/foxmail、cuteftp)
數據類型
基本類型有以下四種:
int長度數據類型有:byte(8bits)、short(16bits)、int(32bits)、long(64bits)
float長度數據類型有:單精度(32bits float)、雙精度(64bits double)
boolean類型變量的取值有:ture、false
char數據類型有:unicode字符,16位
對應的類類型:integer、float、boolean、character、double、short、byte、long
轉換原則:
從低精度向高精度轉換byte 、short、int、long、float、double、char
注:兩個char型運算時,自動轉換為int型;當char與別的類型運算時,也會先自動轉換為int型的,再做其它類型的自動轉換
1,基本類型向類類型轉換
正向轉換:
通過類包裝器來new出一個新的類類型的變量
integer a= new integer(2);
反向轉換:
通過類包裝器來轉換
int b=a.intvalue();
2,類類型向字符串轉換
正向轉換:
因為每個類都是object類的子類,而所有的object類都有一個tostring()函數,所以通過tostring()函數來轉換即可
反向轉換:
通過類包裝器new出一個新的類類型的變量
eg1: int i=integer.valueof(“123”).intvalue()
說明:上例是將一個字符串轉化成一個integer對象,然后再調用這個對象的intvalue()方法返回其對應的int數值。
eg2: float f=float.valueof(“123”).floatvalue()
說明:上例是將一個字符串轉化成一個float對象,然后再調用這個對象的floatvalue()方法返回其對應的float數值。
eg3: boolean b=boolean.valueof(“123”).booleanvalue()
說明:上例是將一個字符串轉化成一個boolean對象,然后再調用這個對象的booleanvalue()方法返回其對應的boolean數值。
eg4:double d=double.valueof(“123”).doublevalue()
說明:上例是將一個字符串轉化成一個double對象,然后再調用這個對象的doublevalue()方法返回其對應的double數值。
eg5: long l=long.valueof(“123”).longvalue()
說明:上例是將一個字符串轉化成一個long對象,然后再調用這個對象的longvalue()方法返回其對應的long數值。
eg6: char=character.valueof(“123”).charvalue()
說明:上例是將一個字符串轉化成一個character對象,然后再調用這個對象的charvalue()方法返回其對應的char數值。
3,基本類型向字符串的轉換
正向轉換:
如:int a=12;
string b;
b=a+””;
反向轉換:
通過類包裝器
eg1:int i=integer.parseint(“123”)
說明:此方法只能適用于字符串轉化成整型變量
eg2: float f=float.valueof(“123”).floatvalue()
說明:上例是將一個字符串轉化成一個float對象,然后再調用這個對象的floatvalue()方法返回其對應的float數值。
eg3: boolean b=boolean.valueof(“123”).booleanvalue()
說明:上例是將一個字符串轉化成一個boolean對象,然后再調用這個對象的booleanvalue()方法返回其對應的boolean數值。
eg4:double d=double.valueof(“123”).doublevalue()
說明:上例是將一個字符串轉化成一個double對象,然后再調用這個對象的doublevalue()方法返回其對應的double數值。
eg5: long l=long.valueof(“123”).longvalue()
說明:上例是將一個字符串轉化成一個long對象,然后再調用這個對象的longvalue()方法返回其對應的long數值。
eg6: char=character.valueof(“123”).charvalue()
說明:上例是將一個字符串轉化成一個character對象,然后再調用這個對象的charvalue()方法返回其對應的char數值。