跳到主要內容

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              差 6 分考上高考資訊處理 107/01            離職當全職考生 小弟並非第一次參與國家考試了,只是這次考試類別從交通行政轉換成資訊處理。本來考上桃捷公司就沒有想轉換跑道了,但在同事勸說下,再加上去年的高考考試,差 6 分考上,所以才毅然堅持地辭掉工作,當個全職考生,算賭一把機會 ( 只給自己兩年時間 ) 。 l    個人成績 - 資訊處理 107 年高考 ( 正取 ) 國文:                     56 ( 申 42 、測 14) 法學與英文:         66 資通網路:             56 程式語言:             7

電腦編碼系統介紹

( 參考資料: 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 編碼,去做自己國家的語言文字對應,因而產生不同的編碼系統。若是用同樣文字轉換成別的編碼辨識,會形成亂碼。 ( 以 2 個 Bytes- 16bits 對應一個文字 進行儲存 ) 2.    

閱讀心得:真希望17歲就學會的金融知識

書名:真希望 17 歲就學會的金融知識         作者:慎 泰俊 (Shin Taejun) 此書是在 2013 年 2 月 11 日記錄的心得內容,因學校教育沒有教導我們理財知識,而去書局找一些基本書來學習,本書由基礎觀點一步一步深入教導,例如了解風險與報酬、分散風險、現在與未來價值、應用篇 … 等,書中內容附有相關計算公式。除了教導理財知識,書中也提到我們可以把時間拿來做甚麼事情,這也是一種投資,投資自己。 想學習理財 / 投資等知識,必須一步一步慢慢來,才能成為理財高手,絕對沒有一步登天賺大錢的神蹟;重點在於自己的判斷與思考。 書中提到當一個 BETA 值低的人,就是做很少做的事情或專研該領域,當發生危機時,你會是一個很重要的人,因為只有你懂,你能處理別人處理不了的危機風險。 ※ BETA 係數說明 ---------------------------- 一、前言 二、朝會 三、 第一堂課 - 風險與報酬 四、 第二堂課 - 分散風險 五、 第三堂課 - 現在價值與未來價值 六、 第四堂課 - 應用篇 - 國文 七、 第五堂課 - 應用篇 - 社會 八、老師指導時間 九、放學後 ---------------------------- 一、前言 古羅馬思想家塞內卡 (Lucius Annaeus Seneca) 說過:「人生非常漫長,若能全部加以有效利用,就能豐富人生,完成最偉大的事。」 不論是任何狀況, 永遠都有無限的可能。只要你希望,就可以實現幾乎所有的事 。 二、朝會 1.       不容許任何失敗、把自己牢牢束縛住的人、只跟與自己類似的人相處的人、只跟其他人作相同事情的人,都是 無法妥善處理不確定事務的人 。 為了順利使用某事物,並加以妥善處理, 第一步就是瞭解其結構 。對於不確定事物的結構,只有重要三件事要注意: n    第一, 愈能接受不確定性,回報也愈大。 n    第二, 有辦法成功降低不確定性。 n    第三, 確定的現在與不確定的將來是兩碼子事 。 2.       先學習如何 思考重點 。 金融理論採用報酬 ( 回報 ) 與風險 ( 結果的不確定性 ) 的思考