App下載

服務器怎么通過URL找到所需的servlet的?dd文件詳解!

猿友 2021-06-11 17:58:28 瀏覽數(shù) (3388)
反饋

很多小伙伴們很好奇一件事,我向瀏覽器發(fā)起了一個請求,瀏覽器是怎么根據(jù)我們的請求找到相應的 servlet 的?其實這一切都要歸功于webapp 的部署文件 ?web.xml?,接下來就讓小編來介紹一下 ?web.xml? 是怎么把 servlet 和 url 關聯(lián)起來的吧。

?web.xml?又叫項目部署文件(有些教程會稱呼它為DD文件,即Deployment Descriptor,部署描述的意思)。這個文件由一堆的xml標簽組成,通過這些標簽提供的數(shù)據(jù)來對項目進行配置。其中包括關聯(lián) servlet 和 url 的一對標簽(由兩個標簽共同決定),如下代碼所示:

<servlet>
    <servlet-name>helloServlet</servlet-name>
    <servlet-class>com.example.demo.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>helloServlet</servlet-name>
    <url-pattern>/hello</url-pattern>
</servlet-mapping>

?servlet?標簽下有兩個子標簽,一個定義了一個servlet的名字(在部署文件中使用的,可以當做部署文件給servlet起的小名),一個將這個servlet的名字與一個具體的servlet關聯(lián)起來(還記得嗎,在WEB-INF文件夾下有個classes文件夾存放著編譯過的servlet,而?web.xml? 和? WEB-INF? 文件夾同級)。servlet標簽的作用就是給一個具體的servlet定義一個部署名。

接著就是?servlet-mapping?標簽了,這個標簽下面同樣有兩個標簽,一個標簽指向之前定義的 servlet 部署名,另一個標簽指向一個url。

通過這兩個標簽,?web.xml?將servlet與url進行一一對應,當瀏覽器向服務器發(fā)送請求的時候,服務器會通過解析url,然后在部署文件中尋找對應的servlet,將請求轉發(fā)給該servlet進行處理。

新的關聯(lián)方式

在servlet3.0版本中,可以使用@webservlet給一個servlet進行注解,通過注解可以給這個servlet配置部署名和對應的url。如下所示:

@WebServlet(name = "helloServlet", value = "/hello-servlet")
public class HelloServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
            //這里是get方法
    }
}

使用注解方式可以快速對項目進行配置,但并不利于部署人員進行項目部署。

小結

以上就是url如何找到對應servlet的全部內容,學習servlet,就到servlet微課進行學習!


0 人點贊