SpringMVC中的数据绑定(也就是参数的接收)
spirngMVC中的数据绑定类型,分为默认数据类型,简单数据类型,pojo类型,包装的pojo类型,绑定数组类型,绑定集合类型,还有自定定义数据绑定。
例如默认数据类型的绑定
@RequestMapping("/moren")
public String selectUser(HttpServletRequest request) {
String id = request.getParameter("id");
System.out.println(id);
return "success";
} //简单数据类型绑定
@RequestMapping("/simple")
//@RequestParam(value = "jason")用于解决与前端的参数名称不一致问题,
/*@RequestParam(value = "jason")使用时必须要有值,如果允许为空,则要设置required=false
* 有四个参数,分别为value,name,required,defaultValue*/
public String selecuser(@RequestParam(value = "jason", required = false) Integer id) {
System.out.println("简单数据类型绑定:" + id);
return "success";
}
//绑定pojo类型
//绑定pojo类型
@RequestMapping("/toRegister")
public String toRegister() {
return "register";
} @RequestMapping("/registerUser")
public String registerUser(User user) {
String username = user.getUsername();
Integer password = user.getPassword();
System.out.println("用户名:" + username + " " + "密码:" + password);
return "success";
}
jsp文件如下:
<%--${pageContext.request.contextPath}相对路径--%>
<%--提交表单,然后发送一个/registerUser请求,控制器捕捉到然后处理--%>
<%--表单中的name的值要和pojo类的中的一致--%>
<form action="${pageContext.request.contextPath}/registerUser" method="post">
用户名:<input type="text" name="username"><br>
密码:<input type="text" name="password"><br>
<input type="submit" value="注册">
</form>
//绑定包装pojo类型 //所谓包装pojo类型就是在一个简单的pojo中包含另一个简单pojo
@RequestMapping("/tofindOrdersWithUser")
public String tofindOrdersWithUser() {
return "orders";
} //查询订单和用户信息
@RequestMapping("/findOrdersAndUser")
public String findOrdersAndUser(Orders orders) {
Integer id = orders.getOrdersId();
User user = orders.getUser();
String username = user.getUsername();
System.out.println("订单id为:" + id + "用户名为:" + username);
return "success";
}
jsp文件如下
<form action="${pageContext.request.contextPath}/findOrdersAndUser" method="post">
订单编号:<input type="text" name="ordersId"><br>
用户姓名:<input type="text" name="user.username"><br>
<%--使用包装pojo类型时,需要满足以下两点--%>
<%--1.如果查询条件参数是包装类的直接基本属性,则参数直接用对应的属性名
2.如果查询条件参数是包装类中pojo的子属性,则参数名必须为【对象.属性】,对象要和包装pojo中的对象属性名一致,
属性要和包装pojo中的对象子属性一致。例如:user.username--%>
<input type="submit" value="查询">
</form>
//复杂数据类型绑定,数组,集合
//绑定数组,主要是处理一些前端请求传递到后端的一个或多个相同名称参数的情况例如批量删除之类的.
@RequestMapping("/toUser")
public String selectusr() {
return "user";
} @RequestMapping("/deleteUsers")
public String deUser(Integer[] ids) {
if (ids != null) {
for (Integer i : ids
) {
System.out.println("删除了" + i);
}
} else {
System.out.println("ids=null");
}
return "success";
}
jsp文件
<form action="${pageContext.request.contextPath}/deleteUsers" method="post">
<table border="1" width="20%">
<tr>
<td>选择</td>
<td>用户</td>
</tr>
<tr>
<td><input name="ids" value="1" type="checkbox"></td>
<td>tom</td>
</tr>
<tr>
<td><input name="ids" value="2" type="checkbox"></td>
<td>jason</td>
</tr>
<tr>
<td><input name="ids" value="3" type="checkbox"></td>
<td>jack</td>
</tr>
</table>
<input type="submit" value="删除">
</form>
//绑定集合
//用在批量修改的场景中
@RequestMapping("/toUserEdit")
public String toUserEdit() {
return "user_edit";
}
//处理批量修改请求的方法
@RequestMapping("/editUsers") //要使用包装类作为形参
public String editUsers(UserVO userList) {
//将所有用户数据封装到集合中
List<User> users = userList.getUsers();
//循环输出所有用户信息
for (User u : users
) {
if (u.getId() != null) {
System.out.println("修改了id为:" + u.getId() + "的用户名为:" + u.getUsername());
}
}
return "success";
}
jsp文件
<form action="${pageContext.request.contextPath}/editUsers" method="post">
<table border="1" width="50%">
<tr>
<td>选择</td>
<td>用户名</td>
</tr>
<tr>
<td> <input name="users[0].id" value="1" type="checkbox"></td>
<td> <input name="users[0].username" value="tome" type="text"></td>
</tr>
<tr>
<td> <input name="users[1].id" value="2" type="checkbox"></td>
<td> <input name="users[1].username" value="jasons" type="text"></td>
</tr>
</table>
<input type="submit" value="修改">
</form>
<%--使用包装pojo类型时,需要满足以下两点--%>
<%--1.如果查询条件参数是包装类的直接基本属性,则参数直接用对应的属性名
2.如果查询条件参数是包装类中pojo的子属性,则参数名必须为【对象.属性】,对象要和包装pojo中的对象属性名一致,
属性要和包装pojo中的对象子属性一致。例如:users[1].username--%>
SpringMVC中的数据绑定(也就是参数的接收)的更多相关文章
- SpringMVC中,前台jsp封装参数,绑定参数,传递参数到后台controller的过程详解
前台到后台的流程:前台jsp->后台:controller控制器层->service业务层->DAO数据访问层->数据库model模型层. 从上面流程可知,前台jsp的数据,想 ...
- SpringMVC中向服务器传递时间参数时出现的问题
1. 问题描述: 今天在SpringMVC应用中上传参数的时候遇到如下问题: The request sent by the client was syntactically incorrect 这说 ...
- springmvc中ModelAttribute注解应用在参数中
可以用@ModelAttribute来注解方法参数或方法.带@ModelAttribute创建的参数对象会被添加到Model对象中.注解在参数上时,可以从Form表单或URL参数中获取参数并绑定到mo ...
- SpringMVC中参数的传递(一)
前言 1.首先,我们在web.xml里面配置前端控制器DispatcherServlet以及字符编码过滤器(防止中文乱码),配置如下: <?xml version="1.0" ...
- 详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]
目录 前言 现象 源码分析 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口介绍 HandlerMethodArgumen ...
- 详解SpringMVC中Controller的方法中参数的工作原理——基于maven
转自:http://www.tuicool.com/articles/F7byQn 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:ht ...
- 【MVC - 参数原理】详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]
前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/spring ...
- SpringMVC中的参数绑定总结
众所周知,springmvc是用来处理页面的一些请求,然后将数据再通过视图返回给用户的,前面的几篇博文中使用的都是静态数据,为了能快速入门springmvc,在这一篇博文中,我将总结一下springm ...
- 【SpringMVC学习05】SpringMVC中的参数绑定总结——较乱后期准备加入 同一篇幅他人的参数绑定
众所周知,springmvc是用来处理页面的一些请求,然后将数据再通过视图返回给用户的,前面的几篇博文中使用的都是静态数据,为了能快速入门springmvc,在这一篇博文中,我将总结一下springm ...
随机推荐
- linux 网卡的混杂模式的取消
1.Linux下网卡常用的几种模式说明: 广播方式:该模式下的网卡能够接收网络中的广播信息. 组播方式:设置在该模式下的网卡能够接收组播数据. 直接方式:在这种模式下,只有目的网卡才能接收该数据. 混 ...
- Oracle 史上最全近百条Oracle DBA日常维护SQL脚本指令
史上最全近百条Oracle DBA日常维护SQL脚本指令 https://mp.weixin.qq.com/s?__biz=MjM5MDAxOTk2MQ==&mid=2650281305&am ...
- Lightoj 1128 - Greatest Parent
Gate 倍增模板,在一个严格小根堆中,给定$x,y$,求$x$的祖先中$≥y$的最高点. 注意清零 #include<cstdio> #include<iostream> # ...
- Entity Framework Core系列之实战(ASP.NET Core MVC应用程序)
本示例演示在ASP.NET 应用程序中使用EF CORE创建数据库并对其做基本的增删改查操作.当然我们默认你的机器上已经安装了.NET CORE SDK以及合适的IDE.本例使用的是Visual St ...
- 第二部分之RDB持久化(第十章)
RDB持久化功能所生成的RDB文件是一个经过压缩的二进制文件,通过该文件可以还原生成RDB文件时的数据库状态.(数据库状态:服务器中的非空数据库以及它们的键值对统称为数据库状态) 一.RDB文件的创建 ...
- Flask Session 使用和源码分析 —— (6)
基本使用 from flask import Flask, session, redirect, url_for, escape, request app = Flask(__name__) @app ...
- locust安装及其简单使用----基于python的性能测试工具
1.已安装python3.6 ,安装步骤略 pip安装: pip install locust 检查locust是否安装成功 locust --help 2.安装 pyzmq If you inten ...
- MacOS搭建本地服务器
MacOS搭建本地服务器 一,需求分析 1.1,开发app(ios android)时通常需往app中切入web页面,直接导入不行,故需搭建本地的测试网站服务,通过IP嵌入访问页面. 1.2,开发小程 ...
- 作业二:分布式版本控制系统Git的安装与使用
作业要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2097 1.下载安装配置用户名和邮箱. (1)下载安装Github配置 ...
- Web App架构
Web App 架构分为两种:一种是工程架构,一种是项目架构. 工程架构则主要有以下几个方面的内容: 1, 解放生产力,我们希望在开发项目的过程中把全部目光都放到书写业务代码上,不需要去考虑一些重复性 ...