【SSM - SpringMVC篇】03 - SpringMVC的参数绑定 - 参数自动绑定 - javabean对象参数绑 - 嵌套bean参数绑定
文章目录
- SpringMVC的参数绑定
- 1 传统方式进行参数传递
- 2 通过SpringMVC的参数绑定实现【***用这个就行】
- 2.1 SpringMVC的基本数据类型的参数绑定
- 2.1.1 方法形式参数名和页面传入参数名一致
- 2.1.2 方法形式参数名和页面传入参数名不一致
- 2.1.3 总结
- 2.2 SpringMVC的对象数据类型`pojo`参数绑定
- 案例
- 2.3 SpringMVC的嵌套javabean参数绑定
SpringMVC的参数绑定
用户请求服务器的时候会向后台传递参数(Controller), 如何来快速的接收到用户传递的参数,可以通过参数绑定来实现。
1 传统方式进行参数传递
在Controller中的方法的形式参数上直接声明HttpServletRequest, HttpServletResponse , HttpSession(就是以前的JAVAEE获取方法)
//注解,通过这个地址login1.action执行当前方法@RequestMapping("test01.action")public ModelAndView test01(HttpServletRequest req){//springmvc会将请求对象 赋值给reqString username= req.getParameter("username");String password= req.getParameter("password");System.out.println(username);System.out.println(password);ModelAndView mv= new ModelAndView();mv.setViewName("main");//通过配置视图解析器前后缀,找到指定界面return mv;}
2 通过SpringMVC的参数绑定实现【***用这个就行】
对于普通的数据类型(8大基本数据类型、String数据类型)会直接自动进行参数绑定【springmvc的内部有默认的类型转换器,比如Spring -> int】;但是如果是自定义数据类型或其他数据类型,需要创建一个bean对象类,进行封装调用。
2.1 SpringMVC的基本数据类型的参数绑定
2.1.1 方法形式参数名和页面传入参数名一致
只需要保证请求作用域request(也就是从浏览器传过来的值)的name和方法上的形式参数名称一致,就可以自动赋值。
@RequestMapping("test02.action")public ModelAndView test02(String username1,String password){//springmvc会将请求对象,赋值给request//参数绑定就是自动从requeest,将参数值取出来赋值给形式参数username passwordSystem.out.println(username1);System.out.println(password);ModelAndView mv= new ModelAndView();mv.setViewName("main");通过配置视图解析器前后缀,找到指定界面return mv;}
2.1.2 方法形式参数名和页面传入参数名不一致
如果你的形参的名字和页面传入的参数名字不一致,可以使用@RequestParam
注解,将参数名不同的设置@RequestParam(value="页面的参数名")
@RequestParam的三个值
- value:请求参数的参数名, 注解中value值要和页面传入的参数名称一致。
- required:该参数是否必须,默认为true,如果没有给这个值,则出现400错误页面。
- defaultValue:请求参数的默认值,比如defaultValue = “default”,如果给了参数,就获取,如果没有给参数,则默认为default的值。
比如从页面传入的参数名是username和password,接收参数是name和password,需要对name增加注解,应该写成下面这种情况
public ModelAndView test03(@RequestParam(value="username") String name, String password){//需要将形式参数name标明只的是页面参数usernameSystem.out.println(name);System.out.println(password);ModelAndView mv= new ModelAndView();mv.setViewName("main");return mv;}
2.1.3 总结
- 基本数据类型和String的参数自动绑定
- springmvc会自动将请求对象,赋值给request,参数自动绑定就是自动的从request中奖数据赋值给参数列表
- 前提条件(参数列表和请求request域中的名称相同,不同就不赋值)
- 自动的从request中获取值赋值给参数列表(名称要相同,而且只能处理简单的参数(8中基本数据类型 + String))
- 如果从页面传入的参数名和方法形式参数不一样,就需要通过
@RequestParam
注解来设置(可以设置多个,顺序和形式参数要一致)- 如果参数名称不同可以通过注解
@RequestParam
补救,如果没有注解存在,就按参数列表来获取值,如果有注解存在,先按注解赋值(有注解优先看注解)
2.2 SpringMVC的对象数据类型pojo
参数绑定
pojo概念:
POJO(Plain Ordinary Java Object)就是简单的Java对象,实际就是普通JavaBeans。(需要创建对应的javabean类)
其中只有一些属性及其getter setter方法的类,没有别的什么业务逻辑方法。
使用场景
当页面需要传递多个参数时(一个表单等情况),我们可以将多个参数封装到一个JavaBean类。(使用POJO类进行数据封装,就是创建不同javabean对象封装)。
将这个JavaBean作为方法形参,SpringMVC可以直接将页面的数据赋值给JavaBean对象(参数列表参数自动赋值)。
【前提条件】JavaBean类中成员变量的名字和必须和表单中name属性的值一样(因为取值赋值通过get/set方法)。
案例
前台页面jsp
<input type="text" name="username" placeholder="请输入用户名"/><input type="password" name="password" placeholder="请输入密码"/>
我们就可以将其封装成一个User的pojp
对象
public class User{private String username;private String password;//省略get/set方法(一定得有)
}
参数绑定:
@RequestMapping("test04.action")//从页面获取参数然后赋值给javabean对象的同名属性(通过set方法)public ModelAndView test04(User user){//springMVC可以将表单的数据赋值给一个javaBean对象//通过get方法获取已经被自动赋值的javabean对象属性System.out.println(user.getUsername());System.out.println(user.getPassword());ModelAndView mv= new ModelAndView();mv.setViewName("main");return mv;}
2.3 SpringMVC的嵌套javabean参数绑定
概念
封装多个不同类型的javabean对象做成员变量(就是一个javabean又封装了多个javabean对象作为属性)。
当前的javaBean类的成员变量有复杂类型(其他javabean)如:Person类中有birthday等变量
通过当前成员属性名(javabean对象作为成员属性名)加.
点来获取它的属性
javabean
public class Person {private int id;private String username;private String password;private Birthday birthday;//省略get/set方法
}public class Birthday {private int year;private int month;private int day;//省略get/set方法
}
后台获取方法
@RequestMapping("test05.action")//按照name相同自动参数绑定赋值public ModelAndView test05(Person person){//springMVC可以将表单的数据赋值给 一个javaBean对象System.out.println(person.getUsername());System.out.println(person.getPassword());System.out.println(person.getBirthday().getYear());System.out.println(person.getBirthday().getMonth());System.out.println(person.getBirthday().getDay());ModelAndView mv= new ModelAndView();mv.setViewName("main");return mv;}
前台jsp写法
<form method="post" action="${pageContext.request.contextPath}/registerPerson.action">用户名: <input type="text" name="username" /><br/>用户密码: <input type="text" name="password"/><br/>年 <input type="text" name="birthday.year"/><br/>月<input type="text" name="birthday.month"/><br/>日<input type="text" name="birthday.day"/><br/><input type="submit" value="添加"/><br/></form>
【SSM - SpringMVC篇】03 - SpringMVC的参数绑定 - 参数自动绑定 - javabean对象参数绑 - 嵌套bean参数绑定相关推荐
- Java SSM篇5——SpringMVC
Java SSM篇5--SpringMVC 1.MVC模式 MVC是软件工程中的一种软件架构模式,它是一种分离业务逻辑与显示界面的开发思想 M(model)模型:处理业务逻辑,封装实体 V(view) ...
- (转)SpringMVC学习(六)——SpringMVC高级参数绑定与@RequestMapping注解
http://blog.csdn.net/yerenyuan_pku/article/details/72511749 高级参数绑定 现在进入SpringMVC高级参数绑定的学习,本文所有案例代码的编 ...
- (转)SpringMVC学习(五)——SpringMVC的参数绑定
http://blog.csdn.net/yerenyuan_pku/article/details/72511611 SpringMVC中的参数绑定还是蛮重要的,所以单独开一篇文章来讲解.本文所有案 ...
- spring api 中文_【每日3分钟技术干货 | 面试题+答案 | Springamp;SpringMVC篇
1. 什么是spring? Spring 是个java企业级应用的开源开发框架.Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用.Spring 框架目标是简化Jav ...
- 【SSM框架系列】SpringMVC的请求和响应
request和response request对象的作用 获取请求参数 作为域对象存取数据 获取请求头 请求转发 response功能 回写数据,JSON格式字符串 页面跳转(请求重定向) Spri ...
- 【檀越剑指大厂—SpringMVC】SpringMVC篇
一.基础概念 1.什么是 MVC MVC 是模型(Model).视图(View).控制器(Controller)的简写,是一种软件设计规范. 是将业务逻辑.数据.显示分离的方法来组织代码. MVC 主 ...
- idea创建SSM项目(Spring+SpringMVC+MyBatis)
idea创建SSM项目(Spring+SpringMVC+MyBatis) 项目创建 创建数据库 自动生成mapper 先做一个简单的测试 以下配置 可参考博客https://blog.csdn.ne ...
- 【SSM框架系列】Spring-MVC的组件解析
SpringMVC完整执行流程 用户发送请求至前端控制器DispatcherServlet. DispatcherServlet收到请求调用HandlerMapping处理器映射器. 处理器映射器找到 ...
- 【SSM框架系列】SpringMVC基本介绍
SpringMVC 是web层的框架 SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于SpringFrameWork 的后续产品,已经融合在 ...
最新文章
- c和python区别_C语言和python的区别
- 基于现代神经网络通用人工智能架构设计
- 解决img标签间距问题
- 深入理解Spark Streaming执行模型
- UVA11388GCD LCM
- [POJ1155]TELE
- MFC 操作配置文件INI的方法
- 简单聊聊C#中lock关键字
- 关于Config.ARGB_8888、Config.ALPHA_8、Config.ARGB_4444、Config.RGB_565的理解
- 面试问题背后的“猫腻”
- Windos环境用Nginx配置反向代理和负载均衡
- sql还原数据库备份数据库_有关数据库备份,还原和恢复SQL面试问题–第一部分
- codeforces round div2,3周赛补题计划(从开学到期末)
- MyBB论坛兼容智能手机的解决方案
- oracle查询sql保留小数点前0,去掉小数位后末尾的0
- 东北大学金工实习考试题库
- c语言strict函数的作用,C语言实现进制转换函数的实例详解
- 图像细化 A fast parallel algorithm for thinning digital patterns
- Unity3D编辑器扩展--自定义创建圆锥体
- ssm:Unable to process Jar entry