1. 程式人生 > 實用技巧 >Servlet 02 ----【javaweb-05】

Servlet 02 ----【javaweb-05】

SERVLET

1、Servlet原理

  客戶端傳送請求至伺服器;伺服器啟動並呼叫 Servlet,Servlet 根據客戶端請求生成響應內容並將其傳給伺服器;伺服器將響應返回客戶端。下面就讓我用一張原理圖來展示一下吧。   

2、Servlet的對映

  我們需要將內容響應給瀏覽器時,我們需要使用到對映。在一般的maven專案中,都會有一個web.xml的檔案,我們將在其中使用mapper對映即可響應給瀏覽器。(在Servlet 01的展示中,我們同樣也是用到了mapper,才讓瀏覽器展示出內容)

  具體程式碼:

<?xml version="1.0" encoding="UTF-8"
?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0" metadata-complete="true"> <!--
註冊servlet--> <servlet> <servlet-name>hello</servlet-name> <servlet-class>com.charles.servlet.HelloServlet</servlet-class> </servlet> <!-- servlet的請求路徑--> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern
>/hello</url-pattern> </servlet-mapping> </web-app>

註冊和請求路徑缺一不可,其中servlet-name 和 url-pattern是自定義的,但是請求路徑和註冊的servlet-name要一一對應。

1. 優先順序問題:倘若指定了固有的對映路徑優先順序最高,如果找不到就會走預設的處理請求;

<!--404-->
<servlet>
    <servlet-name>error</servlet-name>
    <servlet-class>com.kuang.servlet.ErrorServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>error</servlet-name>
    <url-pattern>/*</url-pattern> <!-- 預設的請求路徑 -->
</servlet-mapping>

2. 可以自定義字尾實現請求對映:

<!--注意點,*前面不能加專案對映的路徑-->

<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>*.charles</url-pattern>
</servlet-mapping>

3.一個Servlet可以指定通用對映路徑

    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello/*</url-pattern>
    </servlet-mapping>

4.一個Servlet可以指定多個對映路徑

    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello2</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello3</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello4</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello5</url-pattern>
    </servlet-mapping>