一、Spring MVC数据绑定

1.URL Mapping

在类前添加RequestMapping("xxxx")则会将类中的方法访问添加前缀

package com.springmvc.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;@Controller
@RequestMapping("/um")
public class URLMappingController {@GetMapping("/g")@ResponseBodypublic String getMapping(){return "This is get method";}@PostMapping("/p")@ResponseBodypublic String postMapping(){return "This is post method";}
}

二.接收请求参数

接收请求参数常用的方法:

  1. 使用Controller方法参数接收
  2. 使用javaBean接收数据

1.使用Controller方法接收数据

.

当遇到特殊的参数名时使用方法参数中的@RequestParam("xxx") 进行注解映射,例如请求参数为manager_name=‘xx’,则需要在方法中添加以下注解进行映射

package com.springmvc.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;@Controller
@RequestMapping("/um")
public class URLMappingController {@GetMapping("/g")@ResponseBodypublic String getMapping(@RequestParam("manager_name") String managerName){System.out.println(managerName);return "This is get method";}@PostMapping("/p")@ResponseBodypublic String postMapping(String username,String password){System.out.println(username+":"+password);return "This is post method";}
}

2.使用JavaBean接收数据

当需要接收的参数过多时就需要使用javabean方式接收数据,springmvc会将接收的数据封装成一个javabean进行接收而无需在方法的参数上列出过多的参数,那样可维护性极差

需要注意的是前台表单中的数据名称必须与后台的javabean属性名一一对应,且数据类型必须一致(或能进行强制转换)

HTML页面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<form action="um/p1" method="post"><input name="username"><br><input name="password"><br><input type="submit" value="提交">
</form>
</body>
</html>

JavaBean

public class User {private String username;private Long password;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public Long getPassword() {return password;}public void setPassword(Long password) {this.password = password;}
}

Controller类

    @PostMapping("/p1")@ResponseBodypublic String postMapping(User user){System.out.println(user.getUsername()+":"+user.getPassword());return "JavaBean获取数据";}

三、接收表单数据(复合数据)

1.创建表单网页

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><div class="container"><h2>问卷调查</h2><form action="./apply" method="post"><h3>姓名:</h3><input name="name" class="text" style=""><h3>您正在学习的技术方向</h3><select name="course" style=""><option value="java">java</option><option value="h5">h5</option><option value="python">python</option><option value="php">php</option></select><div><h3>您学习目的是?</h3><input type="checkbox" name="purpose" value="1">就业找工作<input type="checkbox" name="purpose" value="2">工作要求<input type="checkbox" name="purpose" value="3">兴趣爱好<input type="checkbox" name="purpose" value="4">其他</div><div><input type="submit" value="提交"></div></form></div>
</body>
</html>

通过设置相对路径能大大降低文件地址访问错误

2.Controller方式接收复合数据

为了防止接收到的数据无法对应,可以为参数设置默认的值

    @PostMapping("/apply")@ResponseBody//可以在参数中设置默认值,当获取不到对应参数名n的值时会使用默认值代替public String apply(@RequestParam(value = "n",defaultValue = "ANON") String name, String course, Integer[] purpose){System.out.println(name);System.out.println(course);for (int i=0;i<purpose.length;i++){System.out.println(purpose[i]);}return "SUCESS";}

在接收复合数据时能通过list或则数组(上文)来接收,如果选择使用List接收则需要在参数前添加注解@RequestParam

    @PostMapping("/apply")@ResponseBodypublic String apply(String name, String course, @RequestParam List<Integer> purpose){System.out.println(name);System.out.println(course);for (Integer p:purpose) {System.out.println(p);}return "SUCESS";}

3.JavaBean方式接收复合数据

创建实体类Form

package com.springmvc.entity;import java.util.List;public class Form {private String name;private String course;private List<Integer> purpose;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getCourse() {return course;}public void setCourse(String course) {this.course = course;}public List<Integer> getPurpose() {return purpose;}public void setPurpose(List<Integer> purpose) {this.purpose = purpose;}
}

注意:还有种方式是通过map接收数据,此方法适用范围是没有复合数据的表单方可适用,当有复合数据时只会保存第一个数据,其余数据就会丢失。

四、关联对象赋值

遇到这种复杂表单时可以选择新建一个实体类包含所有属性,但是不建议这么做,最好是能分开进行管理,更改后设计如下:

          

在上文的表单Form.html新增三个输入数据

新建实体类Delivery,并在Form的实体中持有该实体。形成关联关系

package com.springmvc.entity;public class Delivery {private String name;private String address;private String mobile;public String getName() { return name;}public void setName(String name) {this.name = name;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getMobile() {return mobile;}public void setMobile(String mobile) {this.mobile = mobile;}
}

SpringMVC基础二相关推荐

  1. SpringMVC基础配置及使用

    SpringMVC基础配置及使用 SpringMVC: 1.SpringMVC和Spring的关系:     软件开发的三层架构: web层[表示层.表现层]---->Service层----& ...

  2. SpringMVC基础

    SpringMVC基础 1.SpringMVC概述 1.1 三层架构 三层架构: 表现层:负责数据展示 业务层:负责业务处理 数据层:负责数据操作 1.2 MVC MVC(Model View Con ...

  3. 一、SpringMVC基础入门,创建一个HelloWorld程序

    一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 ...

  4. 蓝鸥Unity开发基础二——课时20 接口

    蓝鸥Unity开发基础二--课时20 接口 一.接口 使用interface关键字定义接口 接口定义一组成员单不直接实现它们 二.实现接口 实现接口的任何类都必须实现其所有的成员方法 接口不能直接实例 ...

  5. shell基础二十篇 一些笔记

    shell基础二十篇 转自 http://bbs.chinaunix.net/thread-452942-1-1.html 研讨:Bash 内建命令 read (read命令更具体的说明见博客收藏的一 ...

  6. Bootstrap基础二十七 多媒体对象(Media Object)

    Bootstrap<基础二十七> 多媒体对象(Media Object) 原文:Bootstrap<基础二十七> 多媒体对象(Media Object) Bootstrap 中 ...

  7. Web开发(一)·期末不挂之第三章·HTML基础二(html实现表格和表单)

    HTML基础二 一. 表格✪✪✪ 二.表单 插入表单 输入标签✪✪ 多行文本域 下拉菜单 三.其他 label标签 内联框架 一. 表格✪✪✪ 插入表格: < table>< /ta ...

  8. shell基础二:查找技巧,find及xargs的使用

    2019独角兽企业重金招聘Python工程师标准>>> 使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的 (在有些操作系统中只允许- e ...

  9. 自考计算机软件基础交作业,全国2009年7月自考计算机软件基础(二)试题及答案...

    全国2009年7月自考计算机软件基础(二)试题及答案 课程代码:02365 一.单项选择题(本大题共20小题,每小题1分,共20分) 1.下列选项中属于事务处理软件的是( A ) A.工资管理软件 B ...

最新文章

  1. JavaScript中的一些细节
  2. openlayer 图层上下_OpenLayers实现图层切换控件
  3. 十分钟-Nginx入门到上线
  4. [Javascript]史上最短的IE浏览器判断代码
  5. (转载)lib 和 dll 的区别、生成以及使用详解
  6. 软件质量保证与测试期末复习整理
  7. matlab的小波分析,matlab小波分析步骤是什么 - 全文
  8. 发光二极管pcb封装图画法_贴片发光二极管正负极判断方法
  9. 2.8数据-paddlepaddle数据集uci_housing
  10. python爬虫:英为财情爬取美国十年期国债收益率
  11. FFMPEG开发之——视频转码
  12. 2011年上半年五大臭名昭著的数据库泄密事件--转载
  13. ACE编辑器ace-editor笔记
  14. 【iOS 1 行代码系列】之 一行代码搞定TableView组头悬停
  15. 秒速五厘米(为情怀而补的题)
  16. html5 show 案例
  17. 全面屏虚拟键适配方案
  18. STM32和51单片机有什么区别
  19. 美工页面怎么排版?排版设计需要注意什么要点?
  20. SpringBoot:在spring官网上下载历史版本的spring插件STS压缩包

热门文章

  1. Origin Pro2017使用PatchOriginPro.exe破解提示Patch unsuccessfully or already
  2. SODA10M 数据集下载记录
  3. 软工小队第二次会议 4-23
  4. 中国移动互联网测试开发大会(简称MTSC大会)
  5. 灵隐寺招聘:没有KPI、佛系上班、一切随缘
  6. 鬼泣4refrain 《鬼泣4 refrain》图文全攻略(iphone版)
  7. B - 验证角谷猜想
  8. 国学*周易*梅花易数 代码实现效果展示 - 梅花心易
  9. [Codeforces947D]Riverside Curio(思维)
  10. leetcode---1758.生成交替二进制字符串的最少操作数