[Day 28 ] web部署

前言

今天来整理有关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.完全相符
    /MyServlet/hello.do
    
    • 2.目录相符
    /MyServlet/*
    
    • 3.副档名
    *do
    

    找寻对应的规则如下:
    1.照着完全相符>目录相符>副档名的去寻找
    2.若符合一个以上的url-pattern,Container会按照较长的优先对应
    3.会按照先后顺序去对应

  • 组态欢迎档
    DD档里面也可以设welcome-file
    意思是当client输入了不完整的结构,Container会依照设定的顺序去找目录下的文件
    (不管有没有设servlet对映或是filter)

     
      index.html
      index.htm
      index.jsp
    
    
  • 设定error page
    在DD里面也可设定错误页面
    使用error-page的error-code或exception-type

    • 1.宣告只要web任意资源的错误页面

      
       java.lang.Throwable
       /error.jsp
      
      
    • 2.针对特定的exception(如果同时宣告1的方式,此case仍会导到1的设定,即error.jsp)

      
       java.lang.nullpointerexception
       /nullpointererror.jsp
      
      
    • 3.使用HTTP代码

      
       404
       /HTMLerror.jsp
      
      

      exception-code和exception-type
      在同一个error-page只能设定一种
      这两个不会同时出现在一个error-page里面

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

      
      LoginServlet
      com.servlet.LoginServlet
      1
      
      

      当有多个servlet需要载入
      并且要控制初始化的顺序
      按照大小,小的先执行,若大小相同则按照顺序


    小结

    ch11相较前面来讲较轻松
    主要是复习前面有提到的部分在总结一次
    其实这张还有提到JSP Document和其他的DD标签
    分别为
    ejb-loacl-ref(EJB相关)
    evn-entry(JNDI)
    mime-mapping(MIME TYPE)
    但这些部分主要是for认证考试用
    在这里就先省略