一、 Java Web開發概述:
前言:在公司有接觸維護網站業務,接觸了Struts架構,文章為小弟的學習紀錄,內文為擷取書中內容,利用Java程式來製作網頁,介紹Servlet及JSP技術,後面將會再介紹Struts架構。
參考書籍:
*Java Web整合開發-JSP+Servlet+Struts+Hibernate+Spring(第三版)
*JSP 2.3動態網頁技術(第五版)
l Web相關概念
l Web開發背景知識
l Web開發技術發展歷史
l 相關名詞
n HTTP
n Web瀏覽器
n Web伺服器
n CGI
n Servlet
n JSP
n 伺服器端網頁技術
(一)Web相關概念:
Web程式就是網站,由伺服器、用戶端瀏覽器以及網際網路組成。Web程式的好處是使用簡單,不需要安裝、學習,一台電腦、一根網路線就可使用。
網站的目的是提供資訊服務,重在內容,程式往往比較簡單。但商用Web程式就較複雜,背後結合資料庫等技術,例如ERP系統、財務系統、網上辦公、網上銀行、線上業務辦理等。
※網際網路:
它的由來可追溯到1960年代美國軍方為了核戰時仍能維持可靠的通訊而規劃,其組成也只是連接各大學及軍方間的電腦。網際網路最簡單的說法就是一種連接各種電腦網路的網路,以TCP/IP為的網路標準。
(二)Web開發背景知識:
1.WEB架構:WEB主要由兩個部分所組成,提供資訊的WEB服務伺服端網站,以及向網站提出資訊內容瀏覽要求的客戶端瀏覽器。
2.Web存取基本原理:網站是如何實現請求和回應的,下圖顯示了瀏覽器存取Web伺服器的整個過程。
(1) 使用者開啟瀏覽器,輸入網址URL位址(網址),這URL位址告訴瀏覽器要存取網際網路中的哪台主機。
(2) 瀏覽器尋找到指定主機之後,向Web伺服器發出請求(Request)。
(3) Web伺服器接收請求並做出相應的處理,產生處理解果,大多數產生HTML格式,也有其他回應的格式。
(4) 伺服器把回應的結果傳回發送給瀏覽器。
(5) 瀏覽器接收到對應的回應結果後,在瀏覽器中顯示回應結果,例如Web頁面。
2.HTTP超文字傳輸協定(Hyper Text Transportation Protocol):
它是一種溝通協定,負責瀏覽器與Web伺服器之間互動的橋樑。HTTP是瀏覽器和伺服器之間的應用層通訊協定,它是基於TCP/IP之上的協定,不僅保證正確傳輸超文字文件,還確定傳輸文件中的哪一部分,以及哪一部分內容首先顯示等。
在WWW中,客戶與伺服器是一個相對概念,只存在於一個特定的連接期間,即在某個連接中的客戶在另一個連接中可能作為伺服器。WWW伺服器執行時,一直在TCP80通訊埠(WWW預設的通訊埠)監聽,等待連接的出現。
HTTP協定的客戶/伺服器模式的資訊交換過程,四個過程:建立連接、發送請求資訊、發送回應資訊、關閉連接。
3.Web瀏覽器:用來展示全球資訊網資訊資源的一種應用程式,現行有多種瀏覽器,例如FireFox、Internet Explorer(IE)、Google等等。
※全球資訊網 (World Wide Web, WWW):
又簡稱為Web,是目前Internet上最流行的一種新興工具,它讓Internet原本生硬文字介面,取而代之是聲音、影像、圖片及動畫的多元件交談介面。
4.Web伺服器:位在伺服器端,與通訊相關的處理都是由伺服器軟體負責,開發Web人員只需要把功能程式碼佈署在Web伺服器中,用戶端就可以透過瀏覽器存取到這些功能程式碼,實現客戶提供的服務。
(1) IIS是微軟提供的一種Web伺服器,提供對ASP語言良好的支援。
(2) Apache伺服器是由Apache基金組織提供的一種Web伺服器,特長是處理靜態網頁。
(3) Tomcat也是Apache基金組織提供的一種Web伺服器,提供對JSP和Servlet的支援。Tomcat是一個輕量級的Java Web容器。
(4) JBoss是一個開放原始碼的重量級Java Web伺服器,提供對J2EE各種規範的良好支援,是Sun公司認可的J2EE容器。
(5) BEA的Weblogic和IBM的WebSphere等提供J2EE良好支援。
(三)Web開發技術發展歷史:
1.傳統的Web伺服器模式開發:
(1) 僅能提供有限的靜態Web頁面(HTML靜態頁面),很不利於系統擴充,且Web網站的資訊更新週期較長。
(2) 不能適應大中型系統和商業需求。因此,網際網路軟體工程師轉向了CGI(Common Gateway Interface, 公共閘道介面),系統能夠提供頁面的動態產生。
2.動態展現頁面技術:可以提供客戶即時資訊以及多樣化服務,可根據客戶不同請求動態地傳回不同需求資訊。
3.CGI實現頁面的動態產生:實現動態輸出的CGI程式是執行在伺服器端,根據不同用戶端請求輸出相應的HTML頁面。最流行的CGI語言是Perl和shell指令稿。CGI也有下列缺點:
l 每個請求啟動一個操作CGI程式的系統執行緒,若請求非常頻繁,資源消耗大。
l 需要每個請求載入和執行一個CGI程式。
l 需要重複撰寫處理網路通訊協定的程式碼以及進行解碼。
為了解決上述問題,Java推出了Servlet規範。
4.Java Servlet-改進的CGI:Servlet擁有只需要啟動一個作業系統執行緒及一個JVM映射。另外,可知Java可以在執行的時候動態地進行載入,所以可以利用這樣功能載入新的Java程式碼來處理新的請求。這樣可以只啟動一次伺服器執行緒,而且只需要載入一次JVM,之後JVM再載入另外的類別。
Servlet有下列優點:
l 只需要啟動一個作業系統執行緒及載入一個JVM,降低系統消耗。
l 若多個請求需要做同樣處理,這時只需載入一個類別,降地系統消耗。
l 所有動態載入的類別可以實現對網路通訊協定及請求編碼的程式碼共用,降低工作量。
l Servlet能夠直接和Web伺服器互動,而普通的CGI程式不能。
l Servlet還能在各個程式之間共用資料。
現在的Web伺服器(如Tomcat)已經整合了Servlet容器,Servlet容器負責管理載入、移除、重新載入和執行Servlet程式碼等操作,下列擷取Servlet一段程式碼。
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
//輸出到用戶端瀏覽器
out.println("");
out.println("");
out.println(" A Servlet ");
out.println(" ");
out.print("This is ");
//得到Class位置
out.print(this.getClass());
out.println(", using the GET method");
out.println("
");
out.println("
"); }
紅色標記doGet方法為實現客戶端跟伺服器端的請求利用GET的方式。(跟伺服器請求有兩種方式POST跟GET,往後會介紹差別)
Servlet重複使用PrintWriter.println()方法來輸出相應的HTML頁面。以達到動態產生HTML頁面的效果。也有不足地方:Servlet產生網頁的方法是在Java類別中嵌入HTML標籤和運算式,會造成編輯程式碼混亂,而產生了JSP技術。
5.JSP-Servlet的模版:Java Server Pages(JSP)是一種實現普通靜態HTML和動態HTML混合解碼的技術,它是Servlet API的一個擴充。JSP可以存取Java API。又JSP是嵌入到Servlet中關於應用程式的一般表達程式碼,所以可以把它看成是一種Servlet。
JSP技術設計目的是使得建構基於Web的應用程式更加容易和快速,這些應用程式能夠與各種Web伺服器、應用伺服器、瀏覽器和開發工具共同工作。
JSP網頁可以非常容易地與靜態模版結合,包括HTML或XML(可延伸標記式語言, Extensible Markup Language)部分,以及產生動態內容的程式碼。
6. JSP本質與Servlet:
(1) JSP嚴格來說是一種整合技術,以Java平台為基礎,提供一種簡便的方式,讓Java技術能夠輕易的運用於建構動態網頁內容。
(2) Java為了產生與使用者互動的動態網頁內容,發展出了一種Servlet應用技術,是一種純粹以Java語言編寫,符合標準規格的Java應用程式,於網站伺服器運行的時候被載入,提供客戶端瀏覽器針對伺服器提出內容要求時,作出動態回應。
(3) Servlet應用程式產生動態網頁的功能相當強大,但是卻不易開發,JSP即是為克服這障礙而發展出的一種伺服端網頁技術,其本身是一個內容混雜HTML標籤與Java語言的純文字檔,當瀏覽器要求JSP網頁,文字檔於網站伺服器被編譯成為Servlet載入,然後產生動態網頁內容。
※伺服器端網頁技術:
特性是必須由伺服器中的解譯引擎來做解譯動作,最後再將解譯後的結果以HTML的格式傳送至客戶端。下面介紹幾個技術:
l ASP是微軟開發出來的新一代伺服端網頁語言,動態伺服器網頁,功能上過於陽春。只能使用簡單的內建物件。
l ASP.NET:是微軟整合.NET平台而發展出來的伺服端網頁語言,使用.NET提供的類別庫與物件導向理論建構伺服端的動態網頁,不僅功能強大,緊密的結合.NET平台。
l JSP:是一種以Java為基礎的伺服端網頁語言,使用Java語言,同時由各種網站伺服器所支援。
留言
張貼留言