关于动态参数使用@PathVariable的解析

 更新时间:2022年02月22日 15:52:54   作者:小大宇  
这篇文章主要介绍了关于动态参数使用@PathVariable的解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

动态参数使用@PathVariable解析

现在有如下的一条超链接

<a href="<c:url value=" rel="external nofollow" /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}";
    /**
     * 去文章详情页面
     * 根据URL路径中指定的文章ID号,去获取制定文章的内容
     *
     * @param articleId 指定的文章的ID号
     * @return          获取此文章的数据,并去文章详情页面
     */
    @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 上了。

获取路径中的参数值@PathVariable中的value

本期讲的是@PathVariable注解的具体使用。与@RequestParam的区别

  • @PathVariable获取URI地址中的参数值,需要结合URI模板映射
  • @PathVariable会将数据放到模型中,界面可以通过el表达式获取(即浏览器上面可以显示出来),但是@RequestParam不能通过界面获得

1.@PathVariable String name

加上@PathVariable就能够获取到浏览器中rul的参数值

@RequestMapping("/get_param")
@Controller
public class GetParamController {
	@RequestMapping("/test6/{name}")  
	public String test6(@PathVariable String name) {
		System.out.println("GetParamController test6()...");
		System.out.println("name="+name);
		return "test";//跳转到test.jsp
		/* 
		 * ../test6/tom   结果:name=null 就要在参数里面加上@PathVariable  结果就变为:name=tom
		 * ../test6/tom?name=kk  结果:name=tom  拿到的是URI路径里面的值跟后面的没有任何关系
		 * */
	}
}

2.@PathVariable(“username”) String name

当浏览器中的是username,而后台要接收的是name

就会报错,由于username和name不匹配

此时要加上value值,@PathVariable(“username”)

@RequestMapping("/get_param")
@Controller
public class GetParamController {
	@RequestMapping("/test7/{username}")  //username与下面的name不一致,报错,就需要加上@PathVariable("username")
	public String test7(@PathVariable("username") String name) {//name和username不一致时,用@PathVariable("username")
		System.out.println("GetParamController test7()...");
		System.out.println("name="+name);
		return "test";//跳转到test.jsp
	}
}

此时就不会报错了

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java实现单链表基础操作

    Java实现单链表基础操作

    大家好,本篇文章主要讲的是Java实现单链表基础操作,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • 策略模式:告别if else

    策略模式:告别if else

    你是不是还在写着大量的if else语句,if else 不仅难以维护不易扩展,而且使代码臃肿不堪,想不想让你的业务代码更加的健壮,更易扩展,那你一定要学一学今天的主角策略模式
    2021-06-06
  • Java中的字符型文件流FileReader和FileWriter详细解读

    Java中的字符型文件流FileReader和FileWriter详细解读

    这篇文章主要介绍了Java中的字符型文件流FileReader和FileWriter详细解读,与字节型文件流不同,字节型文件流读取和写入的都是一个又一个的字节,而字符型文件流操作的单位是一个又一个的字符,字符型流认为一个字母是一个字符,而一个汉字也是一个字符,需要的朋友可以参考下
    2023-10-10
  • Mybatis配置之<environments>配置元素详解

    Mybatis配置之<environments>配置元素详解

    这篇文章主要介绍了Mybatis配置之<environments>配置元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • List转换成Map工具类的简单实例

    List转换成Map工具类的简单实例

    下面小编就为大家带来一篇List转换成Map工具类的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • SpringBoot中的拦截器细节解析

    SpringBoot中的拦截器细节解析

    这篇文章主要介绍了SpringBoot中的拦截器细节解析,拦截器的概念、作用、实现方式、执行顺序、生命周期以及高级应用,最后,我们还将探讨拦截器的性能优化策略和常见问题,需要的朋友可以参考下
    2023-09-09
  • Spring Boot的Maven插件Spring Boot Maven plugin详解

    Spring Boot的Maven插件Spring Boot Maven plu

    Spring Boot的Maven插件Spring Boot Maven plugin以Maven的方式提供Spring Boot支持,Spring Boot Maven plugin将Spring Boot应用打包为可执行的jar或war文件,然后以通常的方式运行Spring Boot应用,本文介绍Spring Boot的Maven插件Spring Boot Maven plugin,一起看看吧
    2024-01-01
  • Java的线程与进程以及线程的四种创建方式

    Java的线程与进程以及线程的四种创建方式

    这篇文章主要为大家详细介绍了Java的线程与进程以及线程的四种创建方式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • Java获取Cookie里的指定值的实现方法

    Java获取Cookie里的指定值的实现方法

    在Java中,我们经常需要从HTTP请求中获取Cookie,并从中提取特定的值,下面我们将介绍如何通过Java代码获取Cookie中的指定值,文章通过代码示例介绍的非常详细,需要的朋友可以参考下
    2024-09-09
  • Java定时器Timer的源码分析

    Java定时器Timer的源码分析

    通过源码分析,我们可以更深入的了解其底层原理。本文将通过Timer的源码,带大家深入了解Java Timer的使用,感兴趣的小伙伴可以了解一下
    2022-11-11

最新评论