SpringMVC基础二
一、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";}
}
二.接收请求参数
接收请求参数常用的方法:
- 使用Controller方法参数接收
- 使用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基础二相关推荐
- SpringMVC基础配置及使用
SpringMVC基础配置及使用 SpringMVC: 1.SpringMVC和Spring的关系: 软件开发的三层架构: web层[表示层.表现层]---->Service层----& ...
- SpringMVC基础
SpringMVC基础 1.SpringMVC概述 1.1 三层架构 三层架构: 表现层:负责数据展示 业务层:负责业务处理 数据层:负责数据操作 1.2 MVC MVC(Model View Con ...
- 一、SpringMVC基础入门,创建一个HelloWorld程序
一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 ...
- 蓝鸥Unity开发基础二——课时20 接口
蓝鸥Unity开发基础二--课时20 接口 一.接口 使用interface关键字定义接口 接口定义一组成员单不直接实现它们 二.实现接口 实现接口的任何类都必须实现其所有的成员方法 接口不能直接实例 ...
- shell基础二十篇 一些笔记
shell基础二十篇 转自 http://bbs.chinaunix.net/thread-452942-1-1.html 研讨:Bash 内建命令 read (read命令更具体的说明见博客收藏的一 ...
- Bootstrap基础二十七 多媒体对象(Media Object)
Bootstrap<基础二十七> 多媒体对象(Media Object) 原文:Bootstrap<基础二十七> 多媒体对象(Media Object) Bootstrap 中 ...
- Web开发(一)·期末不挂之第三章·HTML基础二(html实现表格和表单)
HTML基础二 一. 表格✪✪✪ 二.表单 插入表单 输入标签✪✪ 多行文本域 下拉菜单 三.其他 label标签 内联框架 一. 表格✪✪✪ 插入表格: < table>< /ta ...
- shell基础二:查找技巧,find及xargs的使用
2019独角兽企业重金招聘Python工程师标准>>> 使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的 (在有些操作系统中只允许- e ...
- 自考计算机软件基础交作业,全国2009年7月自考计算机软件基础(二)试题及答案...
全国2009年7月自考计算机软件基础(二)试题及答案 课程代码:02365 一.单项选择题(本大题共20小题,每小题1分,共20分) 1.下列选项中属于事务处理软件的是( A ) A.工资管理软件 B ...
最新文章
- JavaScript中的一些细节
- openlayer 图层上下_OpenLayers实现图层切换控件
- 十分钟-Nginx入门到上线
- [Javascript]史上最短的IE浏览器判断代码
- (转载)lib 和 dll 的区别、生成以及使用详解
- 软件质量保证与测试期末复习整理
- matlab的小波分析,matlab小波分析步骤是什么 - 全文
- 发光二极管pcb封装图画法_贴片发光二极管正负极判断方法
- 2.8数据-paddlepaddle数据集uci_housing
- python爬虫:英为财情爬取美国十年期国债收益率
- FFMPEG开发之——视频转码
- 2011年上半年五大臭名昭著的数据库泄密事件--转载
- ACE编辑器ace-editor笔记
- 【iOS 1 行代码系列】之 一行代码搞定TableView组头悬停
- 秒速五厘米(为情怀而补的题)
- html5 show 案例
- 全面屏虚拟键适配方案
- STM32和51单片机有什么区别
- 美工页面怎么排版?排版设计需要注意什么要点?
- SpringBoot:在spring官网上下载历史版本的spring插件STS压缩包
热门文章
- Origin Pro2017使用PatchOriginPro.exe破解提示Patch unsuccessfully or already
- SODA10M 数据集下载记录
- 软工小队第二次会议 4-23
- 中国移动互联网测试开发大会(简称MTSC大会)
- 灵隐寺招聘:没有KPI、佛系上班、一切随缘
- 鬼泣4refrain 《鬼泣4 refrain》图文全攻略(iphone版)
- B - 验证角谷猜想
- 国学*周易*梅花易数 代码实现效果展示 - 梅花心易
- [Codeforces947D]Riverside Curio(思维)
- leetcode---1758.生成交替二进制字符串的最少操作数