首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在HandlerInterceptorAdapter中从我的控制器获取路径模板

在HandlerInterceptorAdapter中,可以通过HttpServletRequest对象获取当前请求的路径模板。

路径模板是指在Spring MVC中定义的带有占位符的URL路径,例如:/users/{id}。占位符可以是任意字符,用于表示动态的URL参数。

要从控制器中获取路径模板,可以按照以下步骤进行操作:

  1. 在自定义的拦截器类中继承HandlerInterceptorAdapter,并重写preHandle方法。
  2. 在preHandle方法中,通过HttpServletRequest对象获取请求的URI(Uniform Resource Identifier)。
  3. 使用Spring MVC提供的工具类AntPathMatcher,调用其match方法,将URI与控制器的映射路径进行匹配。
  4. 如果匹配成功,可以通过AntPathMatcher的extractPathWithinPattern方法,从映射路径中提取出路径模板。

以下是一个示例代码:

代码语言:txt
复制
import org.springframework.util.AntPathMatcher;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyInterceptor extends HandlerInterceptorAdapter {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String uri = request.getRequestURI();
        String mappingPath = request.getServletPath();
        
        AntPathMatcher pathMatcher = new AntPathMatcher();
        if (pathMatcher.match(mappingPath, uri)) {
            String pathTemplate = pathMatcher.extractPathWithinPattern(mappingPath, uri);
            System.out.println("路径模板:" + pathTemplate);
        }
        
        return true;
    }
}

在上述示例中,我们通过HttpServletRequest对象获取了请求的URI和映射路径,然后使用AntPathMatcher进行匹配和提取路径模板。最后,我们打印出了路径模板。

注意:以上示例仅演示了如何从控制器中获取路径模板,实际应用中可能需要根据具体需求进行适当的处理和扩展。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云原生容器服务(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云数据库(TencentDB):https://cloud.tencent.com/product/cdb
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iot
  • 腾讯云移动开发(移动推送、移动分析等):https://cloud.tencent.com/product/mobile
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云游戏多媒体引擎(GME):https://cloud.tencent.com/product/gme
  • 腾讯云音视频处理(VOD):https://cloud.tencent.com/product/vod
  • 腾讯云网络安全(SSL证书、DDoS防护等):https://cloud.tencent.com/product/cns
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • JavaEE开发之SpringMVC自定义拦截器及异常处理

    框架源代码HandlerInterceptorAdapter抽象类实现。...从下方源代码我们不难看出HandlerInterceptorAdapter抽象类实现了AsyncHandlerInterceptor接口,HandlerInterceptorAdapter每个方法并没有具体实现什么东西...该对象会将返回信息与JSTL模板参数进行绑定,然后JPS页面上进行显示,当然这与PHPSmarty模板引擎工作方式是极为相似的。...首先我们创建了一个ModelAndView对象,ModelAndView构造器传入参数就是JSTL模板所在JSP页面的文件名。...下方是对相应路由访问结果,输出结果我们可以看出,${message_key}值就是相应Controller中所返回值。 ?

    1.4K50

    springboot实战第四章-Spring MVC 基本配置

    Spring MVC 基本配置 在前面还有一小节常见注解就不介绍了,实际项目中会经常用到,很容易理解。本实例相关配置内容都在MyMvcConfig类里编写 1.添加静态资源 ?...* addResourceHandler 值得是对外暴露访问路径 * addResourceLocations 指文件放置目录 */ @Override...在这里讲下拦截器与过滤器区别: 拦截器interceptor是aop一种实现,底层是动态代理模式,基于java反射机制,spring只能拦截controller请求; 过滤器filter是基于函数回调...registry.addInterceptor(demoInterceptor()); } 3.ControllerAdvice 通过@ControllerAdvice,我们可以将对于控制器全局配置放置同一个位置...同样,配置文件里配置,不忽略.后面的参数 /** * SpringMVC,如果路径参数中有".","."

    64520

    【DB笔试面试797】Oracle,可以exp出来dmp文件获取哪些信息?

    ♣ 题目部分 Oracle,可以exp出来dmp文件获取哪些信息? ♣ 答案部分 开发中常常碰到,需要导入dmp文件到现有数据库。...这里dmp文件可能来自于其它系统,所以,一般情况下是不知道导出程序(exp)版本、导出时间或者导出模式等信息。那么如何现有的dmp文件获取到这些信息呢?下面作者将一一讲解。...(一)获取基本信息:导出版本、时间、导出用户 下面的示例exp_ddl_lhr_02.dmp是生成dmp文件: [ZFZHLHRDB1:oracle]:/tmp>strings exp_ddl_lhr...#C#G #C#G +00:00 BYTE UNUSED (二)获取dmp文件表信息 下面的示例,exp_ddl_lhr_02.dmp是生成dmp文件: [ZFZHLHRDB1:oracle...& 说明: 将US7ASCII字符集dmp文件导入到ZHS16GBK字符集数据库可以参考BLOG:http://blog.itpub.net/26736162/viewspace-2138791

    2.5K30

    程序员到架构师,总结升级过程那些坑以及各种体会

    本文回顾了架构师方面的学习途径和学习方式,也总结下在这方面踩过坑,从而让大家别再重犯。...三、陷入各组件细节 经过一些大神帮助后,也知道了一些架构级别的组件,比如消息级别的组件Kafka,以及zookeeper等,这时,当我看到这些组件神奇功效后,就忍不住去看底层实现,当我沉浸于底层实现精妙时...,就不知不觉地陷入到它们细节。...五、后来发现架构师更得考虑可重用和可维护性 经过不断徘徊和摸索,现在发现,架构师能力其实是体现在日常工作一个项目里,并不是架构师搭建好系统架构体系后就什么都不干了,架构师项目开发过程,更能帮助组员搭建出可用性高和可维护性强应用系统...然后再进一步考虑下,面临问题场景能否和设计模式一种或多种匹配上?如果能的话,该怎么用设计模式思路来改进?

    65500

    【SpringMVC】SpringMVC基础-静态资源映射、拦截器配置、@ControllerAdvice与其他基本配置

    可让普通Bean实现HanlderInterceptor接口或者集成HandlerInterceptorAdapter类实现自定义拦截器。...,可利用正则映射到需要拦截路径 ,然后preHandle方法判断request.getRequestURL().toString(),进行匹配,用matches方法。...,写了很多冗余代码,实际开发中会涉及大量这样页面转向,如果都这样写会很麻烦。...所以,我们可以通过配置重写addViewControllers来简化配置: @Override public void addViewControllers(ViewControllerRegistry...路径匹配参数配置 Spring MVC路径参数如果带”.”的话,”.”后面的值都将被忽略,例如: 我们AdviceController.java增加代码: @RequestMapping

    51020

    Spring Web MVC框架(二) 控制器

    Spring定义控制器非常简单,新建一个类然后应用@Controller注解即可,当然一般习惯上将控制器类也命名为XXController。每个控制器可以有若干方法,分别处理不同请求。...Spring也支持这样路径参数。这时候路径模式相应部分需要用花括号括起来,然后方法中使用@PathVariable注解(注解名称需要和花括号参数相同)。...矩阵变量Matrix Variables RFC 3986定义了可以路径添加键值对,这样键值对叫做矩阵变量。Spring默认没有启用矩阵变量。...可以作用到方法,这时候该方法会在该控制器所有处理方法前执行。方法可以接受多个参数和一个模型参数,然后将这些参数处理之后添加到模型。这样每次处理方法执行前都会先执行一次该方法。...,这时候可以获取到Session相应名称属性,需要注意这个属性必须是已存在

    70610

    Spring+SpringMVC+MyBatis 整合(+拦截器) 详:

    数据库模型对象: 就是实体类:一般喜欢src下建一个包:com.wsm.entity包; 存放所有实体类; 3.系统工具: 系统工具就是一般会定义一个包: 存储一些常用类 方法之类似于工具一样。...Dao数据访问接口: Dao 数据持久层, 进行数据操作… 一般src下建一个包:com.wsm.Dao包; 存放所有Dao接口类;每个类型接口描述每一种类型操作~ applicationContext-mybatis.xml...接收Dao返回结果, 返回值控制器——页面输出; 详情可结合之前实例代码: MyBatis和Spring整合详解: SpringMVC体系结构 请结合看虽然是分开并且控制器输出不过…就这样吧...拦截器常用于: 举个例子: A登录网站查看个人信息消费记录啥啥啥 B复制了A登录URL 随便找个电脑,登录之间URL 粘贴AURL; B页面上也看到了A信息… 是的没错, 不信你可以试试...//startsWith(“”); / startsWith(“”,int); Java String类方法, 检查字符串是否存在对应前缀 返回true; +int 表示第几个字符开始与比较参数

    16410

    如何在SpringBoot项目中使用拦截器进行相关操作

    考虑到如果在每个菜单控制器对参数和指定权限进行过滤和控制的话,改动文件太多并且重复代码太多,所以使用拦截器对指定路径请求进行拦截,拦截器记性统一处理,那么只新增加操作就能实现所有指定菜单权限控制...,没有则必须携带指定参数访问 * @Description: 进入控制器前执行此操作 * @param request * @param response *...} } log.info("黑名单权限通过"); return true; } /** * @Description: 执行完控制器之后...,没有则必须携带指定参数访问 * @Description: 进入控制器前执行此操作 * @param request * @param response *...:true INFO 2020-12-15 16:27:20.972 黑名单权限通过 尾言 所有请求都会走拦截器,但是只会拦截配置请求路径,一般拦截器做最普遍就是全部拦截,放开静态文件和登录也之类操作

    82930

    详述 Spring MVC 框架拦截器 Interceptor 使用方法

    大家好,又见面了,是你们朋友全栈君。...Spring MVC Interceptor是链式调用一个应用或者说是一个请求可以同时存在多个Interceptor。...preHandle方法,如果已经是最后一个Interceptor时候,就会是调用当前请求控制器方法。...postHandle方法在当前请求进行处理之后,也就是控制器方法调用之后执行,但是它会在DispatcherServlet进行视图返回渲染之前被调用,所以我们可以在这个方法控制器处理之后ModelAndView...postHandle(WebRequest request, ModelMap model)方法,该方法在请求处理之后,也就是控制器方法调用之后被调用,但是会在视图返回被渲染之前被调用,所以可以在这个方法里面通过改变数据模型

    1.3K30

    SpringMVC拦截器配置和使用

    SpringMVC拦截器配置和使用 思路: web.xml配置SpringMVC前端控制器初始化时优先加载spring-mvc.xml SpringMVCxml配置文件当中使用标签添加拦截器类为...; /** * 在业务处理器处理请求之前被调用 * 如果返回false * 当前拦截器往回执行所有拦截器afterCompletion(),再退出拦截器链 * 如果返回true *...执行下一个拦截器,直到所有的拦截器都执行完毕 * 再执行被拦截Controller * 然后进入拦截器链, * 最后一个拦截器往回执行所有的postHandle()...,用于后续视图显示"); modelAndView.addObject("date","由拦截器生成时间:" + new Date()); } /**...* DispatcherServlet完全处理完请求后被调用,可用于清理资源等 * 当有拦截器抛出异常时,会当前拦截器往回执行所有的拦截器afterCompletion()

    51820

    Java Web 面试关于Spring MVC必问题,不收藏血亏!

    它提供了模型 - 视图 - 控制器架构,可用于开发灵活Web应用程序。本教程,我们将重点关注与之相关问题,因为它通常是Spring开发人员面试热点问题。强烈建议收藏!...这些概念有: Dispatcher Servlet ——核心Servlet前置控制器,配置web.xml文件。...A 我们可以使用@PathVariable注解来请求URI中提取一个特定模版变量值来作为我们请求参数。...例如 /user/123提取值123给/user/{id}控制器获取一个id=123数据映射关系。需要特别指出是通过此注解获取值不会被编码。具体可通过文章来获取原因。...@ResponseBody注解使用于Spring MVC控制器处理程序方法上,它表明我们将把方法返回类型直接写入HTTP响应主体而不会将它放在Model,同样不会将其解释为视图名称。

    1.7K10

    CMS-CMS框架解析

    ->控制器调用服务->服务调用model->控制器获取数据->控制器包含HTML文件(这一步可以实现页面缓存)->正则匹配将HTML文件变量和表达式转换为PHP语法(前端模板,如blade和smarty...后参数通过GET传输,会放置GET全局参数变量GET[‘m’]和$_GET[‘a’]获取参数,并认为m是控制器,如m=index,a=hello则表示IndexController控制器hello...处理方式是将语言标识写在REUQEST_URI,然后再语言目录匹配 如果是中文就取中文zh下面的配置,该配置控制某些按钮或者文档显示,如果是英文获取英文配置,配置如下 ,如果匹配到了,然后将语言标识...13行我们可以看到该CMS有个默认配置文件,该文件cpConfig.php设置了APP,DB和模板TPL默认配置,然后将这些配置塞到静态数组,并定义了GET和SET方法来获取这些参数。...a=1&b=3,最后index.html.html是伪静态标识路径最后,是可以配置,其实本质是indexControllerindex方法,解析路由时候用了增加一个后缀小技巧,就生成了伪静态

    5.1K10
    领券