当前位置: 首页 > news >正文

springmvc的@RequestMapping、@PathVariable、@RequestParam

@RequestMapping("/somepath/{userName}") 
public String register(@PathVariable(value = "userName") String userName) { 
ModelAndView mav = new ModelAndView(); 
return "user/createSuccess"; 



在springmvc注解的@RequestMapping("/somepath/{userName}")如何处理默认值的情况,比如我在发送请求的时候,userName有时候是没有的,所以导到了不能匹配这个action 
http://localhost:8080/spc/movie/somepath/就不能匹配上面的请求: 
http://localhost:8080/spc/movie/somepath/tom而这个才可以匹配。 


@PathVariable 会将url中的参数解析到对应的方法参数上,需要在@RequestMapping()指定匹配模式 
@RequestMapping("somepath/{userName}") 
这时你访问地址"somepath/Tom"就能把"Tom"解析到方法参数userName上 



@RequestParam用于将请求参数区数据映射到功能处理方法的参数上 
public String requestparam2(@RequestParam("username") String username) 
请求中包含username参数(如/requestparam1?username=zhang),则自动传入。 

接下来我们看一下@RequestParam注解主要有哪些参数: 

value:参数名字,即入参的请求参数名字,如username表示请求的参数区中的名字为username的参数的值将传入; 

required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报404错误码; 

defaultValue:默认值,表示如果请求中没有同名参数时的默认值,默认值可以是SpEL表达式,如“#
{systemProperties['java.vm.version']}”。 

public String requestparam4(@RequestParam(value="username",required=false) String username) 
表示请求中可以没有名字为username的参数,如果没有默认为null,此处需要注意如下几点: 


     原子类型:必须有值,否则抛出异常,如果允许空值请使用包装类代替。 
    Boolean包装类型类型:默认Boolean.FALSE,其他引用类型默认为null。 



public String requestparam5(@RequestParam(value="username", required=true, defaultValue="zhang") String username) 
表示如果请求中没有名字为username的参数,默认值为“zhang”。 


如果请求中有多个同名的应该如何接收呢?如给用户授权时,可能授予多个权限,首先看下如下代码: 
public String requestparam7(@RequestParam(value="role") String roleList)如果请求参数类似于url?role=admin&rule=user,则实际roleList参数入参的数据为“admin,user”,即多个数据之间使用“,”分割;我们应该使用如下方式来接收多个请求参数: 
public String requestparam7(@RequestParam(value="role") String[] roleList)  
或 

public String requestparam8(@RequestParam(value="list") List<String> list)  




     本文转自韩立伟 51CTO博客,原文链接:http://blog.51cto.com/hanchaohan/1335834,如需转载请自行联系原作者




相关文章:

  • 多播、组播、广播优缺点分析
  • 向C#的String类添加按字节截取字符串的扩展方法
  • 根据要素选择集,创建新图层
  • windows2003建立隐藏管理员用户
  • Hbase 之 HBase 的整体架构
  • AgileEAS.NET之敏捷并行开发方法
  • Zabbix监控屏幕全屏显示多个监控项
  • 脚本1-38
  • python之通过“反射”实现不同的url指向不同函数进行处理(反射应用一)
  • Bash技巧总结
  • 关于vector性能的测试(一)
  • 重装linux服务器后开不了机
  • Linux TC的ifb原理以及ingress流控
  • linux--mariadb数据库
  • nginx开启后主机无法访问虚拟机的nginx解决方案
  • [PHP内核探索]PHP中的哈希表
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • Angular数据绑定机制
  • ES6之路之模块详解
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JSONP原理
  • Js基础知识(一) - 变量
  • nginx 配置多 域名 + 多 https
  • Redis中的lru算法实现
  • TCP拥塞控制
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • Web标准制定过程
  • 闭包--闭包作用之保存(一)
  • 当SetTimeout遇到了字符串
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 免费小说阅读小程序
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 微信小程序:实现悬浮返回和分享按钮
  • 微信小程序开发问题汇总
  • 小程序01:wepy框架整合iview webapp UI
  • 【干货分享】dos命令大全
  • 阿里云API、SDK和CLI应用实践方案
  • 阿里云重庆大学大数据训练营落地分享
  • ​第20课 在Android Native开发中加入新的C++类
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • $L^p$ 调和函数恒为零
  • (C语言)二分查找 超详细
  • (java)关于Thread的挂起和恢复
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (汇总)os模块以及shutil模块对文件的操作
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (排序详解之 堆排序)
  • (新)网络工程师考点串讲与真题详解
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (转载)Linux 多线程条件变量同步
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案