跳到主要內容

Java-Java Web開發概述



入門篇:

一、  Java Web開發概述:

前言:在公司有接觸維護網站業務,接觸了Struts架構,文章為小弟的學習紀錄,內文為擷取書中內容,利用Java程式來製作網頁,介紹ServletJSP技術,後面將會再介紹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瀏覽器:用來展示全球資訊網資訊資源的一種應用程式,現行有多種瀏覽器,例如FireFoxInternet 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伺服器,提供對JSPServlet的支援。Tomcat是一個輕量級的Java Web容器
(4) JBoss是一個開放原始碼的重量級Java Web伺服器,提供對J2EE各種規範的良好支援,是Sun公司認可的J2EE容器。
(5) BEAWeblogicIBMWebSphere等提供J2EE良好支援。



()Web開發技術發展歷史:
1.傳統的Web伺服器模式開發:
(1)  僅能提供有限的靜態Web頁面(HTML靜態頁面),很不利於系統擴充,且Web網站的資訊更新週期較長。
(2) 不能適應大中型系統和商業需求。因此,網際網路軟體工程師轉向了CGI(Common Gateway Interface, 公共閘道介面),系統能夠提供頁面的動態產生。

2.動態展現頁面技術:可以提供客戶即時資訊以及多樣化服務,可根據客戶不同請求動態地傳回不同需求資訊。

3.CGI實現頁面的動態產生:實現動態輸出的CGI程式是執行在伺服器端,根據不同用戶端請求輸出相應的HTML頁面。最流行的CGI語言是Perlshell指令稿。CGI也有下列缺點:
l   每個請求啟動一個操作CGI程式的系統執行緒,若請求非常頻繁,資源消耗大。
l   需要每個請求載入和執行一個CGI程式。
l   需要重複撰寫處理網路通訊協定的程式碼以及進行解碼。
  為了解決上述問題,Java推出了Servlet規範。

4.Java Servlet-改進的CGIServlet擁有只需要啟動一個作業系統執行緒及一個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的方式。(跟伺服器請求有兩種方式POSTGET,往後會介紹差別)
Servlet重複使用PrintWriter.println()方法來輸出相應的HTML頁面。以達到動態產生HTML頁面的效果。也有不足地方:Servlet產生網頁的方法是在Java類別中嵌入HTML標籤和運算式,會造成編輯程式碼混亂,而產生了JSP技術。

5.JSPServlet的模版Java Server Pages(JSP)是一種實現普通靜態HTML和動態HTML混合解碼的技術,它是Servlet API的一個擴充。JSP可以存取Java API。又JSP是嵌入到Servlet中關於應用程式的一般表達程式碼,所以可以把它看成是一種Servlet
  JSP技術設計目的是使得建構基於Web的應用程式更加容易和快速,這些應用程式能夠與各種Web伺服器、應用伺服器、瀏覽器和開發工具共同工作。
  JSP網頁可以非常容易地與靜態模版結合,包括HTMLXML(可延伸標記式語言, 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語言,同時由各種網站伺服器所支援。

留言

這個網誌中的熱門文章

107年高考資訊處理上榜心得(自修)

107 年高考資訊處理上榜心得 ( 自修 ) ------------------------------------------------------------------------- l    背景及報考動機 l    個人成績 l    準備經驗及時程規劃 l    各科準備方式 l    Q&A ------------------------------------------------------------------------- l    背景及報考動機: 小弟很幸運地今年考上高考資訊處理 ( 正取尾巴錄取 ) ,剛好這兩年開缺很多,今年總共錄取 117 人,正取 92 ,增額 25 人。因為自己也在網路上參考很多心得文章,所以想分享自己這次考上的心得。 先說一下自己考公職的歷程,所有的考試,都未曾補習過,小弟比較喜歡自己讀。考完公職才發現從小到大的考試根本無法比。準備資訊處理的考試前前後後時間加起來算是一年左右吧。 101/06              大學畢業 ( 資訊傳播工程學系 ) 102/09              考取特考交通行政 ( 參考: 交通行政上榜心得 ) 104/07              差 0.5 分考上高考交通行政 105/01              考取桃園捷運有限公司 106/03-12        邊工作 ( 桃捷 ) 邊念 106/07  ...

電腦編碼系統介紹

( 參考資料: wiki + 淺 談 電腦 編 碼 )   工作上在練習寫 Struts 架構時,發現編碼蠻重要的,例如設定登入頁面,設定編碼不一致時會出現編碼錯誤 ,加上自己不是很懂整個概念,而整理了這篇電腦編碼系統。 電腦編碼系統介紹: -------------------------------------------------------- ( 一 ) 基礎概念 ( 二 ) 常見的編碼及說明 ( 三 ) 網際網路的發展 ( 四 ) Unicode -------------------------------------------------------- ( 一 ) 基礎概念: 由於人能理解各種特殊複雜的文字及符號,而電腦只懂得兩個數字,即 0 與 1 ,因此我們必須制定一些規則,將特殊複雜的文字及符號,用 0 與 1 的數字組合表示。 如大寫英文字母” A ”,在 ASCII 編碼中,” 1000001 ” (7bits) 表示。” 1000001 ”稱為 字元集、字符集 (Character encoding) 。     所以字元編碼是一種系統,會將支援的字元集中的每一個字元的與代表該字元的某個值配對。 PS : Bit( 位元 ) 為最小單位: 0 或 1 。 Bytes( 位元組 ) 由八個 Bit 所組成。 ( 二 ) 常見的編碼及說明: 1.      ASCII(American Standard Code for Information Interchange) : (1)   美國資訊交換標準碼,字面意思就知此編碼由美國制定,為基於拉丁字母的一套字元邏輯, ASCII 編碼僅用 7bits ,最多僅能表示 2 7 , 128 個字元,所以能展現的字元極其有限,只能表達英文字母 A-Z 、 a-z 、數字 0-9 及少量標點符號,適合用於開發英文環境中。 (2) 每台電腦都有此編碼,用來儲存英文字元素。其他語言國家透過相同的 ANSI 編碼,去做自己國家的語言文字對應,因而產生不同的編碼系統。若是用同樣文字轉換成別的編碼辨識,會形成亂碼。 ( ...

交通行政考試 心得

交通行政考試   心得   準備公務人員的時間差不多十個月 (101/9-102/6/14) ,一開始的目標是『高普考』、『普考』及『身障特考』,以三等考試為主,四等為第二順位,所以在準備上以高普考的科目為主,四等考的較少,所以準備三等基本上可以考四等。很幸運這次身障四等出的每科題目都會寫,不太刁鑽。當初報考是以挑戰低錄取為主,所以沒打算補習,測試自己的能力到什麼程度,每個人可以視自己狀況是否需要補習,依經濟壓力、資訊更新等等,沒有一定的模式。 分數: 102 身障特考四等 國文   47  申 39 測 8 法學   56 運輸學   66 運經   78 運管   88 交行   60 總成績   65.83 ( 排名 1) 錄取標準   50.83   主要科目分數較高,本以為共同科目不會太差,結果感到意外。補充一下交通行政類科,高普考、普考查過近兩年分數差不多落在 65-50 左右。 ( 每類別錄取分數都不相同,無法比較 )   其實大學畢業本來沒有要從事公務人員,發生一些事情,才走上考國家考試,也就去挑戰它了。先看自己要報考哪類考試,地方、鐵路、警察特考、高普考、普考 …… 等等,再選擇要考的類別,然後就先查查要買哪家出版社的書囉,當初我買千華的共同類科,讀到中期才知道自己買錯了@@,聽朋友說可買志光系列的。大概用網路大部份的資料都找得到了,主要科目的書籍,買張恆光老師的書及志光運輸學的書,要準備 3-4 千是必要的。我大學唸的科系是資訊類,而跟交通毫無關係,可以說是新的領域。 **( 選擇考試目標及類別、書籍及網路心得文章 )   除了上網看心得文之外,有書籍是介紹國家考試上榜的書 ( 書名 - 飆進高普考 榜首如何巧勁致勝 ) ,看完鬥志燃燒 100 %。 飆進高普考-閱讀心得 基本上書中上 榜首 要素可歸類為:   * 下定決心要考上,給自己一個要考上的理由 ( 如考前三名或榜首之類 )   * 每天至少看書 8 小時以上   * 考前做考古題   * 個人筆記 ...