• Servlet原理及Mapping问题的体现


    1.1Servlet原理

    Servlet是由Web服务器调用,web服务器在收到浏览器请求之后,会:

     1.2Mapping问题

    我们点击web.xml,如下所示:

     1.一个Servlet可以指定一个映射路径

    1. hello
    2. /hello

     2.一个Servlet可以指定多个映射路径

    1. hello
    2. /hello
    3. hello
    4. /hello2
    5. hello
    6. /hello3
    7. hello
    8. /hello4
    9. hello
    10. /hello5

    我们运行之后进行查看:

     我们发现,我们选择不同的路径,都是可以进入到这个页面的。

    3.一个Servlet可以指定通用映射路径。

    我们将通配符*运用到路径里面来进行查看效果:

    1. hello
    2. /hello/*

    之后我们重新运行之后,出现无论hello后面的路径是什么,都可以进入该界面:

    只写一个hello也可以进入该界面。

    4.默认请求路径

    1. <--默认请求路径-->
    2. hello
    3. /*

    之后我们选择进行重启,如下所示:

    我们通过网址可以看到,我们再进index.jsp了,我们没有进入首页。所以尽量不要这样子去写。

    5.指定一些后缀或者前缀等等.....

    1. hello
    2. *.rgf

    我们重新启动,进入如下所示:

     6.优先级问题(自定义404)

    我们创建一个ErrorServlet:

     之后我们进行编辑该类:

    1. package com.rgf.servlet;
    2. import javax.servlet.ServletException;
    3. import javax.servlet.http.HttpServlet;
    4. import javax.servlet.http.HttpServletRequest;
    5. import javax.servlet.http.HttpServletResponse;
    6. import java.io.IOException;
    7. import java.io.PrintWriter;
    8. public class ErrorServlet extends HttpServlet {
    9. @Override
    10. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    11. resp.setContentType("text/html");
    12. resp.setCharacterEncoding("utf-8");
    13. PrintWriter writer = resp.getWriter();
    14. writer.print("

      404

      "
      );
    15. }
    16. @Override
    17. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    18. doGet(req, resp);
    19. }
    20. }

    里面的setContentType在开发者工具里面找到:

    之后,我们编辑web,xml里面的文件:(将该文件添加进去)

    1. error
    2. com.rgf.servlet.ErrorServlet
    3. error
    4. /*

    我们运行之后如下所示:

     我们判断看后面加hello最后进入哪个页面:

    我们发现hello也属于/*,但是我们进入hello的界面。

    指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求;

  • 相关阅读:
    基于 ByteHouse 构建实时数仓实践
    关于 SAP UI5 Web Components
    【亲测可用】Java基于EasyExcel将数组数据存入Excel
    如何让异步序列(AsyncSequence)优雅的感知被取消(Cancel)
    【图像分割】基于模糊C均值聚类算法CGFFCM实现彩色图像分割附matlab代码
    Win:确认操作系统激活状态
    C++新经典 | C++ 查漏补缺(类)
    ABAP 一般采购申请创建、服务类型采购申请创建BAPI_REQUISITION_CREATE
    2024超好看的404单页HTML源码
    django中session值的数据类型是dict,需要手动save(),更新才会传递到其他页面。
  • 原文地址:https://blog.csdn.net/weixin_59448049/article/details/126316726