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中的数据绑定(也就是参数的接收)的更多相关文章

  1. SpringMVC中,前台jsp封装参数,绑定参数,传递参数到后台controller的过程详解

    前台到后台的流程:前台jsp->后台:controller控制器层->service业务层->DAO数据访问层->数据库model模型层. 从上面流程可知,前台jsp的数据,想 ...

  2. SpringMVC中向服务器传递时间参数时出现的问题

    1. 问题描述: 今天在SpringMVC应用中上传参数的时候遇到如下问题: The request sent by the client was syntactically incorrect 这说 ...

  3. springmvc中ModelAttribute注解应用在参数中

    可以用@ModelAttribute来注解方法参数或方法.带@ModelAttribute创建的参数对象会被添加到Model对象中.注解在参数上时,可以从Form表单或URL参数中获取参数并绑定到mo ...

  4. SpringMVC中参数的传递(一)

    前言 1.首先,我们在web.xml里面配置前端控制器DispatcherServlet以及字符编码过滤器(防止中文乱码),配置如下: <?xml version="1.0" ...

  5. 详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]

    目录 前言 现象 源码分析 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口介绍 HandlerMethodArgumen ...

  6. 详解SpringMVC中Controller的方法中参数的工作原理——基于maven

    转自:http://www.tuicool.com/articles/F7byQn 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:ht ...

  7. 【MVC - 参数原理】详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]

    前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/spring ...

  8. SpringMVC中的参数绑定总结

    众所周知,springmvc是用来处理页面的一些请求,然后将数据再通过视图返回给用户的,前面的几篇博文中使用的都是静态数据,为了能快速入门springmvc,在这一篇博文中,我将总结一下springm ...

  9. 【SpringMVC学习05】SpringMVC中的参数绑定总结——较乱后期准备加入 同一篇幅他人的参数绑定

    众所周知,springmvc是用来处理页面的一些请求,然后将数据再通过视图返回给用户的,前面的几篇博文中使用的都是静态数据,为了能快速入门springmvc,在这一篇博文中,我将总结一下springm ...

随机推荐

  1. (十)Modifying Your Data

    Elasticsearch provides data manipulation and search capabilities in near real time. By default, you ...

  2. 洛谷P1238 走迷宫题解

    题目描述 有一个m*n格的迷宫(表示有m行.n列),其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走,文件读入这m*n个数据和起始点.结束点(起始点和结束点都是用两个数据来描述的,分别表示 ...

  3. 20175310 《Java程序设计》第9周学习总结

    20175310 <Java程序设计>第9周学习总结 本周博客:https://www.cnblogs.com/xicyannn/p/10785915.html 教材学习内容总结 这周学习 ...

  4. 分布式任务调度平台XXL-JOB搭建教程

    关于分布式任务调度平台XXL-JOB,其实作者 许雪里 在其发布的中文教程中已经介绍的很清楚了,这里我就不做过多的介绍了,关于其搭建教程,本人依照其文档搭建起来基本上也没遇到啥问题,这里通过博客的形式 ...

  5. Linux 修改本地时间 (centos为例)

    1.  tzselect [root@xxxx etc]# tzselect --- 选择时区命令 Please identify a location so that time zone rules ...

  6. [Alpha阶段]第二次Scrum Meeting

    Scrum Meeting博客目录 [Alpha阶段]第二次Scrum Meeting 基本信息 名称 时间 地点 时长 第二次Scrum Meeting 19/04/04 大运村寝室6楼 90min ...

  7. vue.js实战——splice使用

    Vue在检测到数组变化时,并不是直接重新渲染整个列表,而是最大化地复用DOM元素.替换的数组中含有相同元素的项不会被重新渲染,因此可以大胆地用新数组来替换就数组,不用担心性能问题. 需要注意的是,以下 ...

  8. spring4配置文件详解

    转自: spring4配置文件详解 一.配置数据源 基本的加载properties配置文件 <context:property-placeholder location="classp ...

  9. centos值cron-计划任务

    一.crond简介 crond是Linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具.并且会自动启动cro ...

  10. DAY17、常用模块

    一.time模块 1.时间戳(timestamp):time.time()     #可以作为数据的唯一标识   是相对于1970-1-1-0:0:0时间插值 2.延迟线程的运行:time.sleep ...