springmvc请求参数的绑定和获取
请求参数的绑定和获取:
获取页面请求的参数,是javaweb必不可少的一个环节,在struts中,是通过再Action中定义属性,或者Model的方式进行数据绑定和获取。需要提供setter或getter方法,略显麻烦。而在SpringMvc中,却可以非常方便的获取请求参数,只需要在对应方法的参数列表中定义出来,即可获取,所见即所得!
1.获取Servlet内置对象(不推荐使用这个方法)
需求:客户端发送一个请求,返回到JSP视图中,显示servlet内置对象和session
@RequestMapping("test7")
public String test7(HttpServletRequest req,HttpServletResponse resp,HttpSession session){
req.setAttribute("msg1", "jack"+req);
req.setAttribute("msg2", "jack"+resp);
session.setAttribute("msg3", "pick"+session); return "servlet";
}
视图(servlet.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${requestScope.msg1 }...${requestScope.msg2 }...${sessionScope.msg3 }
</body>
</html>
2.获取PathVariable参数
需求:使用占位符,获取参数
@RequestMapping("test8/{age}/{name}")
public ModelAndView test8(@PathVariable("age") String age,@PathVariable("name") String name){ ModelAndView mv = new ModelAndView("hello");
mv.addObject("msg", age+"---"+name);
return mv;
}
注意:参数类型必须匹配,否则会出错
3.获取请求参数并封装为pojo对象
需求:提交表单,把表单里面的数据封装为对象
定义Controller,只需要在参数中写上要封装的对象即可:
@RequestMapping(value="testjson")
@ResponseStatus(HttpStatus.OK)
public void acceptJson(User user){
System.out.println(user);
}
4.@RequestParam的更多用法
没有传递参数的情况下,不会报错
@RequestMapping("/show5")
public ModelAndView show5(@RequestParam(value="name",required=false,defaultValue="123")){
ModelAndView mv=new ModelAndView("hello");
mv.addObject("msg","接收普通参数:name "+name);
return mv;
}
5.获取cookie的值
SpringMVC中依然是通过注解加参数注入的方式:
6.接受对象List集合
需求:表单提交多个用户,springmvc怎样接受?
<body>
<form action="/test/show6.do" method="post">
用户1:<input type="text" name="users[0].name"/><br/>
用户2:<input type="text" name="users[1].name"/><br/>
用户3:<input type="text" name="users[2].name"/><br/>
</form>
</body>
对于以上,表单中相当于提交3个用户,也就是用户的集合,SpringMvc中的Controller,不能直接接受一个User的List集合
创建pojo 的userForm类里面提供一个用户对象的集合,提供get set toString 方法,接受参数的方式接受
必须在UserForm中定义一个List<User>的属性:
public class userForm{
private List<user> users;
//提供get set方法
...
}
7.接受JSON格式请求
@ResponseBody 是把返回值的Pojo对象变为JSON字符串,称为序列化
@RequestBody 是把接收到的JSON字符串变为Pojo对象,称为反序列化
需求:客户端传来一个JSON格式数据,转换为pojo对象@RequestBody()
@RequestMapping(value="testjson")
@ResponseStatus(HttpStatus.OK)
public void acceptJson(@RequestBody() User user){
System.out.println("id"+user.getId());
System.out.println("name"+user.getName());
System.out.println("age"+user.getAge()); }
需求:客户端传来一个JSON格式的数组,转换为pojo对象@RequestBody()
@RequestMapping(value="testjsons")
@ResponseStatus(HttpStatus.OK)
public void acceptJsons(@RequestBody() List<User> users){ for (User user1 : users) {
System.out.println("id:"+user1.getId());
System.out.println("name:"+user1.getName());
System.out.println("age:"+user1.getAge());
}
}
8.SpringMvc和Struts的区别
1.SpringMvc的入口是Servlet,Struts2的入口是Filter,两者的实现机制不同;
2.SpringMvc基于方法设计,传递参数是通过方法形参,其实现是单例模式(可以改为多例,推荐用单例),struts2基于类设计,传递参数是通过类的属性,只能是多例,性能上SpringMvc更高一些
3.参数传递方面,Struts2是用类的属性接受的,也就是在多个方法见共享,而SpringMvc基于方法,多个方法间不能共享
springmvc请求参数的绑定和获取的更多相关文章
- 16 SpringMVC 的请求参数的绑定与常用注解
1.SpringMVC 绑定请求参数 (1)支持的数据类型 基本类型参数: 包括基本类型和 String 类型POJO 类型参数: 包括实体类,以及关联的实体类数组和集合类型参数: 包括 List 结 ...
- SpringMVC请求参数的获取方式
一.GET请求参数获取 1. 通过HttpServletRequest获取参数 2. 直接方法参数获取 3. RequestParam注解方式获取请求参数 4. Bean方式获取参数 5. Model ...
- SpringMVC请求参数接收总结
前提 在日常使用SpringMVC进行开发的时候,有可能遇到前端各种类型的请求参数,这里做一次相对全面的总结.SpringMVC中处理控制器参数的接口是HandlerMethodArgumentRes ...
- SpringMVC请求参数接收总结(一)
前提 在日常使用SpringMVC进行开发的时候,有可能遇到前端各种类型的请求参数,这里做一次相对全面的总结.SpringMVC中处理控制器参数的接口是HandlerMethodArgumentRes ...
- SpringMVC请求参数总结
前提 在日常使用SpringMVC进行开发的时候,有可能遇到前端各种类型的请求参数,这里做一次相对全面的总结.SpringMVC中处理控制器参数的接口是HandlerMethodArgumentRes ...
- 2.5万字长文简单总结SpringMVC请求参数接收
这是公众号<Throwable文摘>发布的第22篇原创文章,暂时收录于专辑<架构与实战>.暂定下一篇发布的长文是<图文分析JUC同步器框架>,下一篇发布的短文是&l ...
- springmvc请求参数异常统一处理
1.ExceptionHandlerController package com.oy.controller; import java.text.MessageFormat; import org.s ...
- springmvc请求参数异常统一处理,结合钉钉报告信息定位bug位置
参考之前一篇博客:springmvc请求参数异常统一处理 1.ExceptionHandlerController package com.oy.controller; import java.tex ...
- springmvc请求参数获取(自动绑定)的几种方法
1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交. /** * 1.直接把表单的参数写在Controller相应的方法的形参中 * @pa ...
随机推荐
- 转载:tar 解压缩命令~
转载自:http://blog.csdn.net/dunyanan1/article/details/38869059tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文 ...
- mongo 过滤查询条件后分组、排序
描述:最近业主有这么一个需求,根据集合中 时间段进行过滤,过滤的时间时间段为日期类型字符串,需要根据某一日期进行截取后.进行分组,排序 概述题目:根据createTime时间段做查询,然后以 天进行分 ...
- iOS学习笔记(十二)——iOS国际化
开发的移动应用更希望获取更多用户,走向世界,这就需要应用国际化,国际化其实就是多语言.这篇文章介绍Xcode4.5以后的国际化,包括应用名国际化和应用内容国际化.如果是Xcode4.5之前版本请参考. ...
- EasyNVR智能云终端硬件与EasyNVR解决方案软件综合对比
背景分析 互联网视频直播越来越成为当前视频直播的大势,对于传统的安防监控,一般都是局限于内网,无法成批量上云台.传统的海康和大华的平台虽然可以通过自身私有协议上云平台 集总管控,但是往往只是支持自身的 ...
- 前台传递给后台的JSON字符串中的引号 “” 在JAVA后台被转义为 "
前台传递给后台的JSON字符串中的引号 "" 在JAVA后台被转义为 " 1.问题: 前台数据,JSON字符串带有引号 "" ,数据被传递到后台 ...
- 相似度模型 similarity model
Lucene4.0附加了相似度模型,允许在文档中使用不同的公式.
- ES6学习笔记(一)——let和const
1.ES6学习之let.const (1).var.let.const 变(常)量声明 ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景. 在ES6中let就诞生了,实际上它 ...
- Android系统移植与调试之------->如何修改Android手机显示的4G信号强度的格子数
在修改显示的信号强度之前,先了解一下什么是dB,什么是dBm? 1.dB dB是一个表征相对值的值,纯粹的比值,只表示两个量的相对大小关系,没有单位,当考虑甲的功率相比于乙功率大或小多少个dB时, 按 ...
- centos中screen的使用 创建 退出
一.创建一个新窗口: 安装完成后,直接敲命令screen就可以启动它.但是这样启动的screen会话没有名字,实践上推荐为每个screen会话取一个名字,方便分辨: [root@elk-server ...
- POJ 1470 Closest Common Ancestors【近期公共祖先LCA】
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u013912596/article/details/35311489 题目链接:http://poj ...