返回

对于Servlet原理以及Mapping的五种映射和404页面的详解

发布时间:2022-10-09 12:37:56 195
# html# java# java# 容器# 服务器

一.Servlet原理

1,浏览器向web容器发送Http请求,我们这里用的web容器为tomcat。 2.我们在Servlet里的protected void doGet(HttpServletRequest req, HttpServletResponse resp)里写了请求和响应的方法,这里调用Servlet的Serice方法。 3.访问我们自己写的实现类,重写这些方法。

  • 接受并处理请求。
  • 给出响应的信息。 4.响应信息发出后,响应个客户端。 Servlet原理图如下: 在这里插入图片描述

二.Mapping运用

Mapping有好几种用法如下:

  • servlet可以映射一个路径
  • servlet可以映射多个路径
  • servlet可以映射公共路径
  • servlet可以映射默认路径
  • servlet可以映射前缀路径

2.1 servlet映射一个路径

url-pattern为路径,servlet-name为对应上面的hello com.gowork.servlet.helloservlet

 
     hello
     /hello
 

servlet映射一个路径访问效果如下: 在这里插入图片描述

2.2 servlet映射多个路径

这次我们在hello后添加了zhu和zhang,映射的servlet-name还是hello,所以调用的还是之前的那个函数。


    hello
    /hello



    hello
    /zhu



    hello
    /zhang

PS:记得重新启动服务器! servlet映射多个路径测试效果如下: 在这里插入图片描述 可以看到,我们在url指向zhu和zhang,也还是会映射到servlet名称为hello的接口,输出

Hello,Servlet Shangjin small vegetable pig

2.3 servlet映射公共路径

servlet映射公共路径的标志是通配符*


    hello
    /zhu/*

servlet映射公共路径现在是如上代码,那么先说一下,现在我们写了/zhu/*就代表着 /zhu可以正常映射,/zhu/1可以正常映射,只要/zhu正确,后面加什么url都是可以正确的映射到hello接口的。

效果图: 在这里插入图片描述

2.4 servlet可以映射默认路径

映射默认路径顾名思义就是设置一个默认路径,无论我们访问上面url都是映射到对应的接口上,这种方式非常的不推荐,直接写死了。

    
        hello
        /*
    

servlet可以映射默认路径效果图如下: 在这里插入图片描述

2.5 servlet可以映射前缀路径

映射前缀路径顾名思义就是如果我们的后缀没问题的话,前面写任意的url都是正确的。 如下代码:

    
        hello
        *.zhu
    

映射前缀路径效果图如下,一看就可以明白。 在这里插入图片描述 注意:在*号前不能加路径,否则报错。

四.Servlet404页面

1.我们首先创建一个类:

Errorservlet

2.然后继承HttpServlet。

public class Errorservlet extends HttpServlet

3.重写doGet和doPost

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        resp.setCharacterEncoding("utf-8");
        PrintWriter Writer = resp.getWriter();
        Writer.print("404");
    }

4.注册error页面

这里先放一下,之前的hello页面:


    
        hello
        com.gowork.servlet.helloservlet
    

    
        hello
        /hello
    

写一个error,使用映射默认路径,这里存在一个优先级。 比如说我们在url访问:

http://localhost:8080/javweb/hello

是从上到下的顺序,所以先映射到了hello就正常的输出了:

Hello,Servlet Shangjin small vegetable pig

如果不是hello的url就走下面的error映射默认路径,出现404。


    
        error
        com.gowork.servlet.Errorservlet
    

    
        error
        /*
    

效果图如下: 在这里插入图片描述 注意: 指定了固定的url的优先级要大于映射默认路径。

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线