Web應(yīng)用配置文件和目錄

web部署描述符

<servlet>
    <!-- Servlet在web部署描述符中名稱,可以自定義但要求唯一 -->
    <servlet-name>HelloServlet</servlet-name>
    <!-- 具體處理請求和響應(yīng)的Servlet,要求完整路徑名 -->
    <servlet-class>isgod.niezhic.servlet.HelloServlet</servlet-class>
    <!-- 該節(jié)點(diǎn)不存在時(默認(rèn)值為 -1 ),
         表示該Servlet在web容器啟動的時候是不加載的,
         聲明該標(biāo)簽并定義大于0的值就是為了使該Serlvet在web容器啟動的時候就加載,
         數(shù)字的大小表示不同Servlet加載的順序,
         當(dāng)數(shù)字大小一致的時候則依照在web.xml中定義的順序加載-->
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <!-- 要求和相對應(yīng)的servlet-name一致 -->
    <servlet-name>HelloServlet</servlet-name>
    <!-- 定義當(dāng)前資源路徑名 -->
    <url-pattern>/hello</url-pattern>
</servlet-mapping>
web部署描述符中定義URL
一個請求的URL實(shí)際上由三個部分組成:contextPath + servletPath + pathInfo,可以使用HttpServletRequest的getRequestURL()來獲取
contextPath可以使用HttpServletRequest的getContextPath()來獲取
servletPath可以使用HttpServletRequest的getServletPath()來獲取,但是當(dāng)URL模式為 /* 和 "" 的時候,getServletPath()取得路徑為空字符串
pathInfo可以使用HttpServletRequest的getPathInfo()來獲取,沒有額外路徑信息時返回null

常見的URL模式:

1. 以 / 開頭以 /* 結(jié)尾的模式,如 /account/* 表示訪問帳戶目錄下中的資源文件: /account/open、/account/close
2. 以 *. 開頭的模式,如 *.view 表示處理所有以view結(jié)尾請求
3. 完全匹配模式,如 /tester/test 表示URL中除了請求參數(shù)部分必須是 /tester/test

示例Servlet代碼,如下:
/**
 * 請求URL路徑解析
 */
public class URLPathServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        // 完整的請求URL路徑,輸出:http://localhost:8080/learnServlet/url/path/233
        out.println(request.getRequestURL() + "<br/>");
        // 當(dāng)前環(huán)境根路徑,輸出:/learnServlet
        out.println(request.getContextPath() + "<br/>");
        // 處理Servlet路徑,輸出:/url/path
        out.println(request.getServletPath() + "<br/>");
        // 額外路徑信息,輸出:/233
        out.println(request.getPathInfo() + "<br/>");
    }
}

WEB-INF目錄

1. 該目錄名稱固定,放置在該目錄中的文件對外界是封閉的,客戶端無法直接獲取這些資源,只有通過處理相應(yīng)Servlet的請求來獲取
2. web.xml:web應(yīng)用的部署表述文件,名稱固定,路徑也一定是在WEB-INF中

web-fragment.xml

在Servlet3.0中,如果一個JAR文件中有使用標(biāo)注的Servlet,Web容器也可以加載該類
在Servlet3.0中,Web應(yīng)用可以使用JAR來進(jìn)行模塊化部署,不僅是Servlet,監(jiān)聽器、過濾器等都可以定義在JAR文件中
在JAR文件中的Serlvet、監(jiān)聽器、過濾器等也擁有自己的部署表述符,那就是web-fragment.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-fragment xmlns="http://java.sun.com/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                                  http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd"
              version="3.0">

</web-fragment>
web-fragment.xml的根標(biāo)簽是<web-fragment></web-fragment>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 一個Web應(yīng)用是一個Web服務(wù)器上眾多資源的集合,它包括了servlets,HTML頁面,類,和其它組成一個完整應(yīng)...
    Lucky_Micky閱讀 1,749評論 0 2
  • 本章聊一聊ServletContext 3.0規(guī)范中定義的注解以及在web應(yīng)用中使用的框架和庫的可插拔性的提升。 ...
    Lucky_Micky閱讀 6,087評論 0 3
  • 一.手動構(gòu)建Web應(yīng)用 手動建立一個Web應(yīng)用,一般按照以下步驟執(zhí)行: 在任意目錄下新建一個文件夾,這里以webD...
    to0simple閱讀 799評論 0 1
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,948評論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,958評論 6 342