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 ...
随机推荐
- 【Shell基础】字符串删除
案例:将金额18.中的点去掉,结果为18 #!/bin/shold_value=. new_value=`echo ${old_value%%.*}` echo $new_value ${filena ...
- c# 7.0 6.0 新语法
1.参考地址:https://docs.microsoft.com/zh-cn/dotnet/csharp/tutorials/exploration/csharp-7?tutorial-step=5 ...
- [Oracle运维工程师手记] 如何从trace 文件,判断是否执行了并行
[Oracle运维工程师手记系列]如何从trace 文件,判断是否执行了并行 客户说,明明指定了并行的hint,OEM 却报说没有并行,并且提供了画面. 客户的SQL文长这样: INSERT/*+ p ...
- Java 200+ 面试题补充② Netty 模块
让我们每天都能看到自己的进步.老王带你打造最全的 Java 面试清单,认真把一件事做到最好. 本文是前文<Java 最常见的 200+ 面试题>的第二个补充模块,第一模块为:<Jav ...
- Asible第三章:roles--小白博客
本节内容: 什么场景下会用roles? roles示例 一.什么场景下会用roles? 假如我们现在有3个被管理主机,第一个要配置成httpd,第二个要配置成php服务器,第三个要配置成MySQL服务 ...
- Ansible第一章:基础认识--小白博客
ansible Ansible:Ansible的核心程序Host Lnventory:记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root帐号密码,ip地址等等.可以通过file来 ...
- 关于mysql中unique的插入Duplicate key
MySQL数据库中 如果在后台中不做判断是否unique的column是否存在的话,直接把数据操作给dao层再传给DB的话,就会报重复的唯一值.如果确实是不希望先取出判断unique的column是否 ...
- Winform数据库连接app.config文件配置
1.添加配置文件 新建一个winform应用程序,类似webfrom下有个web.config,winform下也有个App.config;不过 App.config不是自动生成的需要手动添加,鼠标右 ...
- (PAT)L2-012 关于堆的判断 (最小堆)
题目链接:https://www.patest.cn/contests/gplt/L2-012 将一系列给定数字顺序插入一个初始为空的小顶堆H[].随后判断一系列相关命题是否为真.命题分下列几种: “ ...
- 软件工程(GZSD2015) 第三次作业
时间: 2015/4/17-2015/4/23 基本要求: 在之前编写的四则运算程序基础之上做如下改进: 请参照教材Page57:4.2-4.3节中内容,修改原程序,使之符合 "代码风格和设 ...