Javaweb学习笔记(数据绑定)
数据绑定介绍
在执行过程中,Spring MVC会根据客户端请求参数的不同,将请求参数中的信息一一低昂方式转换并绑定到控制器类的方法参数中,这种请求消息数据与后台参数建立连接的过程就是Spring MVC的数据绑定。
在数据绑定中Spring MVC框架会通过数据绑定组件将请求参数串的内容进行类型转换,然后转换后的值赋给控制器类中方法的形参这样后台方法就可以绑定并获取客户端请求携带的参数了。
信息处理过程的步骤如下:
1.Spring MVC将ServletRequest对象传递给DataBinder
2.将处理方法的入参对象传递给DataBinder
3.DataBinder调用ConversionService组件进行数据类型转换、数据格式化等工作,并将ServletRequest对象中的消息体填充到参数对象中。
4.调用Validator组件对已经绑定了请求消息数据的参数对象进行数据合法性校验。
5.校验完成后会生成数据绑定结果BindingRequest对象,Spring MVC会将BindResult对象中的内容赋给处理方法的相应参数
简单数据绑定
绑定默认数据类型
当请求参数比较简单,可以在后台方法的形参中直接使用SpringMVC提供的默认参数类型进行数据绑定。常用默认参数类型如下:
1.HttpServletRequest:通过request对象获取请求信息
2.HttpServletResponse:通过response处理响应信息
3.HttpSession:通过session对象得到session中存储的对象
4.Model/ModelMap:Model是一个接口,ModelMap是一个接口实现,作用是将model数据填充到request域
示例:
(1)在Eclipse中,创建一个名为dongtai的web项目。然后将Sring MVC相应的包导入。
(2)在web.xml中,配置Spring MVC的前端控制器等信息
(3)在src目录下,创建Spring MVC的核心配置文件spring-config.xml,在该文件中配置组件扫描器和视图解析器
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.itheima.controller"/>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--设置前缀-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--设置后缀-->
<property name="suffix" value=".jsp"/>
</bean>
</beans>
(4)在src目录CIA创建一个com.itheima.controller包,在包下创建一个用于用户操作的控制器类UserController,
package com.itheima.controller;
import org.springframework.ui.Model;
import org.springframework.stereotype.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class UserController {
@RequestMapping("selectUser")
public String selectUser(HttpServletRequest request){
String id=request.getParameter("id");
System.out.println("id="+id);
return "success";
}
}
(5)在WEB-INF目录下创建一个jsp文件夹,创建success.jsp文件
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
ok
</body>
</html>
(6)启动tomcat,访问:http://localhost:9090/bangding/selectUser?id=1
绑定简单数据类型
简单数据类型绑定就是指Java中几种基本数据类型的绑定。
示例:
(1)修改控制器类,将控制器类UserController中的selectUser()方法的参数修改为使用简单数据类型的形式
package com.itheima.controller;
import org.springframework.ui.Model;
import org.springframework.stereotype.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAn