广告
返回顶部
首页 > 资讯 > 精选 >Servlet中/和/*的区别是什么
  • 416
分享到

Servlet中/和/*的区别是什么

2023-06-20 14:06:13 416人浏览 八月长安
摘要

这篇文章主要讲解了“Servlet中/和demo:这个urlPatterns是合法的。只不过它属于精确匹配,也就是说别看它中间有*,仍旧有且仅能匹配/api/*/demo这个请求路径匹配顺序有时候一个URL会被多个urlPatterns所匹

这篇文章主要讲解了“Servlet中/和demo:这个urlPatterns是合法的。只不过它属于精确匹配,也就是说别看它中间有*,仍旧有且仅能匹配/api/*/demo这个请求路径

匹配顺序

有时候一个URL会被多个urlPatterns所匹配,这时谁优先呢?

Servlet同样遵循“国际惯例”:越精确越优先,越模糊越靠后。站在pattern模式的角度换句话讲就是:范围越小越优先,范围越大越靠后。

因此Servlet四种匹配方式顺序按范围从小到大(优先级从高到底)排序为:精确匹配 > 路径匹配 > 后缀名匹配 > 缺省匹配

/和/*的区别

终于,来到了今天的主菜。

从上至下的阅读到这里,再看这个问题,是不是觉得答案已经浮出水面?那么,最后我还是来总结一下它俩的异同点:

相同点

绝大部分场景下具有相同的表现:匹配所有

不同点

就是由于它们的相同点(如此相似),所以才让我们难以区分。

关于/

  • servlet中特殊的匹配模式(用在Filter中无效),

  • 因为是缺省匹配代表匹配所有路径,所以只可能存在一个实例(若存在多个就覆盖)

  • 优先级最低(兜底),这是和/*的最大区别。它不会覆盖任何其它的url-pattern,只会覆盖Servlet容器(如Tomcat)内建的DefaultServlet

关于/*

  • 属于4中匹配模式中的路径匹配,可用于Servlet和Filter

  • 优先级很高(仅次于精确匹配)。所以它会覆盖所有的后缀名匹配,从而很容易引起404问题,所以这种模式的“伤害性”是非常强的,一般有且仅用在Filter上

 DispatcherServlet不拦截.jsp请求根因分析

/只能用于Servlet上,/*一般只用于Filter上。

大家熟悉的spring mvc的DispatcherServlet的匹配路径默认就是/,它会拦截各种各样的请求,诸如下面这种请求都会拦截:

  • /api/demo1

  • /html/demo1.html

  • /static/main.js

但是,它不会拦截/api/demo1.jsp这种以.jsp结尾的请求。据此现象就出现了:/不拦.jsp请求而/*拦截(/*的范围比/大)这种“错误”言论。

下面告诉你此现象的根因:Servlet容器(如Tomcat)内置有专门匹配.jsp这种请求的Servlet处理器,如下图所示:

Servlet中/和/*的区别是什么

后缀名匹配优先级高于缺省匹配,所以.jsp结尾的请求不会被DispatcherServlet所“截胡”而是交给了JspServlet处理。

有了这波分析后,就问你,是不是就不用死记答案了?是不是就终身难忘啦?

✍总结

Servlet的urlPatterns匹配方式是学习JAVA WEB的重要一环,也是深入理解Spring MVC原理的大门,毕竟Spring MVC依旧是做业务开发的首选,而且还会持续很久、很久。

本文对Servlet的匹配方式做了全覆盖讲解,包括:

四种匹配方式匹配顺序(优先级)Servlet和Filter匹配的区别模式匹配中//*区别的根本原因

通过本文希望能让你不再被Servlet的模式匹配所困扰,更不要被一些似可非可的结论所迷惑,摇摆不定时大不了编码验证一下嘛。

感谢各位的阅读,以上就是“Servlet中/和/*的区别是什么”的内容了,经过本文的学习后,相信大家对Servlet中/和/*的区别是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Servlet中/和/*的区别是什么

本文链接: https://www.lsjlt.com/news/297374.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Servlet中/和/*的区别是什么
    这篇文章主要讲解了“Servlet中/和demo:这个urlPatterns是合法的。只不过它属于精确匹配,也就是说别看它中间有*,仍旧有且仅能匹配/api/*/demo这个请求路径匹配顺序有时候一个URL会被多个urlPatterns所匹...
    99+
    2023-06-20
  • servlet中forward和redirect的区别是什么
    在Servlet中,forward和redirect是两种不同的页面跳转方式。1. Forward(转发):- forward是服务...
    99+
    2023-08-08
    servle forward redirect
  • 在java中jsp和servlet有什么区别
    在java中jsp和servlet的区别:jsp经过编译后就会变成servlet。servlet中没有内置对象,而jsp中有内置对象。jsp侧重于视图,servlet更侧重于控制逻辑。servlet是一个java类,而jsp是一种基于文本的...
    99+
    2022-10-20
  • Servlet中/和/*的区别详解
    目录本文提纲版本约定✍正文点拨“市面上”的错误答案1、/用于Servlet,demo:这个urlPatterns是合法的。只不过它属于精确匹配,也就是说别看它中间有*,仍...
    99+
    2022-11-12
  • servlet/filter/listener/interceptor区别与联系是什么
    本篇内容介绍了“servlet/filter/listener/interceptor区别与联系是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这...
    99+
    2022-10-19
  • MYSQL中#和$的区别是什么
    小编给大家分享一下MYSQL中#和$的区别是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!他们之间的区别用最直接的话来说就是...
    99+
    2022-10-18
  • MySQL中“:=”和“=”的区别是什么
    小编给大家分享一下MySQL中“:=”和“=”的区别是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!=只有在set和upda...
    99+
    2022-10-18
  • Mybatis中#和$的区别是什么
    这篇文章主要介绍“Mybatis中#和$的区别是什么”,在日常操作中,相信很多人在Mybatis中#和$的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mybatis中#和$的区别是什么”的疑惑有所...
    99+
    2023-06-22
  • oracle中{}和${}区别是什么
    这篇文章主要介绍“oracle中{}和${}区别是什么”,在日常操作中,相信很多人在oracle中{}和${}区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”orac...
    99+
    2022-10-18
  • JAVA中JSP与Servlet的区别有哪些
    这篇文章主要介绍了JAVA中JSP与Servlet的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。JSP和SERVLET到底在应用上有什么区别,很多人搞不清楚。我来...
    99+
    2023-06-03
  • ./ 和 sh 的区别是什么
    ./ 和 sh 的区别是什么?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。./ 和 sh的使用区别使用“./”执行脚本,对应的xxx.sh脚本必须要有执行权限;使用“sh”...
    99+
    2023-06-09
  • php === 和==的区别是什么
    本文操作环境:windows7系统、PHP7.1版、DELL G3电脑php === 和==的区别是什么?php中的==和===的用法及区别在开发中进场遇到数值匹配的问题,那么在进行匹配时,遇到下面的情况,你觉得结果是什么?<php ...
    99+
    2021-03-17
    php
  • react中props和state的区别是什么
    在React中,props和state是两个不同的概念,用于处理组件的数据。它们之间的区别如下:1. Props(属性):- Pro...
    99+
    2023-09-13
    react
  • Linux中UMA和NUMA的区别是什么
    UMA(Uniform Memory Access)和NUMA(Non-Uniform Memory Access)是描述计算机系统...
    99+
    2023-10-22
    Linux UMA NUMA
  • Python中numpy和numy的区别是什么?
    在Python中,NumPy是一个用于科学计算的库,被广泛地应用于数据科学和机器学习领域。NumPy提供了一个高效的多维数组对象,以及用于对这些数组执行数学、逻辑和线性代数运算的函数。但是,有时候会听到人们谈论“numy”而不是“nump...
    99+
    2023-11-01
    numpy django numy
  • android中handler.post和handler.sendMessage的区别是什么
    本篇文章给大家分享的是有关android中handler.post和handler.sendMessage的区别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 异步更新U...
    99+
    2023-05-30
    android handler.post
  • VBS中CreateObject和WScript.CreateObject的区别是什么
    本篇内容主要讲解“VBS中CreateObject和WScript.CreateObject的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“VBS中CreateObject和WScri...
    99+
    2023-06-08
  • HTML5中HTMLCollection和NodeList的区别是什么
    这篇文章将为大家详细讲解有关HTML5中HTMLCollection和NodeList的区别是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。获取HTMLCollection 对象getElements...
    99+
    2023-06-09
  • C# 中StringBuilder和String的区别是什么
    今天就跟大家聊聊有关C# 中StringBuilder和String的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C# StringBuilder和String区别Str...
    99+
    2023-06-17
  • C# 中override和overload的区别是什么
    今天就跟大家聊聊有关C# 中override和overload的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C# override和overload特点重载(Overlo...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作