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

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