SpringMVC的请求乱码解决和接收前端常用类型(五)中

简介: SpringMVC的请求乱码解决和接收前端常用类型(五)

三. 数据绑定


三.一 绑定单个基本的参数


绑定单个参数时与上面的例子一样。


1 . 前台


<!-- 采用的是post提交的方式 -->
  <form action="/SpringMVC02/user/register.action" method="post">
    用户名: <input type="text" name="name"/> <br/>
    年龄:<input type="text" name="age"><br/>
    性别:<input type="text" name="sex"><br/>
    描述:<input type="text" name="description"><br/>
    <input type="submit" value="提交">
  </form>


2 . 后端接收


@RequestMapping(value="/register")
  public String register(@RequestParam(value="name") String name,
      @RequestParam(value="age") Integer age,HttpServletResponse response){
    response.setCharacterEncoding("utf-8");
    System.out.println("name:"+name);
    System.out.println("age:"+age);
    return "user/list";
  }


3 . 前台参数写入


20190809102437660.png


4 .控制台打印输出


20190809102437660.png


当然,绑定参数除了@RequestParam 注解外,还可以用@pathVariable 注解。 具体可以参数第三章和第四章的注解。


三.二 绑定POJO 对象


需要前端的name中的值与POJO 对象中的属性值保持一致。 与Struts2 的相同。


前端与上面的一致。


后端接收:


@RequestMapping(value="/register")
  public String register(User user){
    System.out.println("接收的对象:"+user.toString());
    return "user/list";
  }


前端输入:


20190809102454301.png


控制台打印输出:


20190809102501595.png


三.三 绑定关联对象


如 User 类中关联一个Dept 部门类,表示一个员工所在的部门的信息。


部门Dept 表:


package com.yjl.pojo;
/**
 @author: yuejl
 @date: 2019年2月16日 上午10:15:08
 @Description 数据库中一的一方 部门实体
*/
public class Dept {
  /**
   * @param id 部门的编号
   * @param name 部门的名称
   * @param description 部门的描述
   */
  private Integer id;
  private String name;
  private String description;
  public Integer getId() {
    return id;
  }
  public void setId(Integer id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public String getDescription() {
    return description;
  }
  public void setDescription(String description) {
    this.description = description;
  }
  @Override
  public String toString() {
    return "Dept [id=" + id + ", name=" + name + ", description=" + description + "]";
  }
}


员工User 表里面添加 Dept的引用,实现setter和getter方法,并且重写User 中的toString() 方法,添加dept的打印。


//关联部门的引用
private Dept dept;


1 . 前端页面展示


<form action="/SpringMVC02/user/register.action" method="post">
    用户名: <input type="text" name="name"/> <br/>
    年龄:<input type="text" name="age"><br/>
    性别:<input type="text" name="sex"><br/>
    描述:<input type="text" name="description"><br/>
    <!-- 用属性.属性 的形式来接收。 -->
    部门名称:<input type="text" name="dept.name"><br/>
    部门描述:<input type="text" name="dept.description"><br/>
    <input type="submit" value="提交">
  </form>


2 . 后端接收与上面的一致。


@RequestMapping(value="/register")
  public String register(User user){
    System.out.println("接收的对象:"+user.toString());
    return "user/list";
  }


3 . 前台数据输入


20190809102541791.png


4 . 控制台打印输出


20190809102621192.png


三.四 绑定数组对象


以老蝴蝶的爱好为例。


1 . 前端界面


<!-- 爱好,数组接收 -->
    <input type="checkbox" name="hobby" value="读书">读书
    <input type="checkbox" name="hobby" value="编程">编程
    <input type="checkbox" name="hobby" value="打游戏">打游戏 
    <input type="checkbox" name="hobby" value="看电影">看电影 


2 . 后台接收处理。 当然也可以放置在user 里面,这里用参数处理。


@RequestMapping(value="/register")
  public String register(User user,@RequestParam(value="hobby",required=false) String[] hobby){
    System.out.println("接收的对象:"+user.toString());
    System.out.println("爱好是:"+Arrays.toString(hobby));
    return "user/list";
  }


3 .前端输入勾选


20190809102635552.png


4 . 后台打印输出,显示数组值。


20190809102643127.png


当然,也可以将hobby 数组放置在User 类里面。


5 .在User 类里面 添加 hobby 的数组属性,添加setter和getter方法


private String [] hobby;
public String[] getHobby() {
    return hobby;
  }
  public void setHobby(String[] hobby) {
    this.hobby = hobby;
  }


6 .后台接收:


@RequestMapping(value="/register")
  public String register(User user){ 
    System.out.println("接收的对象:"+user.toString());
    String []hobby=user.getHobby();
    System.out.println("对象接收爱好是:"+Arrays.toString(hobby));
    return "user/list";
  }


7 .前端数据输入:


20190809102654482.png


8 .后端控制台打印输出


20190809102701814.png


相关文章
|
23天前
|
设计模式 前端开发 Java
Spring MVC——项目创建和建立请求连接
MVC是一种软件架构设计模式,将应用分为模型、视图和控制器三部分。Spring MVC是基于MVC模式的Web框架,通过`@RequestMapping`等注解实现URL路由映射,支持GET和POST请求,并可传递参数。创建Spring MVC项目与Spring Boot类似,使用`@RestController`注解标记控制器类。
31 1
Spring MVC——项目创建和建立请求连接
|
21天前
|
前端开发 JavaScript
回顾前端页面发送ajax请求方式
回顾前端页面发送ajax请求方式
36 18
|
23天前
|
前端开发 JavaScript API
前端Get请求能在body上传参吗
【10月更文挑战第11天】 在浏览器环境中,GET请求的body参数会被忽略,这是因为浏览器中的XHR和fetch实现限制了这一行为。而在Node.js服务端环境中,GET请求可以在body中传递参数,因为服务端请求库没有这样的限制。实际上,GET请求不带body是HTTP标准的一部分,但在某些场景下,为了遵循RESTful规范,可以考虑通过服务端转发或BFF模式来实现复杂的参数传递。
|
28天前
|
JavaScript 前端开发 Python
django接收前端vue传输的formData图片数据
django接收前端vue传输的formData图片数据
26 4
|
28天前
|
存储 缓存 监控
|
28天前
|
移动开发 前端开发 HTML5
SharedWorker 优化前端轮询请求
【10月更文挑战第6天】
18 1
|
1月前
|
JSON 前端开发 数据格式
@RequestMapping运用举例(有源码) 前后端如何传递参数?后端如何接收前端传过来的参数,传递单个参数,多个参数,对象,数组/集合(有源码)
文章详细讲解了在SpringMVC中如何使用`@RequestMapping`进行路由映射,并介绍了前后端参数传递的多种方式,包括传递单个参数、多个参数、对象、数组、集合以及JSON数据,并且涵盖了参数重命名和从URL中获取参数的方法。
49 0
@RequestMapping运用举例(有源码) 前后端如何传递参数?后端如何接收前端传过来的参数,传递单个参数,多个参数,对象,数组/集合(有源码)
|
1月前
|
前端开发 Java
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
文章介绍了如何使用SpringBoot创建简单的后端服务器来处理HTTP请求,包括建立连接、编写Controller处理请求,并返回响应给前端或网址。
51 0
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
|
2月前
|
XML 缓存 前端开发
springMVC02,restful风格,请求转发和重定向
文章介绍了RESTful风格的基本概念和特点,并展示了如何使用SpringMVC实现RESTful风格的请求处理。同时,文章还讨论了SpringMVC中的请求转发和重定向的实现方式,并通过具体代码示例进行了说明。
springMVC02,restful风格,请求转发和重定向
|
2月前
|
存储 前端开发 JavaScript
前端基础(十一)_函数声明及调用、函数的形参与实参、arguments参数、函数的参数类型、函数中的问题
本文介绍了JavaScript中函数的声明及调用、形参与实参的概念、arguments对象的使用、函数参数的类型以及函数中this的作用。通过示例代码详细解释了函数如何接收参数、如何处理参数个数不匹配的情况,以及函数在不同上下文中this的指向。
22 1