springmvc 前台传对象怎么获取前台post过来的对象

6296人阅读
由于最近项目用到了SpringMVC,就稍微研究了一下,以前都是用struts2,在struts2中,jsp页面给form表单中的元素定义name属性,然后在action中定义相同名称的变量,提供get()和set()方法,就会将这些变量封装到struts2中的值栈中,从而可以将参数在前台页面和后台中进行数据交互,但在SpringMVC中不能用这种方法,现在就介绍三种简单的数据交互方法,以后用到其他方法再追加。
第一种:当参数少时,直接在方法中写参数
& &&& @RequestMapping(value = &/query&,method = RequestMethod.POST)
&&& public String queryList(HttpServletRequest request, String gname) {
&& &&& &System.out.println(&gname=& + gname);
第二种,从HttpServletRequest取值
String gname = request.getParameter(&gname&);
&& &&& &System.out.println(gname);
第三种,将参数封装到bean中
@RequestMapping(&/add&)
public String add(User user){
其中,前两种取得值后再想前台传值需要HttpServletRequest.setAttribute(&key&, value);& 或者在方法中传入Model
&&& @RequestMapping(value = &/monitor/queryList&,method = RequestMethod.POST)
&&& public String queryList(HttpServletRequest request, Model model) {
再在model中add属性 model.addAttribute(&key&, value);
第三种用javabean传值的方式就不用这么麻烦,返回的时候就已经将javabean返回给前台了
具体可参考
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:24564次
排名:千里之外
评论:21条
(2)(1)(2)(1)(3)本帖子已过去太久远了,不再提供回复功能。下次自动登录
现在的位置:
& 综合 & 正文
SpringMVC @RequestBody 处理ajax请求
1.问题描述
最近在和前台调试代码时发现了如下的问题:
org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Unexpected character ('c' (code 99)): expected a valid value
(number, String, array, object, 'true', 'false' or 'null')。
前台是发的ajax请求,数据是一个json对象。
后台发现这个错一般是传递的json数据格式有问题。
2.将对象传到Java端
在SpringMVC环境中, @RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,后来发现用JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType:
"json",contentType:"application/json"这样就可以轻易的将一个对象传到Java端,使用@RequestBody即可绑定对象
3.如何将List对象传到Java端:
&script type="text/javascript"&
$(document).ready(function(){
var saveDataAry=[];
var data1={"userName":"test","address":"gz"};
var data2={"userName":"ququ","address":"gr"};
saveDataAry.push(data1);
saveDataAry.push(data2);
type:"POST",
url:"user/saveUser",
dataType:"json",
contentType:"application/json",
data:JSON.stringify(saveData),
success:function(data){
JSON.stringify() : 将对象转换成json字符串。
JSON.parse(): 将json字符串转换成json对象。
@RequestMapping(value = "saveUser", method = {RequestMethod.POST }})
@ResponseBody
public void saveUser(@RequestBody List&User& users) {
userService.batchSave(users);
这样是不可以的。因为spring MVC不会自动转换为List&User&对象。传到后台后,List中是LinkedHashMap类型。
但是使用数组就可以接受了User[] ,如下:
@RequestMapping(value = "saveUser", method = {RequestMethod.POST }})
@ResponseBody
public void saveUser(@RequestBody User[] users) {
userService.batchSave(users);
&&&&推荐文章:
【上篇】【下篇】========创建需要的两个实体类================
* @author 小豆腐
public class Student {
//学生的老师
public Teacher getTeacher() {
public void setTeacher(Teacher teacher) {
this.teacher =
public String getName() {
public void setName(String name) {
this.name =
public int getAge() {
public void setAge(int age) {
this.age =
public Student(String name, int age) {
this.name =
this.age =
public Student() {
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
public class Teacher {
//教师的实体类
public String getName() {
public void setName(String name) {
this.name =
public int getAge() {
public void setAge(int age) {
this.age =
public Teacher(String name, int age) {
this.name =
this.age =
public Teacher() {
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
=======需要的两个页面================
&form action="student/addStudent"
method="post"&
学生姓名:&input type="text" name="name"/&
&input type="password" name="age"/&
teacher.name :teacher是
student类中的域属性 --%&
老师姓名:&input type="text" name="teacher.name"/&
&input type="submit" value="新增"/&
springmvc.xml文件的内容
&?xml version="1.0" encoding="UTF-8"?&
&beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd"&
&!-- 配置springmvc的组件
&context:component-scan base-package="cn.bdqn.controller"/&
视图解析器
后台返回的是
应该拿到的是
/WEB-INF/jsp/success.jsp
class="org.springframework.web.servlet.view.InternalResourceViewResolver"&
&property name="prefix" value="/WEB-INF/jsp/"/&
&property name="suffix" value=".jsp"/&
controller中的内容
@Controller
@RequestMapping("/student")
public class StudentController {
* 新增student
* 01.通过request获取前台
@RequestMapping("/add")
ModelAndView add(HttpServletRequest request,HttpServletResponse response){
//获取前台用户的输入
String name = request.getParameter("name");
String age = request.getParameter("age");
//创建一个MV
ModelAndView
mv=new ModelAndView();
//增加数据
前台使用 el表达式 接收
mv.addObject("name", name).addObject("age",age);
//设置返回页面
mv.setViewName("success");
* 02.从请求中获取参数
参数名称 必须和前台页面中的name属性值 一致!
@RequestMapping("/add2")
ModelAndView
add2(String name,int age){
System.out.println("进入了add2...............");
//创建一个MV
ModelAndView
mv=new ModelAndView();
//增加数据
前台使用 el表达式 接收
mv.addObject("name", name).addObject("age",age);
//设置返回页面
mv.setViewName("success");
* 校正参数
*student/add3?names=xxx&age=xxx
* @RequestParam("names")names:就是前台传递来的参数! 必须写在校正参数之前!
@RequestMapping("/add3")
ModelAndView
add3(@RequestParam("names")String name,int age){
System.out.println("进入了add3...............");
//创建一个MV
ModelAndView
mv=new ModelAndView();
//增加数据
前台使用 el表达式 接收
mv.addObject("name", name).addObject("age",age);
//设置返回页面
mv.setViewName("success");
* 对象整体的传递!
但是 需要注意的是!
前台页面中的name属性值要和对象的属性名 一致!
@RequestMapping("/addStudent")
ModelAndView
addStudent(Student student){
System.out.println("进入了addStudent...............");
System.out.println("老师的姓名:"+student.getTeacher().getName());
//创建一个MV
ModelAndView
mv=new ModelAndView();
//增加数据
前台使用 el表达式 接收
mv.addObject("student",student);
//设置返回页面
mv.setViewName("success");
成功界面!
${name}&br/&
学生的用户名:${student.name}&br/&
学生的年龄:${student.age}&br/&
老师的姓名:${student.teacher.name}
================路径变量=====================
创建对应的页面
&a href="user/2/张三/add"&add&/a&
index.jsp页面
id========& ${id} &br&
name========& ${name} &br&
success.jsp页面
@Controller
@RequestMapping("/user")
public class MyController {
* @PathVariable 这个注解使用来获取 路径变量的!
* 不同于之前的?参数
* 想获取路径变量 必须使用@PathVariable
@RequestMapping(value = "/{id}/{name}/add")
public ModelAndView add(@PathVariable int id, @PathVariable String name) {
System.out.println("进入了 add.....");
System.out.println(name);
System.out.println(id);
// 获取前台输入的值
ModelAndView mv = new ModelAndView();
mv.addObject("id", id).addObject("name", name);
mv.setViewName("/WEB-INF/jsp/success.jsp");
对应的controller
阅读(...) 评论()}

我要回帖

更多关于 spring boot 获取post 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信