JavaWeb-Servlet中Mapping問題

Mapping問題

Servlet接口,這裏我們直接繼承HttpServlet類。

package com.edwin.servlet;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
//此處再子項目中,是沒有這個依賴的,但是在父項目中有這個依賴,可以直接用。
/**
 * @author Edwin D
 * @date 2020.5.31 下午 10:38
 */
public class HelloServlet extends HttpServlet {

//    由於get或者post只是請求實現的不同方式,可以相互調用,業務邏輯都一樣。

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//      ServletOutputStream outputStream = resp.getOutputStream();
//        響應流。
        PrintWriter writer = resp.getWriter();
        writer.println("Hello,World!");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

1.一個Servlet可以指定一個映射路徑

<-- 在web.xml 中-->
<servlet-mapping>
    <servlet-name>Hello</servlet-name>
    <url-pattern>/Hello</url-pattern>
</servlet-mapping>

輸出入上上圖所示:

在這裏插入圖片描述

2.一個Servlet可以指定多個映射路徑

<servlet-mapping>
    <servlet-name>Hello</servlet-name>
    <url-pattern>/Hello</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Hello</servlet-name>
    <url-pattern>/Hello1</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>

效果同上:

在這裏插入圖片描述

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

/Hello/*: 在Hello/後面接上任何的字符,都可以運行處同一個結果:

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

效果同上:

在這裏插入圖片描述

4.默認請求路徑

<!--默認請求路徑-->
<servlet-mapping>
    <servlet-name>Hello</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

在這裏插入圖片描述

5.指定後綴前綴等問題。

<!--可以自定義後綴實現請求映射
    注意點:*前面不能加項目映射的路徑
	hel1o/sajd1kajda.edwin-->
<servlet-mapping>
    <servlet-name>Hello</servlet-name>
    <url-pattern>*.edwin</url-pattern>
</servlet-mapping>

進入:

在這裏插入圖片描述

更改後:

在這裏插入圖片描述

6.優先級問題

指定了固有的映射路徑優先級最高,如果找不到就會走默認的處理請求;

在這裏插入圖片描述

輸入Hello後:

在這裏插入圖片描述

<!--404-->
<servlet>
    <servlet-name>Error</servlet-name>
    <servlet-class>com.edwin.servlet.ErrorServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Error</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

參考文獻

《【狂神說Java】JavaWeb入門到實戰》

視頻連接

2020.06.01

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章