国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

利用Java Servlet實現在Web服務器平臺上的開發

2019-11-17 04:05:05
字體:
來源:轉載
供稿:網友
利用java Servlet實現在Web服務器平臺上的開發
張紅

目前,Java在Internet網上的開發技術已非常廣
泛,從最初的Java Servlet到與數據庫聯系在一起的
SQL—J,尤其是jsp技術的迅速發展,使得Java的網
絡應用不再是少數人的專利,JSP以其執行的高效性
和使用的方便性,已成為近年來大家首選的Internet
網開發技術[2]。通過使用Servlet,可以通過網頁表單
收集用戶的輸入,將數據庫或其它數據源中的數據呈
現給用戶以及動態地創建網頁。結合使用Java類、
Servlet和JSP,可以創建交互式Web應用程序。以復
雜、內聚的方式動態地生成內容及響應用戶輸入的網
站。如:用戶在電子商務網站上購物或在線幫助時,其
實都在運行Web應用程序Ⅱ]。
1 Servlet的使用
Servlet是由Web服務器運行的java類,即安裝
有支持java servlet規范的解釋器。該解釋器通常被
稱為servlet引擎,被優化成使用最少的Web服務器
資源來運行servlet。Java servlet的用途與使用通用
網關接口一CGI實現的程序相同。它能完成CGI所完
成的所有任務,并同時支持一些使用大多數CGI腳本
語言都難以實現的行為。且Servlet對會話提供了全
面支持,會話是一種跟蹤Web用戶在特定時段如何
瀏覽網站的方式。Servlet還能使用標準接口直接與
Web服務器進行通信。只要服務器支持Servlet,它就
能與這些程序交換信息。
與Java本身一樣,Java servlet也有可移植性的
優點,其次,它在內存方面也是高效的。使用Servlet
比使用CGI腳本來處理用戶的請求要快。Servlet是
在服務器上運行一個Java虛擬機,因此在多次調用
同一個Servlet時,它只需加載一次即可。只有在
Servlet發生了變化時,才重新加載Servlet。而且加載
一個修改后的Servlet不需要重新啟服務器(當然也
可以通過重新啟動服務器來加載 ,因此,由Java
Servlet的種種優點來看,必將代替傳統的CGI程序。
多種web服務器支持Servlet,對于新的Servlet
開發人員,可選擇Tomcat,它是Apache軟件和SUM
Microsystems合作開發的一種開源服務器。且可通
過Apache下載。
2 Servlet的創建與開發
Servlet運行于服務器端,它接受來自客戶端的
請求,將處理結果返回客戶端。在許多大型應用中可
以作為現有的Internet技術和Java的中間橋梁。
在許多的Internet技術應用中,采用的是三層結
構。第一層是用戶服務,第二層是業務服務,第三層是
數據服務。這種結構帶來了很大的靈活性。
在三層結構中,第一層可以是任意多的支持Java
的瀏覽器(包括運行在NC上的和運行在PC或工作
站上的)。復雜的用戶界面的處理工作由Java applet
完成;簡單的任務可以交給標準的HTML頁完成。
applet可以從第二層的服務器上下載到客戶機上。
第二層是Java服務器。它由多個Servlet構成,作
為用戶服務和數據服務之間的橋梁。這些Servlet使
用應用系統所需的業務規則和正規過程對數據進行
處理。由于業務規則比它們支持的特定業務更頻繁地
改變,Servlet的動態可伸縮性使得它成為理想的候
選者。
第三層由數據庫組成。該層定義、維護、訪問和更
新數據,并管理和滿足業務對數據的請求。它可以在
特定的數據庫管理系統中實現。
Java servlet的創建和編譯方式與其它Java的應
用程序相同。安裝兩個servlet包,并將其所在的文件
夾加入到CLASSPTH中后,便可以使用JDK的java
編譯器或其它編譯器來編譯。
當web服務器運行servlet以處理用戶請求時,
方法init(servletConfig)將自動被調用。即一個Java
servlet能夠處理來自不同Web用戶的多個請求。
web服務器終止Servlet時,方法destroy?()會
被調用。Servlet的主要任務之一是收集來自web用
戶的信息,并提供相應的內容進行響應。如頁面上的
一個Web表單,若使用Web瀏覽器mozilla加載,用
于顯示該頁面的HTML標記如下:

(html>
(body)
(head><title>RoT一13 translator(/title)</
head>
(hi>ROT一13 Translat0r</h1>
<p)Text to translate:
(form action ”text"rows=”8”cols= ”55">
(/textarea>
)input type=“submit“value= “translate“
(/form>
(/body)
</html>
復制代碼
表單包含在HTML標記(form)和</form>之間,
表單中的每個控件都存儲了信息,這些信息可被傳遞
給Web服務器,進而傳遞給Java servlet。web瀏覽器
使用HTTP與服務器進行通信。可以使用兩種HTTP
請求來將表單數據發送給服務器:GET和POST。
要將數據發送給瀏覽器,需要創建一個與瀏覽器
相關聯的Servlet輸出流,然后調用該輸出流的PRim—
In(string)方法,Servlet輸出流由Servletoutputstrean
類表示,這個類位于javax.servlet包中。可以通過調
用HttpservletResponse類的getOutputstream()方法
來獲得這樣的流。
如下例:使用HttpservletResponse對象response
創建一個Servlet輸出流,然后將一個簡短的網頁發
送到這個流中:

Serevletoutputstream out= response.getout—
putstream();
Out.println(”(html”>;
Out.println(”(body)”);
OUt.println(”(hi)hello world!</hl>”;
Out.println(”</body)”;
Out.println(”</html>”;
復制代碼
通常,Web是一種無狀態的協議,它沒有一個簡
單的方法去跟蹤用戶在頁面間導航的情況,Web瀏
覽器向服務器請求URL時,將收到相應的文件,隨后
服務器將不會記憶,也不會采取措施來跟蹤用戶一段
時間內在網上的操作。如果僅僅提供一系列靜態頁
面,上述信息并不重要。但對很多用web應用程序而
言,這些信息確是不可缺少的。尤其在電子商務中。
3 Java servlet數據訪問
基于Web的多數據庫訪問是電子商務和電子政
務迅速發展而出現的一種多數據庫聯合應用的形式。
在數據庫異構,操作系統異構的條件下,對于數據量
很大的這種多數據庫應用問題,只有Java技術才有
能力解決。
對于在Web下的多數據庫訪問,Java的新技術
是Servlet。Java Servlet是在服務器端運行的Java程
序。現在隨著Servlet API2.4的引入,服務器的
Servlet將把Java Web軟件開發帶向更高的層次。
Servlet提供了快捷、強大、靈活的開發環境。開發出
來的Servlet可以在服務器的進程空間里運行,并能
同時處理多個請求。當然,最值得稱道的是Servlet的
平臺無關性。
對于基于Web的多數據庫訪問,Java Bean技術
可以提供一個比較強大、靈活的解決方案。首先構造
多個Java Bean,在這些模型組件里,要處理數據庫的
連接、定義,查找、插入、刪除操作等方法,并要實現多
線程,然后構造編寫調用Java Bean的Servlet,這樣可
以實現對多數據庫的訪問。Java Bean的結構如下:

public class DatabaseConnectBe an
(
定義數據庫連接的成員;
定義連接的方法()
)
在Servlet中調用Java Bean的過程為:
public class UsedatabaseBean extends
HttpServlet
(
public void doGet (httpServletRequest req,
HttpServletResponse resp) throws ServletExeep—
tion,IOException
(
)
public void doPost (httpServletRequest req,
HttpSerVletResponse resp) throws ServletExcep—
tion,IOException
{
//創建Java Bean的對象
DatabaseC0nnectBean conBean =:= newDatabaseConnectBean(&#8943; &#8943; );
//使用conBean進行數據庫的操作
● ● ● ● ● ●
)
)
復制代碼
從上述的過程和語句可以發現,使用Servlet技
術可以訪問各種不同類型的數據庫,但是使用Servlet
技術下的Java Bean技術要保證數據庫數據的一致
性,應在Java Bean中可以使用Java的線程技術中的
同步等方法來實現對數據庫的連接、操作,但這樣將
加大程序員的編程實現。所以使用Servlet技術下的
Java Bean能同時對多個數據庫實體的訪問,但實現
起來不方便。
4 Java Servlet與JSP的結合
4.1 JSP
JSP是一種基于Java Servlet的Web開發技術。
它和asp非常相似,但嵌入HTML頁面的執行代碼
不是VBScript之類的腳本,而是Java代碼。在Sun正
式發布JSP(JavaServer Pages)之后,這種新的Web
應用開發技術很快引起了人們的關注。JSP為創建高
度動態的Web應用提供了一個獨特的開發環境。按
照Sun的說法,JSP能夠適應市場上包括Apache
WebServer、IIS4.0在內的85 的服務器產品。
在執行JSP頁面時,JSP頁面先被轉換成Java
源文件,然后又被編譯成class文件(eP Servlet)。這
些都必須有Servlet engine和JSP engine的支持,必
須在Web服務器上安裝相應的軟件,如jserv、gnu—
jsp。與ASP一樣,JSP中的Java代碼均在服務器端
執行。因此,在瀏覽器中使用“查看源文件”菜單是無
法看到JSP源代碼的,只能看到結果HTML代碼。
事實證明,Java Servlet是一種開發web應用的
理想構架。JSP以Servlet技術為基礎,又在許多方面
作了改進。JSP頁面看起來象普通HTML頁面,但它
允許嵌入執行代碼,在這一點上,它和ASP技術非常
相似。使用JSP,可以將網頁網頁的靜態內容放到
HTML文檔中,并在其中調用Servlet。
JSP是Servlet的補充,而不是替代品,它使Web
如下的兩種內容分開:
靜態內容;網頁中不變的部分,如網上商店中關
于商品的介紹。
動態內容:Servlet生成的網頁部分,如商品的價
格和供貨情況,這些數據可能隨商品的銷售而變化
如果只使用Servlet,要進行細微的修改如:更正輸入
錯誤、重寫段落或修改HTML標記以改變網頁的呈
現方式將極其艱難。即要進行任何修改,都必須對
Servlet進行編輯、編譯、測試,并將其重新部署到
Web服務器上。
4.2 JSP數據和Javascript數據交互[。]
對于Web程序來說,前端(JavaScript)和后端
(JSP/Servlet)是沒法共用數據的,只能是后端程序
(JSP)把數據輸出,生成頁面到前端,這時候生成的
頁面中的JavaScript代碼才有可能得到所謂jsp的數
據。同樣的,只有把JavaScript里的數據提交給后端
JSP代碼,JSP程序中才能得到JavaScript的數據。
以下是實現在頁面的JavaScript中使用jsp中的
數據或是在JSP中使用頁面的JavaScript數據的方
法。 、
4.3 頁面中的JavaScript的數據如何提交給后臺的
JSP程序
(1)可以將JavaScript的數據以XXX.JSP?varl—
aaa~var2=bbb的形式作為URL的參數傳給JSP程
序,此時在jsp中用
< String strVarl — request. getParameter (”
varl ); >
就可以獲取到JavaScript腳本傳遞過來的數據;
(2)使用JavaScript通過在表單里加入隱藏域信
息,然后用表單提交的方式把數據傳遞給JSP程序。
可參考下面的腳本:
(script language=“JavaScript“、
<! 一一
/* * * * * * * * * * * * * * * * * * * * * *
* * * * * * -X- * -)6 * * * * * * * * * * * * *
* * -X- * -X- -)6 * * * * * * * * * * * * *
*JavaScript腳本,放置在頁面中的任何位置都
可以
*insertclick()函數獲取JSP傳遞到頁面中的變
量varMC,
*然后就可以在JavaScript中修改這個變量的
值,再通過
*post的方式提交給JSP程序來使用。

function insertclick(){
varl— document.al1.mc.value;//獲取頁面form
中的變量值
varl— varl+ ”名稱”;
document.insertForm.submit();
}
l|一一、
(/script)
<!一一html頁面form表單,放置在html頁面中的
位置不限一一>
(form name= ”insertForm‘f method=“post”action
一 yourJSP 、
<!一一下面這一句是獲取JSP程序中傳遞過來的變
量值一一>
(input type= ”hidden”name一”me”value一”< 一
varM C >”>
<input type一”button”value=”提交”onclick一”in—
sertclick()”>
</form)
4.4 JavaScript數據使用方法
直接在JavaScript腳本中用就可以把jsp程序中
的數據傳遞給JavaScript腳本使用。可參考下面的腳
本:
(!一一html頁面form表單,放置在html頁面中的
位置不限一一>
(form name::“insertForm“ method= “post” action
一”yourJSP”、
(input吣pe一”hidden“name一“mc”value- &#8943;t
</form>
(script language一“JavaSeript”、
<! 一一
/* * * * * * * * * * * * * * * * * * * * * *
* * -X- * * -)6 * * * -)6 * "X- * * * * * * * * * *
* * * * * * * * * * -X- * * * * * -X" -X- *
* JavaScript腳本,放置在頁面中form 以后的
任何位置都可以
*使用JavaScirpt獲取JSP傳遞到頁面中的變
量varMC,
*然后就可以在JavaScript中使用這個變量的
值,通過
*JavaScript腳本賦值給form中的隱藏域。
* * -)6 * * * * -)6 * * -)6 -X- * -X- * * * * -)6 * * *
* * * * * -)6 * * * * * -)6 * * * * * * * * * -)6
* * * * * * * * * * * * * * * * * * */
varl= ”( -varMC >”;//獲取JSP中的變
量值
document.al1.mc.value==:vat1:
f}一一、
(/script
復制代碼
5 Web應用下實現定時任務的簡便方法
在web方式下,如果要實現定期執行某些任務的
話,除了用quartz等第三方開源工具外,我們可以使
用Timer和TimeTask來完成指定的定時任務。
第一步:創建一個任務管理類,實現ServletCon—
textListener接口以下是引用片段:

public class TaskM anager implements Servlet—
C0ntextListener f
|
*每天的毫秒數
*/
public static final long PERIOD—DAY = Da—
teUtils.M ILLIS_IN—DAY;
/**
*一周內的毫秒數
*/
public static final long PER10D—W EEK = PE—
RIOD—DAY * 7;
|
* 無延遲
}
public static final long NO—DELAY — O:
|
*定時器
|
private Timer timer;
/**
*在Web應用啟動時初始化任務
l
public void c0ntextInitialized (ServletCon—
textEvent event)(
//定義定時器
timer= new Timer(”數據庫表備份”,true);
//啟動備份任務,每月(4個星期)執行一次
timer.schedule (new BackUpTableTask ( ),
NO—DELAY,PERIOD—WEEK * 4);
//timer.schedule(new BaekUpTableTask(),
NO—DELAY ,30000);
}
| *
*在Web應用結束時停止任務
|
public void contextDestroyed (ServletCon—
textEvent event){
timer.cancel();//定時器銷毀
)
復制代碼
6 結束語
Servlet可以使用除圖形用戶界面外的所有Java
語言特性,因此我們可以用它來創建復雜的Web應
用程序。Servlet有不同于應用程序和小程序的地方;
且可以將Servlet作為Apache Web服務器和其他服
務器的一部份來運行;用Servlet還可接收Web表單
中的數據;Servlet還可動態生成網頁內容。使用
Servlet技術可以訪問各種不同類型的數據庫,它是
一種開發Web應用的理想構架。~pServlet可以簡化
困難的web開發工作,并使得簡單的工作更加簡單
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 岳阳县| 汤原县| 永靖县| 如皋市| 钟山县| 塔河县| 汝州市| 玉山县| 庆元县| 巴里| 昌江| 勃利县| 西青区| 乐安县| 洪江市| 资兴市| 凤庆县| 广西| 宜川县| 屏东市| 阿勒泰市| 铜山县| 尉犁县| 从化市| 扶余县| 南安市| 长阳| 财经| 常山县| 西平县| 荣昌县| 内江市| 南郑县| 崇阳县| 会宁县| 健康| 新兴县| 通化县| 淮阳县| 永仁县| 长顺县|