欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 前端技术 > javascript >内容正文

javascript

ant指定servlet版本_Spring工具 - AntPathMatcherUrlPathHelper(针对URL进行处理)

发布时间:2025/3/19 javascript 55 豆豆
生活随笔 收集整理的这篇文章主要介绍了 ant指定servlet版本_Spring工具 - AntPathMatcherUrlPathHelper(针对URL进行处理) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

Spring工具篇(1)- AntPathMatcher&&UrlPathHelper(针对URL进行处理)

JAVA && Spring && SpringBoot2.x — 学习目录

源码版本:SpringBoot2.1.3 内含 Spring-5.1.5

源码位置:org.springframework.web.cors.UrlBasedCorsConfigurationSource#getCorsConfiguration

public class UrlBasedCorsConfigurationSource implements CorsConfigurationSource {

//使用LinkedHashMap,保证url的顺序

private final MapcorsConfigurations = new LinkedHashMap<>();

private PathMatcher pathMatcher = new AntPathMatcher();

private UrlPathHelper urlPathHelper = new UrlPathHelper();

//方法

@Override

@Nullable

public CorsConfiguration getCorsConfiguration(HttpServletRequest request) {

//获取URL的请求路径

String lookupPath = this.urlPathHelper.getLookupPathForRequest(request);

for (Map.Entryentry : this.corsConfigurations.entrySet()) {

//进行Ant表达式匹配

if (this.pathMatcher.match(entry.getKey(), lookupPath)) {

return entry.getValue();

}

}

return null;

}

}

这个类的是CorsFilter的配置类,我们可以为每一个URL单独的提供CORS的配置。当请求时,根据Ant表达式选择最符合的配置。需要解决的问题:

如何获取Path路径;

如何使用Ant表达式进行匹配;

在Spring中提供了UrlPathHelper和AntPathMatcher工具类对URL进行匹配以及处理。

1. UrlPathHelper类

源码位置:org.springframework.web.util.UrlPathHelper

UrlPathHelper API官方文档

该类位于Spring web包下,若是基于Spring web开发的应用,可以使用该帮助类里面的方法。

该类是一个帮助类,用于UrlPath的获取。实际上,我们获取请求中的URL是通过Request对象的getContextPath、getServletPath、getRequestURI方法。

在SpringBoot2.x环境下:

修改web application的上下文路径。

server:

# 端口号

port: 8082

servlet:

# 应用上下文路径

context-path: /a

修改dispatchServlet(servlet-path)的映射路径

@Bean

public ServletRegistrationBean dispatcherRegistration(DispatcherServlet dispatcherServlet) {

return new ServletRegistrationBean(dispatcherServlet,"/api/*");

}

若请求路径:http://localhost:8082/a/api/test/testool

方法

作用

结果

request.getContextPath()

web application路径

/a

getServletPath()

servlet的mapping路径

/api

getRequestURI()

url去除协议域名端口号后的路径

/a/api/testool

在UrlPathHelper中同时也含有获取request路径的方法:

方法名

作用

结果

getContextPath

获取web application路径

/a

getPathWithinApplication

获取web application内的路径

/api/testool

getServletPath

获取servlet-mapping路径

/api

getPathWithinServletMapping

获取Servlet-mapping映射内的路径

/testool

getLookupPathForRequest

根据alwaysUseFullPath属性,获取getPathWithinApplication或者getPathWithinServletMapping路径

1.alwaysUseFullPath=true则/api/testool;2. 否则/testool

getRequestUri

获取请求的uri地址

/a/api/testool

getOriginatingRequestUri

获取转发请求的源地址,若无转发地址,即为本身

/a/api/testool

注:若是servlet-mapping=/,则为默认的Servlet容器,此时的ServletPath为uri - contextPath。

一般而言,是调用getLookupPathForRequest方法,获取用户上送地址。

2. AntPathMatcher类

2.1 match方法(url匹配)

我们在UrlPathHelper可以获取到请求地址,而后我们可以对URLs字符串进行匹配。

SpringMVC的路径匹配规则使用Ant规则,其基本规则如下:

? 匹配一个字符;

* 匹配0个或多个字符;

** 匹配0个多多个目录;

使用方法:

@RequestMapping("antPath")

public void getPath(HttpServletRequest request){

UrlPathHelper urlPathHelper = new UrlPathHelper();

String path = urlPathHelper.getLookupPathForRequest(request);

System.out.println("path路径:"+path);

AntPathMatcher matcher=new AntPathMatcher();

boolean match = matcher.match("/**", path);

System.out.println("是否匹配:"+match);

}

2.2 combine(url的合并)

[科目版嗯]用于含有Ant路径的合并。

1. 规则如下表所示:

模式1

模式2

结果

null

null

null

/hotels

null

/hotels

null

/hotels

/hotels

/hotels

/bookings

/hotels/bookings

/hotels

bookings

/hotels/bookings

/hotels/*

/bookings

/hotels/bookings

/hotels/**

/bookings

/hotels/**/bookings

/hotels

{hotel}

/hotels/{hotel}

/hotels/*

{hotel}

/hotels/{hotel}

/hotels/**

{hotel}

/hotels/**/{hotel}

/*.html

/hotels.html

/hotels.html

/*.html

/hotels

/hotels.html

/*.html

/*.txt

IllegalArgumentException

2. 使用方式:

/* @param pattern1 the first pattern 模式1

* @param pattern2 the second pattern 模式2

* @return the combination of the two patterns 返回结果

* @throws IllegalArgumentException if the two patterns cannot be combined 两个模式无法合并

*/

@Override

public String combine(String pattern1, String pattern2) {

}

总结

以上是生活随笔为你收集整理的ant指定servlet版本_Spring工具 - AntPathMatcherUrlPathHelper(针对URL进行处理)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。