JavaWeb中的 路径匹配总结

爆破专栏丨SpringBoot2.x系列教程之对URL路径规则的特殊匹配实现方案 前言 在前面的章节中,壹哥 带大家对JSON进行了序列化和反序列化的特殊处理,但是我们开发时,不仅仅JSON需要特殊处理,有时候就连我们的URL接口地址中也有需要特殊处理的地方。 比如,在一个URL中,“.” 字符一般是作为分隔符来定义格式的,例如/projects/spring-boot.json中的 “点” ,那么如果在URL带有这个 ”.“,我们要不要做特殊的处理呢? 另外有的人在访问URL时,可能会在尾部带有一个”/“,如果我们想识别URL路径尾部的斜杠,如“/home/”中的第2个 “/”, 阅读详情


一、配置文件中servlet和filter

三种通配符url-pattern写法

1、精确匹配。以”/“开头,加上servlet名称:/ad;

2、路径匹配。以”/”开头,加上通配符“*”:/*;

3、扩展名匹配。以通配符“*”开头,加上扩展名:*.do;

匹配规则

1、先精确匹配,再路径匹配
例如:

servlet-mapping1:<url-pattern>/ad</url-pattern>
servlet-mapping2:<url-pattern>/*</url-pattern>

当一个请求http://localhost:8080/ad来的时候,servlet-mapping1匹配到,不再用servlet-mapping2匹配。

2、路径匹配的时候,先最长路径匹配,再最短路径匹配

servlet-mapping1:<url-pattern>/ad/uplaod.jsp</url-pattern>
servlet-mapping2:<url-pattern>/*</url-pattern>

当一个请求http://localhost:8080/ad/upload.jsp来的时候,servlet-mapping1匹配到,不再用servlet-mapping2匹配

3、扩展名匹配,是单独于精确匹配和匹配的一类
struts2的扩展名就是.action,所以http://localhost:8080/ad.action会被servlet-mapping:<url-pattern>*.action</url-pattern>匹配到。

4、以上都找不到servlet,就用默认的servlet,配置为

<url-pattern>/</url-pattern>

注意:
1、三种匹配方法不能自由组合,如<url*pattern>/user/*.do</url-pattern>是非法的。
2、<url*pattern>/aa/*/bb</url-pattern>是精准匹配,这里的*不是通配符

二、springMVC请求路径中ant风格的路径

?:表示任意的单个字符
*:表示任意的0个或多个字符
**:表示任意的一层或多层目录
注意:在使用**时,只能使用/**/xxx的方式

三、springMVC拦截器中的全匹配

<mvc:mapping path="/**"/>
使用/**,而不是/*


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

JavaWeb-使用Filter过滤器进行权限检查 文章目录1. 什么是Filter过滤器2. Filter初体验3. Filter的生命周期4. FilterConfig类5. FilterChain过滤器链6. Filter的拦截路径6.1 精确匹配6.2 目录匹配6.3 后缀名匹配 1. 什么是Filter过滤器 Filter 过滤器它是 JavaWeb 的三大组件之一。三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器。 Filter 过滤器它是 JavaEE 的规范,也就是接口。 Filter过滤器的作 阅读详情

相关推荐

Java 获取文件后缀名【一文总结所有方法】

1、使用 String.substring() 截取 2、使用 String.split() 分割 3、使用 java 的正则表达 4、使用 commons.io.FilenameUtils 类 5、使用 util.StringUtils 类 6、使用 java.nio.file.Paths 类

不迁怒,不贰过。小知识,大智慧。 1万+

【Java.Web】Servlet/Filter中的 <url-pattern>

在web.xml中和都有配置项,它们的作用都是匹配一次

王晓斌的专栏 1万+

servlet的url-pattern匹配规则详细描述(小结)

在利用servlet或Filter进行url请求的匹配时,很关键的一点就是匹配规则。这篇文章主要介绍了servlet的url-pattern匹配规则详细描述(小结),非常具有实用价值,需要的朋友可以参考下

理论---<url pattern> 匹配规则

开始: 在利用servlet或filter进行url请求的匹配时, 很关键的一点是匹配规则, 但是servlet容器中的匹配规则既不是简单的通配 也不是正则表达式 而是有自己的规则 比较容易混淆 绝对路径和相对路径 当浏览器发起一个url请求后,该请求发送到servlet容器的时候, 容器会先将请求的url减去当前应用上下文的路径作

恒通的博客 1820

STM32F103C8T6+HX711实战:从零打造智能体重秤(附OLED显示与语音播报)

本文详细介绍了基于STM32F103C8T6微控制器和HX711称重模块,从零构建智能体重秤的完整实战教程。内容涵盖硬件选型、系统架构、驱动编写、数据滤波校准算法,并实现了OLED显示与语音播报功能。该项目是嵌入式学习的综合性实践,尤其适合作为毕业设计课题,帮助开发者掌握传感器应用、数据处理及人机交互等核心技能。

weixin_28285943的博客 518

PC微信逆向) 读取内存联系人链表

首先从一些网络上搜索到的信息可以得出联系人列表是保存在内存里的,并且是全局变量不会被释放,所以我们可以通过搜索某个联系人的信息来定位

Qwertyuiop2016的博客 2920

JavaWeb——登录(14/16):登录校验-Interceptor-详解(使用细节、拦截路径的配置、匹配规则、执行流程、拦截器与过滤器的区别)

在 Spring Boot 中注册拦截器时,需要指定。不能匹配/depts/1/2,/depts。学习自:黑马程序员——JavaWeb课程。目标方法执行后,可用于修改响应数据。之后执行,适用于资源清理等操作。负责拦截请求,决定是否放行。代表拦截所有资源,包括。(如登录接口),可以使用。等所有 API 请求。不能匹配/depts/1。不能匹配/emps/1。

li13437542099的博客 724

2022北京高考数学压轴题21题:Python暴力枚举验证k≥7的5种反例

本文探讨了2022北京高考数学压轴题21题的编程解法,通过Python暴力枚举验证k≥7的5种反例。文章详细介绍了m-连续可表数列的定义、问题转化与约束条件,并提供了暴力枚举算法设计和优化技巧,帮助读者理解如何用编程思维解决数学问题。

weixin_33552698的博客 234

java web.xml配置文件中url-pattern路径匹配方式

java web.xml配置文件中url-pattern路径匹配方式 url-pattern元素用于匹配对应的Servlet或Filter。使用事例如下: dispatcherServlet org.springframework.web.servlet.DispatcherServlet contextClass org.springf

fly_zxy的专栏 7403

从UART到RS485:手把手教你用SIT3485E收发器搞定工业级通信(含原理图与PCB布局要点)

本文详细解析了从UART到RS485的工业级通信转换,重点介绍了SIT3485E收发器的原理图设计、PCB布局要点及抗干扰技巧。通过差分信号传输和优化电路设计,实现长距离、多设备稳定通信,适用于工业自动化等复杂环境。

weixin_29169505的博客 350

Vitis Model Composer闪退?手把手教你用命令行启动Vivado 2021后的System Generator

本文详细解析了Vitis Model Composer闪退问题的根本原因,并提供了命令行启动Vivado 2021后System Generator的完整解决方案。从环境变量配置、组件缺失排查到权限问题处理,手把手教你通过命令行深度排错,并分享高级自动化脚本和系统优化技巧,帮助开发者高效使用Vitis Model Composer与System Generator进行HDL开发。

weixin_26905487的博客 349

JavaWeb——(web.xml)中的(url-pattern)

在web.xml中,你通过来定义一个 Servlet 的映射。就是其中的关键子元素,它告诉 Web 容器:“当遇到符合这个模式的请求时,请把它交给那个 Servlet 来处理”。在上面的例子中,任何指向的请求都会被MyServlet处理。

m0_72803313的博客 420

PMP--二模--解题--161-170

A:邀请团队成员在下一次回顾中分享经验。B:请求发起人增加具有所需经验的团队成员。C:在团队内计划知识共享会议。D:请求发起人为团队提供培训课程。A。

stqer的博客 1270

JavaWeb三大组件之过滤器

一、什么是过滤器 Filter 过滤器它是 JavaWeb 的三大组件之一,三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器 Filter 过滤器它是 JavaEE 的规范。也就是接口 Filter 过滤器它的作用是:拦截请求,过滤响应 ...

yunhyoung的博客 274

RK3399平台开发系列讲解(内核入门篇)1.1、通过sysfs清楚了解设备的系统状况

文章目录1、不敢高声语,恐惊天上人:sysfs目的2、窥一斑而知全豹:sysfs目录介绍3、千丝万缕:sysfs中要素的关系4、数据观星:sysfs中相关结构体 1、不敢高声语,恐惊天上人:sysfs目的 我们想通过sys下面的目录和文件清楚的了解跑Liunx系统的嵌入式设备的系统状况。 2、窥一斑而知全豹:sysfs目录介绍 sysfs把连接在系统上的设备和总线组织成为一个分级的文件,它们可以由用户空间存取,向用户空间导出内核的数据结构以及它们的属性。sysfs的一个目的就是展示设备驱动模型中各组件.

内核笔记 1万+

heygem本地部署报错:SQLite3 can only bind numbers, strings, bigints, buffers, and null...如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!    📌 特别说明: 文中部分技术问题来源于真实生产环境及网络公开案例,均经过精挑细选与系统化整理,并结合多位大厂资深架构师和一线开发多年实战经验沉淀,

**My Coding Family** 3246

2014-1-6_Servlet路径和配置那些事儿

关于JavaWeb开发的Servlet中,有这样几个函数很绕人:String RequestURI=req.getRequestURI();String ServletPath =req.getServletPath();String ContextPath=req.getContextPath();String PathInfo=req.getPathInfo();它们有着怎样的对应关系呢?Re...

weixin_34044273的博客 79

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【JavaWeb】过滤器的了解与应用

Filter过滤器是JavaWeb的三大组件之一,三大组件分别是:Servlet程序、LIstener监听器、Filter过滤器; Filter过滤器是JavaEE的规范,也就是接口; Filter过滤器它的作用是:拦截请求,过滤响应; 一、 编写一个过滤器类继承Filter.

weixin_47418550的博客 889

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java servlet url_JavaWeb Servlet中url-pattern的使用

JavaWeb Servlet中url-pattern的使用1.Sevlet和Filter的url-pattern相关说明一个页面请求根据url-pattern只匹配一个最佳的Servlet,而根据web.xml的filter-mapping标签的先后顺序,将满足要求的一个或者多个过滤器生成一个FilterChain2.url-pattern配置配置web.xml文件,用于定义映射的含义:(1)....

weixin_36416921的博客 249

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

JavaWeb过滤器与监听器

监听器 <?xml version="1.0" encoding="UTF-8"?> <module type="JAVA_MODULE" version="4"> <component name="FacetManager"> <facet type="JRebel" name="JRebel"> <configuration> <option name="ideModuleStorage"&gt

m0_68126539的博客 382

错误归纳

今天主要分享的是javaWeb项目的页面跳转中的大意的错误,主要的还是路径的错误,同时,还是代码中路径把主真实的路径放到了jsp中写js代码路径的页面跳转功能时,打的跳转页面代码路径写的有问题。 大家在学完javaWeb后,老师肯定有布置一些作业来做,并且,还可能是一个系统,对于系统这些,肯定就不会只有一个页面,还不可能是一个模块,因为系统是需要维护的,这这里就会涉及到跳转页面这些功能,而,平常时,对于页面的跳转做多了也就见怪不怪了,但是还是有时因为大意而做错的也不是没有,尤其是刚学完javaWeb的同学,

weixin_44550209的博客 212

java servlet 返回xml_对于JavaWeb项目中web.xml文件中Servlet的基本配置有一些小记录写在这里,并做参考,有新的及时更新...

对于JavaWeb项目中web.xml文件中Servlet的基本配置有一些小记录写在这里,并做参考,有新的及时更新thiscom.lovo.myweb_1.servlet.LoginServletthis/login这里需要注意的问题有:1、全限定名的书写:为包名+类名2、路径的书写:有以下几种格式第一种:/b 精确模式匹配第二种:*.bbb扩展名匹配第三种:/smallclass/add ...

weixin_42502366的博客 181

解决项目中的路径的问题!

1)servlet1 的url-pattern是 /test,servlet2的url-pattern是 /* ,访问的url为localhost:8080/test ,容器就会先进行完全路径匹配,发现/test正好被servlet1精确匹配,那么就去调用servlet1,不会去管servlet2。,访问的url是localhost:8080/test/a时,容器会选择路径最长的servlet来匹配,也就是这里的servlet2。,servlet2的url-pattern为/test/a/

qq_46545346的博客 246

JavaWeb中的Servlet

Servlet 是 Java Web 开发的基石,从请求接收、处理到响应返回,再到复杂的路径配置、生命周期管理,每一部分都影响着 Web 应用的运行。执行流程:明白服务器和 Servlet 各自的角色,清楚请求是咋流转的。体系结构:优先选开发,利用doGetdoPost简化 HTTP 请求处理。urlPattern配置:根据业务需求选合适的匹配规则,注意优先级和静态资源访问问题,避免踩坑。(以上图片素材来自黑马程序员)

2401_88195314的博客 1197

JavaWeb学习——过滤器

一、Filter 什么是过滤器 Filter 过滤器它是 JavaWeb 的三大组件之一。 三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器 Filter 过滤器它是 JavaEE 的规范。也就是接口 Filter 过滤器它的作用是:拦截请求,过滤响应 拦截请求常见的应用场景有: 1、权限检查 2、日记操作 3、事务管理 ……等等 二、Filter的初体验 要求:在web 工程下,有一个 admin 目录。这个 admin 目录下的所有资源(html 页面、jp

weixin_45890771的博客 1744
上一篇: 后台获取requestbody的中文数据时被浏览器解析的解决方法
下一篇: DBUtils
稚淮粥
博客等级 码龄6年 11粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值