servlet路径映射中的完全路径匹配、目录匹配、扩展名匹配
在servlet路径映射中,关于url-pattern的配置有三种,分别是完全路径匹配、目录匹配、扩展名匹配
其优先级分别为:完全路径匹配>目录匹配>扩展名匹配;
一、三种路径印射的区别
在服务器段的java代码是:
package servlet0917; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; public class servlet01 extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doget方法被调用");
}
}
1、完全路径代码:
<servlet>
<servlet-name>servlet01</servlet-name>
<servlet-class>servlet0917.servlet01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet01</servlet-name>
<url-pattern>/servlet/servlet01</url-pattern>
</servlet-mapping>
访问结果:

访问路径:http://localhost:8080/servlet/servlet01

这种模式也叫完全模式匹配。
2、目录匹配也叫通配符匹配
(1、)web端代码:
<servlet>
<servlet-name>servlet01</servlet-name>
<servlet-class>servlet0917.servlet01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet01</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
访问路径可以有多个选择:如下图



当servlet中的路径映射为<url-pattern>/servlet/*</url-pattern>,从字面意思也可以理解出servlet后面跟的是一个整目录,目录可以随意访问的。
(2)既url路径中直接是/*
<servlet>
<servlet-name>servlet01</servlet-name>
<servlet-class>servlet0917.servlet01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet01</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
其访问路径没有限制,访问路径可以是任何字符与数字,这里就不向大家一一展示了。
3、后缀名匹配,不能以/开头,要以*开头,比如 *.do
web端代码:
<servlet>
<servlet-name>servlet01</servlet-name>
<servlet-class>servlet0917.servlet01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet01</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
在访问路径时,其*可以换成任何字符与数字:如下图所示



二:印射路之间的优先级
先定义两个servlet文件,如图所示,这里就不像大家展示其代码了


1、web端代码:比较/abc/*与/*的优先级,结论:如果同样目录匹配,限定范围越紧准,越先被匹配
<servlet>
<servlet-name>servlet01</servlet-name>
<servlet-class>servlet0917.servlet01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet01</servlet-name>
<url-pattern>/abc/*</url-pattern>
</servlet-mapping> <servlet>
<servlet-name>servlet02</servlet-name>
<servlet-class>servlet0917.servlet02</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet02</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
2、端口代码:/abc/*与/abc比较,先被访问的是完全路径匹配,其次才是目录匹配(ps:目录匹配大多都带有*)
<servlet>
<servlet-name>servlet01</servlet-name>
<servlet-class>servlet0917.servlet01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet01</servlet-name>
<url-pattern>/abc/*</url-pattern>
</servlet-mapping> <servlet>
<servlet-name>servlet02</servlet-name>
<servlet-class>servlet0917.servlet02</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet02</servlet-name>
<url-pattern>/abc</url-pattern>
</servlet-mapping>
访问结果:

3、用目录路径/abc/*与扩展名*.do访问,结果是目录路径先被访问
<servlet>
<servlet-name>servlet01</servlet-name>
<servlet-class>servlet0917.servlet01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet01</servlet-name>
<url-pattern>/abc/*</url-pattern>
</servlet-mapping> <servlet>
<servlet-name>servlet02</servlet-name>
<servlet-class>servlet0917.servlet02</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet02</servlet-name>
<url-pattern>*.do</url-pattern>d
</servlet-mapping>
访问结果:

4、web端代码:/*与*.do,先被访问的还是目录路径,
<servlet>
<servlet-name>servlet01</servlet-name>
<servlet-class>servlet0917.servlet01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet01</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping> <servlet>
<servlet-name>servlet02</servlet-name>
<servlet-class>servlet0917.servlet02</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet02</servlet-name>
<url-pattern>*.do</url-pattern>d
</servlet-mapping>
访问结果:

servlet路径映射中的完全路径匹配、目录匹配、扩展名匹配的更多相关文章
- C#路径中获取文件全路径、目录、扩展名、文件名称
C#路径中获取文件全路径.目录.扩展名.文件名称常用函数 需要引用System.IO 直接可以调用Path的静态方法 class Program { static void Main(string[] ...
- 【转】C#路径中获取文件全路径、目录、扩展名、文件名称
C#路径中获取文件全路径.目录.扩展名.文件名称 原文链接:https://www.cnblogs.com/JiYF/p/6879139.html 常用函数 需要引用System.IO 直接可以调 ...
- C# 选择文件、选择文件夹、打开文件(或者文件夹) 路径中获取文件全路径、目录、扩展名、文件名称 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名!!
https://www.cnblogs.com/zhlziliaoku/p/5241097.html 1.选择文件用OpenDialog OpenFileDialog dialog = new Ope ...
- Unity使用Resources读取Resources路径下的二进制文件(Binary Data)必须使用 .bytes扩展名
将某二进制文件放在Resources目录下,希望用Resources.Load<TextAsset>的方式读取,发现TextAsset是null 查阅Unity文档得知,使用Resourc ...
- bat文件调用cmd命令批量提取文件夹中的文件名(批量修改文件扩展名)
前言: 在平时的工作中,经常需要批量统计文件和数据,如果逐个统计的话太耗时,而且容易出错那么有没有什么快速的方法呢,这里给大家介绍一种简单高效的方法. 方法: 1.打开CMD命令: 按下 Ctrl+R ...
- C# 获取路径中文件名、目录、扩展名等
string path = "C:\\dir1\\dir2\\foo.txt"; string str = "GetFullPath:" + Path.GetF ...
- C# 获取路径中,文件名、目录、扩展名等
string path = "C:\\dir1\\dir2\\foo.txt"; string str = "GetFullPath:" + Path.GetF ...
- Servlet接口的实现类,路径配置映射,ServletConfig对象,ServletContext对象及web工程中文件的读取
一,Servlet接口实现类:sun公司为Servlet接口定义了两个默认的实现类,分别为:GenericServlet和HttpServlet. HttpServlet:指能够处理HTTP请求的se ...
- Servlet路径映射
Serlvlet路径映射 当一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url. 容器默认请求的是一个Servlet,所以不会直接根据 ...
随机推荐
- Java 实现倒计时(由秒计算天、小时、分钟、秒)
public class Countdown4 { private static long day = 0; private static long hour = 0; private static ...
- Java实现随机生成车牌号
String[] citys = {"津","京","宁"}; String sectionNamePre = "断面" ...
- בוא--来吧--IPA--希伯来语
灰常好听的希伯来语歌曲, Rita唱得真好.
- python字符串转换成数字
Action(){ int i; char *s="{str}"; i=atoi(lr_eval_string(s)); lr_output_message("%d&qu ...
- linux 清空文件
将Linux文件清空的几种方法 1.使用重定向的方法 [root@centos7 ~]# du -h test.txt 4.0K test.txt [root@centos7 ~]# > tes ...
- 一次练习 发现的问题,malloc free 无效;findfirstfile失败,writefile失败的原因
#include <windows.h> #include <stdio.h> #include <shlwapi.h> #pragma comment(lib,& ...
- PCP架构设计
1.引言 现如今已经进入互联网时代,无论是工作还好娱乐都已经离不开互联网,与此同时,网络相关的问题也时不时的侵扰着我们,这需要我们具有一定网络相关知识来解决相关问题,而这时,一款工作便利,免费的网络分 ...
- mysql 数据库关于增加用户权限的问题
一新建用户 ----------- 二首先修改权限必须在电脑cmd 中运行 开设的权限 主要就是 1 所有库的 *.* 2 所有的表 db.* 3所有的字段db.t1 ...
- 2019-04-02-day024-内置方法
昨日回顾 反射 用"字符串"类型的属性名/方法名来找到 属性的值或者方法的内存地址 所有可以反射的内容实际上都是变量 有内存地址 内存地址存的是"具体的值",直 ...
- 2017ICPC南宁赛区网络赛 Minimum Distance in a Star Graph (bfs)
In this problem, we will define a graph called star graph, and the question is to find the minimum d ...