首页 > 其他分享 >对于Servlet原理以及Mapping的五种映射和404页面的详解

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

时间:2022-12-14 17:35:27浏览次数:51  
标签:zhu 映射 url Servlet 路径 Mapping 404 servlet hello

一.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为对应上面的<servlet><servlet-name>hello</servlet-name> <servlet-class>com.gowork.servlet.helloservlet</servlet-class> </servlet>

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

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

2.2 servlet映射多个路径

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

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

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

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

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

Hello,Servlet Shangjin small vegetable pig

2.3 servlet映射公共路径

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

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

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

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

2.4 servlet可以映射默认路径

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

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

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

2.5 servlet可以映射前缀路径

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

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

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

四.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 -->
    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>com.gowork.servlet.helloservlet</servlet-class>
    </servlet>

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

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

http://localhost:8080/javweb/hello

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

Hello,Servlet Shangjin small vegetable pig

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

<!--  error-->
    <servlet>
        <servlet-name>error</servlet-name>
        <servlet-class>com.gowork.servlet.Errorservlet</servlet-class>
    </servlet>

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

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

标签:zhu,映射,url,Servlet,路径,Mapping,404,servlet,hello
From: https://blog.51cto.com/u_15568258/5935319

相关文章

  • Servlet原理
    Servlet的本质是一个Java接口,定义了一套处理网络请求的规范。最主要的是两个生命周期方法init()和destory(),以及一个处理请求的service()。因为处理一个网络请求,绕不开:初......
  • RequestMappingHandlerMapping请求地址映射的初始化流程!
    之前的文章里,介绍了DispatcherSerlvet处理请求的流程。其中一个核心的步骤是:请求地址映射,即根据request获取对应的HandlerExcecutionChain。为了后续的请求地址映射,在项......
  • nginx反向代理部署springboot项目报404无法加载静态资源
    问题:nginx反向代理部署springboot项目报404无法加载静态资源(css,js,jpg,png...)为什么要用反向代理:springboot默认启动端口为8080,如果需要通过域名(不加端口号)直接访问sprin......
  • Cannot invoke “org.springframework.web.servlet.mvc.condition.PatternsRequestCon
    异常信息:Cannotinvoke“org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns()”because“this.condition”isnull出现该异常......
  • Servlet单表CRUD
    Servlet单表CRUD使用Servlet完成对单表的CRUD(B/S结构)实现步骤第一步:准备一张数据库表CREATETABLE`dept`( deptnointprimarykey,dnamevarchar(255......
  • servlet原理
      service方法的两个参数,一个request接受从浏览器传过来的请求通过xml文件里指向的类里边的doget或者dopost方法接受,处理后返回一个respo参数......
  • DispatcherServlet是怎么初始化各核心功能的?
    之前的文章介绍了DispatcherServlet的各种核心功能,以及处理请求的流程。今天要介绍的是,DispatcherServlet是怎么初始化各核心功能的?换句话说,DispatcherServlet作为一个Se......
  • DispatcherServlet是怎么处理请求的?
    上篇文章总结了DispatcherServlet的核心功能,今天趁热打铁,系统梳理DispatcherServlet处理请求的流程。DispatcherServlet处理请求的核心方法是doDispatch()。在处理过程中,......
  • spring mvc DispatcherServlet详解之interceptor和filter的区别
    首先我们看一下springmvcInterceptor的功能及实现:​​http://wenku.baidu.com/link?url=Mw3GaUhCRMhUFjU8iIDhObQpDcbmmRy_IPeumazg0ppnbmwqFUtLp9kSpuPPpeysf6EnHBLYFeWr......
  • ElasticSearch 7.x mapping 定义说明
    在自定义索引时,映射是定义文档及其包含的字段如何被存储和索引的过程,起着非常重要作用。例如,使用mapping定义:哪些字符串字段应视为全文字段哪些字段包含数字、日期或地理......