iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 28
0

前言

今天來整理有關web部署的部分
範圍為ch11

佈署

這部分主要的內容如下列三點:

  • 1.如何安排web應用程式的位置
  • 2.Container會在哪裡尋找程式
  • 3.cilent如何request web的內容

前面幾天有提到的相關檔案即放置的位置
在這裡再整理一下:

  • wab.xml(DD)
    放在WEB-INF下
  • TAG FILE
    • 不是builde在JAR裡
      Web-INF/tags下(或Web-INF/tags/XXXXX)
    • 若在JAR
      META-INF/tags(或META-INF/tags/XXX),JAR裡面也要有TLD
  • html & JSP
    放在WEB-INF下(或是war檔中的META-INF)
  • tld
    放在WEB-INF或其子目錄,若佈署在jar檔中則須放置於META-INF或其子目錄
  • Servlet class
    Web-INF/classes/相對套件目錄
    或是Web-INF/lib下的JAR檔適當套件目錄
  • 標籤處理器的class
    同Servlet class
    web所有的class放置的目錄規則都相同
  • JAR檔
    Web-INF/lib下

WAR

WAR檔是web應用程式的snapshot,其實就是一個可攜性的JAR檔
所以相關的設定,檔案結構都相同
tomcat裡,WAR名稱就是web的名稱

另外在WAR檔中會有一個名為META-INF/MANIFEST.MF檔
可以在這個檔案可以宣告程式庫的相依性
在佈署期間檢查container是否能找到相關的pacakage

記得一開始工作的時候有負責用shell scrip去處理build war部署的動作
這個部分未來有時間再一併記錄進來
在這裡記錄一下從eclipse build war的方法(其實真的很簡單)
export

  • 1.在project點選右鍵點export
    http://ithelp.ithome.com.tw/upload/images/20161229/20103425jRPIIhHRIa.jpg
  • 2.WAR名稱預設就是專案的名稱,可自行修改,這裡檔名再加上WAR三個字
    再來就是要匯出的路徑,還有要不要含source code的選項,此圖為打包一個有含source code 的WAR檔
    接著照著點下一步即可
    http://ithelp.ithome.com.tw/upload/images/20161229/20103425Rkz1s4eKim.jpg

inport

  • 1.直接在左邊的project explorer點右鍵點選import>WAR file
  • 2.可以選擇執行的tomcat版本,點選下一步
    http://ithelp.ithome.com.tw/upload/images/20161229/20103425JvcfcFaQjT.jpg

http://ithelp.ithome.com.tw/upload/images/20161229/20103425tm1BvbAqfJ.jpg

再談DD

  • servlet的對映
    這邊主要是在整理一下DD裡面的url-pattern可以有以下三種表示方式
    (其中url-pattern是可以為虛構的,只要JSP和DD對應得到就好)

    • 1.完全相符
    <url-pattern>/MyServlet/hello.do</url-pattern>
    
    • 2.目錄相符
    <url-pattern>/MyServlet/*</url-pattern>
    
    • 3.副檔名
    <url-pattern>*do</url-pattern>
    

    找尋對應的規則如下:
    1.照著完全相符>目錄相符>副檔名的去尋找
    2.若符合一個以上的url-pattern,Container會按照較長的優先對應
    3.會按照先後順序去對應

  • 組態歡迎檔
    DD檔裡面也可以設welcome-file
    意思是當client輸入了不完整的結構,Container會依照設定的順序去找目錄下的檔案
    (不管有沒有設servlet對映或是filter)

     <welcome-file-list>
      <welcome-file>index.html</welcome-file>
      <welcome-file>index.htm</welcome-file>
      <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    
  • 設定error page
    在DD裡面也可設定錯誤頁面
    使用error-page的error-code或exception-type

    • 1.宣告只要web任意資源的錯誤頁面

      <error-page>
       <exception-type>java.lang.Throwable</exception-type>
       <location>/error.jsp</location>
      </error-page>
      
    • 2.針對特定的exception(如果同時宣告1的方式,此case仍會導到1的設定,即error.jsp)

      <error-page>
       <exception-type>java.lang.nullpointerexception</exception-type>
       <location>/nullpointererror.jsp</location>
      </error-page>
      
    • 3.使用HTTP代碼

      <error-page>
       <exception-code>404</exception-code>
       <location>/HTMLerror.jsp</location>
      </error-page>
      

      exception-code和exception-type
      在同一個error-page只能設定一種
      這兩個不會同時出現在一個error-page裡面

    • 4.load-on-startup
      正常servlet default是第一次request時被初始化
      若要設定servlet在build的時候或是重啟server的時候就進行初始化
      可以使用load-on-startup去設定(接受非負的值即可)

      <servlet>
      <servlet-name>LoginServlet</servlet-name>
      <servlet-class>com.servlet.LoginServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
      </servlet>
      

      當有多個servlet需要載入
      並且要控制初始化的順序
      按照大小,小的先執行,若大小相同則按照順序


    小結

    ch11相較前面來講較輕鬆
    主要是複習前面有提到的部分在總結一次
    其實這張還有提到JSP Document和其他的DD標籤
    分別為
    ejb-loacl-ref(EJB相關)
    evn-entry(JNDI)
    mime-mapping(MIME TYPE)
    但這些部分主要是for認證考試用
    在這裡就先省略


上一篇
[Day 27] 自訂標籤 - classic Tag
下一篇
[Day 29] WEB application的安全性
系列文
30 days JSP & Servlet學習紀錄 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言