返回顶部
首页 > 资讯 > 后端开发 > Python >Springmvc @PathVariable的用法解析
  • 508
分享到

Springmvc @PathVariable的用法解析

2024-04-02 19:04:59 508人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录@PathVariable的用法解析问题描述解析过程动态参数使用@PathVariable在Controller层的代码如下@PathVariable的用法解析 问题描述

@PathVariable的用法解析

问题描述


    @RequestMapping(value = "/auth1/{uuid}/xxx", method = RequestMethod.GET)
    public void imageCode1(@PathVariable (value = "uuid") String uuid) {
        logger.info(uuid);
    }

见以上代码,url中的uuid如何解析成为参数传递进来。

解析过程

(接收请求:如/auth1/xxxx-xxx-xxx/xxx)

1. 将/auth1/{uuid}/xxx根据/拆成 auth1、{uuid}、xxx

2. 将{uuid}替换成(.*),并纪录key为uuid

3. 同样将/auth1/xxxx-xxx-xxx/xxx拆成auth1、xxxx-xxx-xxx、xxx

4. 进行正则匹配,并根据group得到uuid=xxxx-xxx-xxx.

5. 将uuid=xxxx-xxx-xxx放入request的一个attribute中。

6. 根据反射和标注得到pathvariable名为uuid

7. 去request得到这个uuid,然后进行方法调用。

下面是测试springmvc的解析代码。


    public static void main(String[] args) {
        AntPathMatcher matcher = new AntPathMatcher();
        System.out.println(matcher.match("{uuid}", "xxxx"));
        Map<String, String> result = matcher.extractUriTemplateVariables("{uuid}", "xxx");
        System.out.println(result);
    }

当上述问题写成:


    @RequestMapping(value = "/auth1/{uuid}/xxx", method = RequestMethod.GET)
    public void imageCode1(@PathVariable String uuid) {
        logger.info(uuid);
    }

时,以下代码模拟测试了反射获取uuid的过程


    public static void main(String[] args) throws Exception {
        BeanInfo beanInfo = Introspector.getBeanInfo(A.class);
        MethodDescriptor[] methodDescriptors = beanInfo.getMethodDescriptors();
        for (MethodDescriptor methodDescriptor : methodDescriptors) {
            System.out.println("method:" + methodDescriptor.getName());
            ParameterDescriptor[] params = methodDescriptor.getParameterDescriptors();
            if (params != null) {
                for (ParameterDescriptor param : params) {
                    System.out.println("param:" + param.getName());
                }
            }
        }
        Method[] methods = A.class.getMethods();
        for (Method method : methods) {
            if (method.getName().equals("hello")) {
                LocalVariableTableParameterNameDiscoverer discoverer =
                        new LocalVariableTableParameterNameDiscoverer();
                String[] methodNames = discoverer.getParameterNames(method);
                for (String methodName : methodNames) {
                    System.out.println(methodName);
                }
            }
        }
    }

动态参数使用@PathVariable

现在有如下的一条超链接


<a href="<c:url value="/actions/article/readarticle/${article.id}"/> "
                                                 target="_blank">${article.title}</a>

这条超链接的特点就是在URL路径中添加了EL表达式解析出来的id值。

因此,在springMVC的Controller层中,需要解析它,使用@PathVariable("articleId") Long articleId 来解析。

@PathVariable是专门用来解析URL请求中的动态参数。

在Controller层的代码如下


public static final String URL_ARTICLE_READ = "article/readArticle/{articleId}";
    
    @RequestMapping(value = {URL_ARTICLE_READ} )
    public ModelAndView readArticle(@PathVariable("articleId") Long articleId){
        LOGGER.info("enter article detail page, articleId = {}",articleId);
        final Article article = articleService.getArticleById(articleId);
 ...
    }

这样,页面上的${article.id}的值,就最终映射到了Java中的Long articleId 上了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: Springmvc @PathVariable的用法解析

本文链接: https://lsjlt.com/news/155435.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Springmvc @PathVariable的用法解析
    目录@PathVariable的用法解析问题描述解析过程动态参数使用@PathVariable在Controller层的代码如下@PathVariable的用法解析 问题描述 ...
    99+
    2024-04-02
  • SpringMVC实现RESTful风格:@PathVariable注解的使用方式
    目录1、RESTful简介2、SpringMVC实现RESTful风格2.1 @PathVariable注解2.2 修改SpringMVC的前端控制器配置3、静态资源访问问题3.1 ...
    99+
    2024-04-02
  • SpringMVC中如何获取@PathVariable的值
    目录如何获取@PathVariable的值一、地址:**/{id}二、方式springmvc使用@PathVariable时,应该注意点什么?一、使用@PathVariable的转变...
    99+
    2024-04-02
  • Spring中的PathVariable注释解析
    目录Spring的PathVariable注释例子多个@PathVariable批注@PathVariable vs @RequestParam结论使用@PathVariable的坑...
    99+
    2024-04-02
  • 关于动态参数使用@PathVariable的解析
    目录动态参数使用@PathVariable解析在Controller层的代码如下获取路径中的参数值@PathVariable中的value1.@PathVariableStringn...
    99+
    2024-04-02
  • SpringMVC @RequestBody的使用解析
    目录SpringMVC @RequestBody的使用@RequestBody使用的一些注意事项SpringMVC @RequestBody的使用 Spring mvc是一个非常轻量...
    99+
    2024-04-02
  • SpringMVC源码分析6:SpringMVC的视图解析原理
    转自 SpringMVC视图机制详解[附带源码分析]...
    99+
    2023-06-02
  • SpringMVC @RequestBody的使用分析
    这篇文章主要介绍“SpringMVC @RequestBody的使用分析”,在日常操作中,相信很多人在SpringMVC @RequestBody的使用分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spr...
    99+
    2023-06-25
  • 关于SpringMVC在Controller层方法的参数解析详解
    目录自定义参数解析器实现效果实现和配置Spring提供解析器一些使用Tricky总结使用版本: spring-boot: 2.1.6.RELEASE sping: 5.1.8.RE...
    99+
    2024-04-02
  • springMvc异步的DeferredResultlong polling应用示例解析
    目录1.了解servlet以及springmvc中的异步2.简述polling和longpolling的区别3.因为DeferredResult,所以longpolling4.简单的...
    99+
    2024-04-02
  • URL @PathVariable 变量的匹配原理分析
    目录URL @PathVariable 变量匹配原理url 中带有变量的匹配原理Demo调试如下总结备注@PathVariable@PathVariable 映射 URL 绑定的占位...
    99+
    2024-04-02
  • SpringMVC之ModelAndView的用法
    Spring MVC中的ModelAndView是一个包含视图名称和模型数据的容器类。它用于将数据和视图一起返回给客户端。Model...
    99+
    2023-09-15
    SpringMVC
  • 如何进行SpringMVC在Controller层方法的参数解析
    本篇文章为大家展示了如何进行SpringMVC在Controller层方法的参数解析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。使用版本:spring-boot: 2.1.6.RELEASEspi...
    99+
    2023-06-22
  • springMVC中的view视图详细解析
    目录1、ThymleafView2、转发视图3、重定向视图4、视图控制器view-controllerSpring MVC中的视图是view接口,视图的作用是渲染数据,将模型mode...
    99+
    2024-04-02
  • SpringMVC解析JSON请求数据问题解析
    这几年都在搞前后端分离、RESTful风格,我们项目中也在这样用。前几天有人遇到了解析JSON格式的请求数据的问题,然后说了一下解析的方式,今天就写篇文章简单的分析一下后台对于JSON格式请求数据是怎么解析的。先把例子的代码贴出来:前端&l...
    99+
    2023-05-31
    spring mvc json
  • SpringMVC的常用注解
    SpringMVC的常用注解 1、@Controller @Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。 2、@RequestMap...
    99+
    2023-08-31
    java spring 开发语言
  • SpringMVC中@RequestMapping注解用法实例
    目录1 修饰类和方法2 value3 method4 params和headers5 Ant路径5 @PathVariable6 HiddenHttpMethodFilter7 @R...
    99+
    2024-04-02
  • Springmvc ModelAndView原理及用法详解
    Spring MVC是一个基于Java的Web框架,它使用了Model-View-Controller(MVC)的架构模式来开发We...
    99+
    2023-08-17
    Springmvc
  • SpringMVC使用实例分析
    这篇文章主要介绍了SpringMVC使用实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringMVC使用实例分析文章都会有所收获,下面我们一起来看看吧。一丶SpringMVC概述Spring 为展现...
    99+
    2023-06-27
  • SpringMVC解析post请求参数详解
    目录SpringMVC一,概述二、原理:1.创建form表单css代码 2.准备Student类3.创建启动类4,创建数据库,表使用JDBC把得到的数据入库5.创建StudentCo...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作