SpringMvc学习笔记——参数获取/绑定/驱动

其实就是获取前台提交的参数,随便怎么叫,有人喜欢叫参数绑定,有人喜欢叫参数驱动,我觉得参数获取最直白。

简单参数:(Integer、String、Float、Double、Boolean)

  • 实例:

jsp页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>






	
id: name:

处理器:注意,如果是新建的测试包,别忘了配置扫描此包,使注解生效。

package hh.test;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class TestGetParameter {

	@RequestMapping("/testBaseParameter.action")
	public void getBaseParameter(Integer id,String name) {
		
		System.out.println("id:"+id+"  name:"+name);
	}
}

表单提交页面:

SpringMvc学习笔记——参数获取/绑定/驱动_第1张图片

提交结果:

  • 控制台:可以看到因为我写的处理器是没有返回值的,但是SpringMVC还是会自动去获取ModelAndView,因为我未设置View,他自动将我上一步提交的路径作为View路径,所以提示404,前台页面同样出现404。

  • 不过我们的目的达到了,获取到了前台提交的基本类型的数据。注意使用这种方式时,前台提交的参数不能有空(null)值。

DEBUG [http-nio-8080-exec-7] - POST "/ssm/testBaseParameter.action", parameters={masked}
DEBUG [http-nio-8080-exec-7] - Mapped to public void hh.test.TestGetParameter.getBaseParameter(java.lang.Integer,java.lang.String)
id:111  name:胡胡
DEBUG [http-nio-8080-exec-7] - View name 'testBaseParameter', model {}
DEBUG [http-nio-8080-exec-7] - Forwarding to [testBaseParameter]
DEBUG [http-nio-8080-exec-7] - Completed 404 NOT_FOUND
  • 浏览器: 

SpringMvc学习笔记——参数获取/绑定/驱动_第2张图片

 

对象类型参数(实体类bean):

以User对象为例:

  • User对象有以下属性:
	private Integer id;
	private String name;
	private String address;
	private String sex;
  • 提交表单:
id:
name:
sex:
address:
  • 处理器方法:
	@RequestMapping("/testBeanParameter.action")
	public void getBaseParameter(User user) {
		
		System.out.println(user);
	}
  • 提交表单内容:

SpringMvc学习笔记——参数获取/绑定/驱动_第3张图片

  • 提交结果:
    • 控制台:
DEBUG [http-nio-8080-exec-3] - POST "/ssm/testBeanParameter.action", parameters={masked}
DEBUG [http-nio-8080-exec-3] - Mapped to public void hh.test.TestGetParameter.getBaseParameter(hh.pojo.User)
User [id=111, name=胡胡, sex=男, address=山东省]
DEBUG [http-nio-8080-exec-3] - View name 'testBeanParameter', model {user=User [id=111, name=胡胡, sex=男, address=山东省], org.springframework.validation.BindingResult.user=org.springframework.validation.BeanPropertyBindingResult: 0 errors}
DEBUG [http-nio-8080-exec-3] - Forwarding to [testBeanParameter]
DEBUG [http-nio-8080-exec-3] - Completed 404 NOT_FOUND
    • 页面:

SpringMvc学习笔记——参数获取/绑定/驱动_第4张图片

可以看到,表单提交的内容也成功封装到了对象中,说明测试成功。

注意:使用对象驱动时,提交表单元素的name属性值要与对应的对象属性名一致。

 

包装类类型(即,类中有对象类型的引用作为属性):

如:Users.java类中,有如下属性:

private Integer number;

private User user;

其中,User对象是一个引用类型的属性。这种情况下,如果想将前台提交的参数直接封装到Users对象中的User引用中,就是属于包装类驱动。

这种情况下,有点经验的程序员都可以猜到如何书写代码。

  • 处理器代码:
	@RequestMapping("/testBeanParameter.action")
	public void getBaseParameter(Users users) {
		
		System.out.println(users.user);
	}
  • 提交表单:
id:
name:
sex:
address:

只要稍微小改下标签的name属性就可以了。这里不再做测试了。

SpringMVC还提供了自定义类型的参数获取,比如获取日期时间,有的网站喜欢特立独行,搞个特殊的日期格式,如:1999*9*9,这时,SpringMVC可能无法自动将此字符串封装到Date类型的属性中,这时就可以自定义一个解析器,来解析此类型的字符串。这种情况虽然不常见,但是也要了解下,大致上就是实现一个接口,在一个方法中的定义自己的封装规则,想要具体了解的可以自己找度娘,这里就不详细说了。

你可能感兴趣的:(框架学习)