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


相关文章
|
2月前
|
JavaScript 前端开发 安全
Apollo与TypeScript:强大类型检查在前端开发中的应用
Apollo与TypeScript:强大类型检查在前端开发中的应用
|
3月前
|
前端开发 数据库 Python
使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
【1月更文挑战第13天】使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
88 7
|
2月前
|
存储 前端开发 JavaScript
前端面试:如何实现并发请求数量控制?
前端面试:如何实现并发请求数量控制?
84 0
|
3月前
|
负载均衡 前端开发 Java
字节后端面试题(前端发送请求到后端的过程(MVC),网关gateway作用,怎么解决跨域,各微服务组件作用)
字节后端面试题(前端发送请求到后端的过程(MVC),网关gateway作用,怎么解决跨域,各微服务组件作用)
130 0
|
3月前
|
设计模式 前端开发 开发者
SpringMVC底层负责请求路由的模块是什么
SpringMVC底层负责请求路由的模块是什么
81 0
|
3月前
|
前端开发 JavaScript 网络协议
前端中 JS 发起的请求可以暂停吗?
前端中 JS 发起的请求可以暂停吗?
|
3月前
|
前端开发 JavaScript 网络协议
【面试题】前端中 JS 发起的请求可以暂停吗?
【面试题】前端中 JS 发起的请求可以暂停吗?
|
3月前
springmvc请求转发和重定向的四种跳转方式
springmvc请求转发和重定向的四种跳转方式
|
4月前
|
JSON 前端开发 Java
(简易详细)spring boot 使用拦截器 实现拦截前端请求并返回json到前端页面
(简易详细)spring boot 使用拦截器 实现拦截前端请求并返回json到前端页面
109 0
|
4月前
|
JSON 前端开发 Java
JAVA后端向前端传递Long类型数据,导致数据不一致
JAVA后端向前端传递Long类型数据,导致数据不一致
94 0