参数绑定的过程:就是页面向后台传递参数,后台接受的一个过程。

默认支持的参数类型:(就是你在方法上以形参的形式去定义一下的类型,就可以直接使用它)

  • HttpServletRequest
  • HttpServletResponse
  • HttpSession
  • Model/ModelMap;前面这个是一个接口,后面试一个实现类。

    作用:就是把数据放到request域。

1.支持简单的数据类型绑定:(页面的name属性必须和你定义的参数名一致)

  • Integer
  • String
  • ......

例:

 public String test_user(int sid,String name){
//int sid等价于 request.getparameter("sid");
System.out.println(sid+"="+nam);
return "hello";
}

如果想要名字不一样,要使用:@RequestParam

 //value:对应页面的name属性
//required:是否必须
//defaultValue:默认值
public String test_user(@RequestParam(value="sid",required=true) int sbid,@RequestParam(value="name")String sbname){
System.out.println(sbid+"="+sbname);
return "hello";
}

2.参数绑定之——实体类

  有一个要求:实体类的属性名必须和页面的name值一样。

  实体的属性:

  页面的name属性:

  

当然,实体类的绑定和简单数据类型的绑定不会相互影响,可以同时使用。

  

3.参数绑定之——包装的实体类(pojo,entity)绑定

Items.java

 package com.test.entity;

 public class Items {
private Student student; public Student getStudent() {
return student;
} public void setStudent(Student student) {
this.student = student;
} }

页面写法:

控制器写法:

此时,我们会有这么一个疑问:明明可以直接用student,为什么要多一层的包装?这就好比多裤子放屁多此一举?答案当然不是,它这么做一定是有意思所在的。

下面我们来看一下案例:

案例1:

  学生有: name

  教师有: name

如果要求页面同时向后台传输这两个名字,那你后台到底怎么接受????

案例2:

  做搜索的时候,多条件搜索(你能保证这些搜索条件都在一张表里面吗?),根据班级名,学生姓名,学号,教师,教室。这个时候我们可以对其进行封装,封装一个QueryItems类,专门用于查询。

4.参数绑定之——集合类型的绑定

  1. 数组类型的绑定:

    应用:批量删除

    需求:首先出现一个页面,里面有很多的数据,然后有一个批量删除的按钮,点击的时候,把这些数据都删了。

    页面:

 <c:forEach items="${list}" var="stu">
<tr>
<th><input type="checkbox" name="stu_id" value="${stu.sid }"> </th>
<th>${stu.sid }</th>
<th>${stu.name }</th>
<th>${stu.sex }</th>
<th>${stu.hobbies }</th>
</tr>
</c:forEach>

    控制器:

 @RequestMapping(value="deletemore")
public String deletemore(int [] stu_id){
for (int i : stu_id) {
System.out.println(i);
}
return "studentlist";
}

  2.List类型的绑定:

    应用:类似一些教务管理系统:成绩的批量录入,对于成绩的批量修改。

需求:现在需要我完成一个系统,里面可以批量修改学生的信息。

    思路:到一个页面,里面有一堆的学生要我们编辑,编辑完成点击提交,这些数据就会提交到我们的后台。

    页面:

        

       

        注意其中划线的地方连空格都不可以多加。

    控制器:

        

        

        要利用我们的包装类进行传输数据,不可以直接在方法上面声明形参。

    Items.java

 package com.test.entity;

 import java.util.List;

 public class Items {
private Student student;
private List<Student>list;//这个是批量修改学生的包装类 public List<Student> getList() {
return list;
} public void setList(List<Student> list) {
this.list = list;
} public Student getStudent() {
return student;
} public void setStudent(Student student) {
this.student = student;
} }

  3.Map类型的绑定:类比上面的List,这里就不说了。

数据回显 

1. springmvc会有自动回显的类型实体类(pojo)

   实体类的数据会在页面进入控制器后,springmvc会自动将自己的数据放到request作用域,并且他的key为该实体类的首字母小写。Student student  User user

   有值的写法:

      

     

   不按照首字母小写的情况:(证实取不到值)

      

2.简单的类型不会自动回显

   简单的类型就是:int,String,boolean……不会自动回显,就用一下携带参数的手段进行数据回显

3.常见的 携带参数的手段

    ModelAndView(数据是放在request的作用域)

 //常见的构造使用
//1.空的
ModelAndView mv = new ModelAndView();
Map<String, Student>map=new HashMap<String, Student>();
mv.addAllObjects(map);
mv.setViewName("hello");
//2.new ModelAndView(viewName,数据);
ModelAndView mv1 = new ModelAndView("hello",map);

    Model/ModelMap:可以在该方法的形参中声明,以下可以直接使用。

    @ModelAttribute可以把页面接收的值放入到request作用域

 @RequestMapping(value="model")
public String model(@ModelAttribute("stu") Student sb){
return "hello";
}

    @SessionAttributes:会自动把model中的数据放到session作用域。他是写在类上面的,并且属性名和model中的一致。

      Model中的名字叫  stu

 @RequestMapping(value="model2")
public String model2(Model model){
Student student= new Student(1, "傻大个", "男", "李胜");
model.addAttribute("stu",student);
return "hello";
}

      声明在类上,并且名字是stu

      

      Map:也是放在request作用域

        直接new一个Map<String, Student>mvp = new HashMap<String, Student>();是没有办法把值放到作用域的。我们需要在方法以形参的形式声明,才会把值放到request作用域:

SpringMVC(三) —— 参数绑定和数据回显的更多相关文章

  1. SpringMVC【参数绑定、数据回显、文件上传】

    前言 本文主要讲解的知识点如下: 参数绑定 数据回显 文件上传 参数绑定 我们在Controller使用方法参数接收值,就是把web端的值给接收到Controller中处理,这个过程就叫做参数绑定.. ...

  2. springMVC参数绑定与数据回显

    简单例子:修改商品信息的jsp页面: 参数绑定过程: 1.2.1  默认支持的参数类型 处理器形参中添加如下类型的参数处理适配器会默认识别并进行赋值. 1.1.1     HttpServletReq ...

  3. SpringMVC学习(四)———— 数据回显与自定义异常处理器

    一.数据回显技术 Springmvc默认支持对pojo类型的数据回显,默认不支持简单类型的数据回显 1.1.什么是数据回显? 在信息校验时,如果发生校验错误,那么把校验的数据信息,依然停留在当前页面, ...

  4. springmvc(三) 参数绑定、

    前面两章就介绍了什么是springmvc,springmvc的框架原理,并且会简单的使用springmvc以及ssm的整合,从这一章节来看,就开始讲解springmvc的各种功能实现,慢慢消化 --W ...

  5. SpringMVC第五篇【方法返回值、数据回显、idea下配置虚拟目录、文件上传】

    Controller方法返回值 Controller方法的返回值其实就几种类型,我们来总结一下-. void String ModelAndView redirect重定向 forward转发 数据回 ...

  6. SpringMVC学习--数据回显

    简介 表单提交失败需要再回到表单页面重新填写,原来提交的数据需要重新在页面上显示. 简单数据类型 对于简单数据类型,如:Integer.String.Float等使用Model将传入的参数再放到req ...

  7. springmvc(五) 数据回显与自定义异常处理器

    这章讲解一下springmvc的数据回显和自定义异常处理器的使用,两个都很简单 --WH 一.数据回显技术 Springmvc默认支持对pojo类型的数据回显,默认不支持简单类型的数据回显 1.1.什 ...

  8. SpringMVC由浅入深day02_5数据回显_6异常处理器

    5 数据回显 5.1 什么数据回显 表单提交失败需要再回到表单页面重新填写,原来提交的数据需要重新在页面上显示. 5.2 pojo数据回显方法 1.springmvc默认对pojo数据进行回显. po ...

  9. springMVC学习(8)-数据回显

    什么是数据回显: 提交后,如果出现错误(或者别的情况),将刚才提交的数据回显到刚才的提交页面. pojo数据回显方法: 一.springmvc默认对pojo数据进行回显. 比如现在的jsp页面提示出现 ...

随机推荐

  1. swfobject.js 2.2简单使用方法

    swfobject.js 2.2简单使用方法 官方网址介绍http://code.google.com/p/swfobject/wiki/documentation 用法:html部分<div ...

  2. angularjs factory,service,provider 自定义服务的不同

    angularjs框架学了有一段时间了,感觉很好用.可以把angularjs的app理解成php的class,controller是控制器,而内置服务和自定义服务就可以理解成models了.angul ...

  3. 自动化高效css开发,畅谈less的灵活变化

    css是一种让html与样式分离解析而出现的代码,它的出现大大提高了程序员的工作效率,和后期进行维护的效率.但是发展至今,由于起死板单调的写法,越来越不能满足程序员们灵活的思维,很多时候是种恨铁不成钢 ...

  4. ubuntu中vim找不到配色方案blackboard

    在ubuntu下启动vim,提示找不到配色方案blackboard(或其他的), 如何挑选自己喜欢的配色方案呢?在/usr/share/vim/vim72/colors中,(这里根据自己的vim版本选 ...

  5. Python成长之路第二篇(2)_列表元组内置函数用法

    列表元组内置函数用法list 元组的用法和列表相似就不一一介绍了 1)def append(self, p_object):将值添加到列表的最后 # real signature unknown; r ...

  6. MYSQL delete 从多人表中删除

    语法 1. delete table_list_A from table_list_B where bool_expression; 从delete_table_list_A 删除 bool expr ...

  7. 使用AES加密的帮助类

    在开发中经常使用加密/解密对一些内容进行处理,比如密码在存入数据库之前先经过加密处理等等,这里就把一个加密帮助类代码贴出来,供以后查找使用. 这个帮助类主要功能是对字符串和字节数组进行加密解密处理. ...

  8. Z-Stack协议中几个重要概念的理解

    1. 原语     ZigBee设备在工作时,各种不同的任务在不同的层次上执行,通过层的服务,完成所要执行的任务.每一层的服务主要完成两种功能:根据它的下层服务要求,为上层提供相应的服务:另一咱是根据 ...

  9. C#代码 json类

    using System; using System.Collections.Generic; using System.Collections; using System.Text; using S ...

  10. OpenFileDialog 害人的RestoreDirectory

    莫名其妙出现找不到文件的错误.经查,发现: OpenFileDialog,SaveFileDialog在选择文件后,会切换当前程序目录的路径(System.Environment.CurrentDir ...