1. 程式人生 > >servlet和jsp學習(一)

servlet和jsp學習(一)

1,網路應用程式的架構(瞭解)

(1)主機/終端

  • 特點:
    主機負責所有的計算(處理業務),終端只負責輸入輸出(不做任何計算)。
  • 優點:
    可靠,安全,i/o能力強。
  • 缺點:
    昂貴,擴充套件困難。

(2)client/server

client/server

1)兩層的client/server

  • 特點:
    使用資料庫來充當伺服器(大量的業務處理邏輯是使用資料庫特定的程式語言來寫的)。客戶端提供介面和少量的業務邏輯處理。
  • 缺點:
    可移植性差(特定的程式語言)。
    不適合大型應用(要求客戶端與
    資料庫伺服器建立一個持續連線)。

2)三層的client/server

  • 特點:
    所有的業務處理都由應用伺服器來做。
  • 優點:
    可移值性好(一般應用伺服器都是由
    java語言來寫的)。
    適合開發大型的應用。
  • 缺點:
    客戶端需要單獨安裝和維護。
    開發複雜。

(3)browser/web server

browser/web server

  • 特點:
    使用瀏覽器來充當客戶端,使用web伺服器來充當應用伺服器,使用標準化的http協議來通訊。
  • 優點:
    開發相對簡對(不需要開發通訊模組,
    不需要自定義協議)。
    不需要單獨安裝客戶端了。

2,什麼是servlet?

sun公司制訂的一種用來擴充套件web伺服器功能的元件規範。
servlet = server(伺服器) + let(小程式)

(1)擴充套件web伺服器功能

web伺服器收到請求之後,可以呼叫servlet來處理。

(2)元件規範

  • a,什麼是元件?
    符合規範,並且實現了部分功能的軟體模組。
    元件一般需要部署到相應的容器裡面才能執行。
  • b,什麼是容器?
    符合規範,提供元件的執行環境的程式。
    tomcat提供了一個servlet容器。
    注:
    有些web伺服器,比如iis,apache httpserver等沒有提供servlet容器,需要另外再嵌入或者呼叫單獨的servlet容器才能執行servlet。
    元件不依賴特定的容器的,比如,
    我們開發了一個servlet,可以部署到weblogic, jetty,was,tomcat等伺服器上執行。

3,如何寫一個servlet?

  • step1,寫一個java類,實現Servlet
    介面或者繼承HttpServlet抽象類。
  • step2,編譯。
  • step3,打包,即建立一個具有如下結構的資料夾

    appname

    WEB-INF

    classes(放.class檔案)
    lib(可選,放.jar檔案)
    web.xml(部署描述檔案)

  • step4,部署
    將step3建立好的整個資料夾拷貝到伺服器特定的資料夾下面,比如,tomcat
    一般可以拷貝到webapps下面。

  • step5,啟動伺服器,訪問
    http://ip:port/appname/url-pattern
    http://localhost:8080/web01/hello
    如果出錯,可能是埠被佔用,可以修改埠:8088 8089

4,安裝tomcat

  • step1,將tomcat的安裝壓縮檔案解壓到/home/soft01下。
    (www.apache.org下載tomcat)
  • step2,配置環境變數。
    JAVA_HOME: jdk安裝路徑
    CATALINA_HOME:tomcat的安裝路徑,
    比如 /home/soft01/apache-tomcat7
    PATH: tomcat的安裝路徑/bin
  • step3,啟動tomcat
cd /home/soft01/apache-tomcat7/bin
sh startup.sh(或者sh catalina.sh run)
             (windows環境下用startup.bat)
  • step4,訪問tomcat
    開啟瀏覽器,輸入
    http://localhost:8080
    關閉tomcat:開啟/tomcat/bin,使用裡面的shutdown命令

5,使用myeclipse來開發servlet

  • step1,啟動myeclipse,配置tomcat。
  • step2,建立一個web工程。

    src/main/webapp/WEB-INF/web.xml(必須結構),否則錯誤,因此需要使用右鍵專案名,

  • step3,匯入jar包

    • 1)使用marven搜尋javaee,在結果中選擇javaee-api
    • 2)使用tomcat自帶包
      • 選擇專案,右鍵點選properties
      • 彈出框裡在左側選擇Targeted Runtimes
      • 右側勾選Apache Tomcat
  • step4,開發Servlet
    • 1)編寫Servlet
      • 建立package
      • 建立一個類名為XxxServlet
      • 繼承HttpServlet,從而間接的實現了Servlet的介面
      • 重寫父類的service()方法
    • 2)配置Servlet
      • 宣告類,給它取別名
      • 通過其別名引用此類,給它取一個訪問路徑
  • step5,部署
    • 在Servers檢視下,選擇tomcat7
    • 右鍵點選Add and Remove
    • 在彈出框內將左邊的待部署專案移動到右側
    • 啟動tomcat即可

6,servlet是如何執行的?

比如,在瀏覽器位址列輸入
http://ip:port/firstweb/hello?uname=tom

  • step1,瀏覽器依據ip,port建立連線。
  • step2,瀏覽器將相關資料(比如,請求資源路徑,請求引數)打包,然後傳送請求。
  • step3,伺服器解析請求資料包,然後將解析之後的資料儲存到request物件上,同時,伺服器還會建立一個response物件。
  • step4,伺服器建立servlet物件,然後呼叫該物件的service方法(伺服器會將之前建立好的request,response作為引數傳遞進來)。
  • step5,在service方法裡面,通過request物件來獲得請求資料(比如,請求引數值),然後進行相應的處理,最後將處理結果寫到response物件上。
  • step6,伺服器從response物件上取之前儲存的處理結果,然後打包,傳送給瀏覽器。
  • step7,瀏覽器解析響應資料包,然後依據解析的結果生成新的頁面。

    整體訪問過程如下所示:
    browser/web server