在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路径映射中的完全路径匹配、目录匹配、扩展名匹配的更多相关文章

  1. C#路径中获取文件全路径、目录、扩展名、文件名称

    C#路径中获取文件全路径.目录.扩展名.文件名称常用函数 需要引用System.IO 直接可以调用Path的静态方法 class Program { static void Main(string[] ...

  2. 【转】C#路径中获取文件全路径、目录、扩展名、文件名称

    C#路径中获取文件全路径.目录.扩展名.文件名称 原文链接:https://www.cnblogs.com/JiYF/p/6879139.html 常用函数 需要引用System.IO   直接可以调 ...

  3. C# 选择文件、选择文件夹、打开文件(或者文件夹) 路径中获取文件全路径、目录、扩展名、文件名称 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名!!

    https://www.cnblogs.com/zhlziliaoku/p/5241097.html 1.选择文件用OpenDialog OpenFileDialog dialog = new Ope ...

  4. Unity使用Resources读取Resources路径下的二进制文件(Binary Data)必须使用 .bytes扩展名

    将某二进制文件放在Resources目录下,希望用Resources.Load<TextAsset>的方式读取,发现TextAsset是null 查阅Unity文档得知,使用Resourc ...

  5. bat文件调用cmd命令批量提取文件夹中的文件名(批量修改文件扩展名)

    前言: 在平时的工作中,经常需要批量统计文件和数据,如果逐个统计的话太耗时,而且容易出错那么有没有什么快速的方法呢,这里给大家介绍一种简单高效的方法. 方法: 1.打开CMD命令: 按下 Ctrl+R ...

  6. C# 获取路径中文件名、目录、扩展名等

    string path = "C:\\dir1\\dir2\\foo.txt"; string str = "GetFullPath:" + Path.GetF ...

  7. C# 获取路径中,文件名、目录、扩展名等

    string path = "C:\\dir1\\dir2\\foo.txt"; string str = "GetFullPath:" + Path.GetF ...

  8. Servlet接口的实现类,路径配置映射,ServletConfig对象,ServletContext对象及web工程中文件的读取

    一,Servlet接口实现类:sun公司为Servlet接口定义了两个默认的实现类,分别为:GenericServlet和HttpServlet. HttpServlet:指能够处理HTTP请求的se ...

  9. Servlet路径映射

    Serlvlet路径映射 当一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url. 容器默认请求的是一个Servlet,所以不会直接根据 ...

随机推荐

  1. UVa 11039 - Building designing 贪心,水题 难度: 0

    题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...

  2. Linux下使用bind,epoll对网络编程封装

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  3. Office 365 - For security reasons DTD is prohibited in this XML document

    博客地址:http://blog.csdn.net/FoxDave 今天在测试东西的时候发现在本机运行CSOM代码或使用Office 365 PowerShell时,出现了如下错误: Connec ...

  4. oracle 实例名,数据库名概念

    拷贝于https://www.cnblogs.com/ahudyan-forever/p/6016784.html 在实际的开发应用中,关于Oracle数据库,经常听见有人说建立一个数据库,建立一个I ...

  5. 《团队-Python 爬取豆瓣电影top250-成员简介及分工》

    杨继尧,没有什么擅长的,会一点python,一点c#,爬取利用数据库,有些用法不太会,但是会在实现项目中查资料.

  6. ubantu 安装redis

    安装Redis服务器端 ~ sudo apt-get install redis-server 安装完成后,Redis服务器会自动启动,我们检查Redis服务器程序 检查Redis服务器系统进程 ~ ...

  7. python短域名数据分析框架

    本文数据源及分析方法均参考<利用python进行数据分析>一书.但我重新对数据分析目标和步骤进行了组织,可以更加清晰的呈现整个挖掘分析流程. 分析对象为美国某短域名网站记录的短域名生成数据 ...

  8. Js代码一些要素

    ---恢复内容开始--- 条件语句 is(条件){ 语句 }else { 语句 } {}在js中我们把他叫代码块.如果代码块里内容没有执行完,语句就不会向下执行. 代码块是一个独立的整体.如果js中莫 ...

  9. 1--Selenium环境准备--Eclipse 添加Testng插件

    Eclipse安装TestNG TestNG官网地址:http://testng.org/ 1.离线安装TestNG插件: 受网络等因素影响,在线安装方式速度比较慢,可以通过如下方式离线安装TestN ...

  10. 使用 TortoiseSVN 创建 svn branch

    1.使用TortoiseSVN->Repo-browser进入仓库. 2.选择需要创建分支的文件->Copy to 添加分支路径后,点击ok Rename:trunk路径 格式:https ...