请求参数的绑定和获取:

获取页面请求的参数,是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请求参数的绑定和获取的更多相关文章

  1. 16 SpringMVC 的请求参数的绑定与常用注解

    1.SpringMVC 绑定请求参数 (1)支持的数据类型 基本类型参数: 包括基本类型和 String 类型POJO 类型参数: 包括实体类,以及关联的实体类数组和集合类型参数: 包括 List 结 ...

  2. SpringMVC请求参数的获取方式

    一.GET请求参数获取 1. 通过HttpServletRequest获取参数 2. 直接方法参数获取 3. RequestParam注解方式获取请求参数 4. Bean方式获取参数 5. Model ...

  3. SpringMVC请求参数接收总结

    前提 在日常使用SpringMVC进行开发的时候,有可能遇到前端各种类型的请求参数,这里做一次相对全面的总结.SpringMVC中处理控制器参数的接口是HandlerMethodArgumentRes ...

  4. SpringMVC请求参数接收总结(一)

    前提 在日常使用SpringMVC进行开发的时候,有可能遇到前端各种类型的请求参数,这里做一次相对全面的总结.SpringMVC中处理控制器参数的接口是HandlerMethodArgumentRes ...

  5. SpringMVC请求参数总结

    前提 在日常使用SpringMVC进行开发的时候,有可能遇到前端各种类型的请求参数,这里做一次相对全面的总结.SpringMVC中处理控制器参数的接口是HandlerMethodArgumentRes ...

  6. 2.5万字长文简单总结SpringMVC请求参数接收

    这是公众号<Throwable文摘>发布的第22篇原创文章,暂时收录于专辑<架构与实战>.暂定下一篇发布的长文是<图文分析JUC同步器框架>,下一篇发布的短文是&l ...

  7. springmvc请求参数异常统一处理

    1.ExceptionHandlerController package com.oy.controller; import java.text.MessageFormat; import org.s ...

  8. springmvc请求参数异常统一处理,结合钉钉报告信息定位bug位置

    参考之前一篇博客:springmvc请求参数异常统一处理 1.ExceptionHandlerController package com.oy.controller; import java.tex ...

  9. springmvc请求参数获取(自动绑定)的几种方法

    1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交. /** * 1.直接把表单的参数写在Controller相应的方法的形参中 * @pa ...

随机推荐

  1. day4笔记

    今日讲解内容:1,int数字:运算.1 ,2,3... # 数字类型:int #范围.用于运算, + - * / // %.... bit_lenth :十进制数字用二进制表示的最小位数 a=10 p ...

  2. node.js调用函数

    首先EditPlus编辑器,打开新建的文本文档,另存为副本 调用函数分为调用本地函数,和其他文件的函数 1.调用本地函数 var http = require('http'); http.create ...

  3. 【网络编程】之十三、ping程序实现

    使用原始套接字:SOCK_RAW 需要ICMP 代码如下: #include<iostream> #include<WinSock2.h> using namespace st ...

  4. 1070 Bash游戏 V4

    1070 Bash游戏 V4 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 有一堆石子共有N个.A B两个人轮流拿,A先拿.每次拿的数量最少1个,最多不超过对手上 ...

  5. 巨蟒python全栈开发linux之centos6

    1.nginx复习 .nginx是什么 nginx是支持反向代理,负载均衡,且可以实现web服务器的软件 在129服务器中查看,我们使用的是淘宝提供的tengine,也是一种nginx服务器 我们下载 ...

  6. TFS二次开发-基线文件管理器(5)-源码文件的读取

      在上一节中,我们在保存标签之前,已经将勾选的文件路径保存到了Listbox中,这里只需要将保存的数据输出去为txt文档就可以做版本控制了.   版本文件比较复杂的是如何读取,也就是如何通过文件路径 ...

  7. javascript实例:显示时间

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Linux用户相关文件之用户信息文件

    1.文件地址: /etc/pssswd -rw-r--r--. 1 root root 936 10月 6 12:50 /etc/passwd 2.文件内容: xiaol_1:x:501:501::/ ...

  9. 通过Python操作hbase api

    # coding=utf-8 # Author: ruin """ discrible: """ from thrift.transport ...

  10. npm报错npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\Administrator\AppData\Roaming\npm-cache\_logs\2018-03-15T01_48_14_769Z-debug.log

    全局更新 npm npm i npm -g 就ok了