springmvc学习笔记(11)-springmvc注解开发之简单参数绑定

springmvc学习笔记(11)-springmvc注解开发之简单参数绑定


  • springmvc学习笔记11-springmvc注解开发之简单参数绑定

    • spring参数绑定过程
    • 默认支持的类型
    • 简单类型
    • pojo绑定
    • 自定义参数绑定实现日期类型绑定
    • springmvc和struts2的区别


本文主要介绍注解开发的简单参数绑定,包括简单类型、简单pojo以及自定义绑定实现类型转换

spring参数绑定过程

从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上。

springmvc中,接收页面提交的数据是通过方法形参来接收。而不是在controller类定义成员变更接收!!!!

默认支持的类型

直接在controller方法形参上定义下边类型的对象,就可以使用这些对象。在参数绑定过程中,如果遇到下边类型直接进行绑定。

  • HttpServletRequest:通过request对象获取请求信息
  • HttpServletResponse:通过response处理响应信息
  • HttpSession:通过session对象得到session中存放的对象
  • Model/ModelMap:model是一个接口,modelMap是一个接口实现。作用:将model数据填充到request域。

简单类型

通过@RequestParam对简单类型的参数进行绑定。如果不使用@RequestParam,要求request传入参数名称和controller方法的形参名称一致,方可绑定成功。

如果使用@RequestParam,不用限制request传入参数名称和controller方法的形参名称一致。

通过required属性指定参数是否必须要传入,如果设置为true,没有传入参数,报下边错误:

@RequestMapping(value="/editItems",method={RequestMethod.POST,RequestMethod.GET})
//@RequestParam里边指定request传入参数名称和形参进行绑定。
//通过required属性指定参数是否必须要传入
//通过defaultValue可以设置默认值,如果id参数没有传入,将默认值和形参绑定。
public String editItems(Model model,@RequestParam(value="id",required=true) Integer items_id)throws Exception {

pojo绑定

页面中input的name和controller的pojo形参中的属性名称一致,将页面中数据绑定到pojo。

注意:这里只是要求name和形参的属性名一致,而不是要求和形参的名称一致,这点不要混淆了,框架会进入形参内部自动匹配pojo类的属性名。(我没看源码,但应该是用反射实现的)

页面定义:

<table width="100%" border=1>
<tr>
    <td>商品名称</td>
    <td><input type="text" name="name" value="${itemsCustom.name }"/></td>
</tr>
<tr>
    <td>商品价格</td>
    <td><input type="text" name="price" value="${itemsCustom.price }"/></td>
</tr>

controller的pojo形参的定义:

public class Items {
    private Integer id;

    private String name;

    private Float price;

    private String pic;

    private Date createtime;

    private String detail;

自定义参数绑定实现日期类型绑定

对于controller形参中pojo对象,如果属性中有日期类型,需要自定义参数绑定。

将请求日期数据串传成日期类型,要转换的日期类型和pojo中日期属性的类型保持一致。本文示例中,自定义参数绑定将日期串转成java.util.Date类型。

需要向处理器适配器中注入自定义的参数绑定组件。

  • 自定义日期类型绑定
public class CustomDateConverter implements Converter<String,Date>{
    public Date convert(String s) {
        //实现 将日期串转成日期类型(格式是yyyy-MM-dd HH:mm:ss)

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        try {
            //转成直接返回
            return simpleDateFormat.parse(s);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //如果参数绑定失败返回null
        return null;

    }
}
  • 配置方式
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
<!-- 自定义参数绑定 -->
    <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <!-- 转换器 -->
        <property name="converters">
            <list>
                <!-- 日期类型转换 -->
                <bean class="com.iot.learnssm.firstssm.controller.converter.CustomDateConverter"/>
           </list>
        </property>
    </bean>

springmvc和struts2的区别

  • 1.springmvc基于方法开发的,struts2基于类开发的。

springmvc将url和controller方法映射。映射成功后springmvc生成一个Handler对象,对象中只包括了一个method。方法执行结束,形参数据销毁。springmvc的controller开发类似service开发。

  • 2.springmvc可以进行单例开发,并且建议使用单例开发,struts2通过类的成员变量接收参数,无法使用单例,只能使用多例。
  • 3.经过实际测试,struts2速度慢,在于使用struts标签,如果使用struts建议使用jstl。

作者@brianway更多文章:个人网站 | CSDN | oschina

时间: 2024-10-25 23:58:04

springmvc学习笔记(11)-springmvc注解开发之简单参数绑定的相关文章

SpringMVC学习笔记一:采用注解式搭建简单springMVC环境

搭建的环境使用的是maven项目 项目目录树: 搭建环境使用的jar包,pom.xml文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.or

springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定

springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定 springmvc学习笔记13-springmvc注解开发之集合类型參数绑定 数组绑定 需求 表现层实现 list绑定 需求 表现层实现 map绑定 本文主要介绍注解开发的集合类型參数绑定,包含数组绑定,list绑定以及map绑定 数组绑定 需求 商品批量删除,用户在页面选择多个商品.批量删除. 表现层实现 关键:将页面选择(多选)的商品id,传到controller方法的形參,方法形參使用数组接收页面请求的多个商

springmvc学习笔记(13)-springmvc注解开发之集合类型参数绑定

springmvc学习笔记(13)-springmvc注解开发之集合类型参数绑定 springmvc学习笔记13-springmvc注解开发之集合类型参数绑定 数组绑定 需求 表现层实现 list绑定 需求 表现层实现 map绑定 本文主要介绍注解开发的集合类型参数绑定,包括数组绑定,list绑定以及map绑定 数组绑定 需求 商品批量删除,用户在页面选择多个商品,批量删除. 表现层实现 关键:将页面选择(多选)的商品id,传到controller方法的形参,方法形参使用数组接收页面请求的多个商

springmvc学习笔记(9)-springmvc整合mybatis之controller

springmvc学习笔记(9)-springmvc整合mybatis之controller springmvc学习笔记9-springmvc整合mybatis之controller springmvcxml 配置webxml 编写Controller就是Handler 编写jsp 本文介绍如何配置springmvc配置文件和web.xml,以及如何编写controller,jsp springmvc.xml 在resources/spring文件下下创建springmvc.xml文件,配置处理

springmvc学习笔记(8)-springmvc整合mybatis之service

springmvc学习笔记(8)-springmvc整合mybatis之service springmvc学习笔记8-springmvc整合mybatis之service 定义service接口 在spring容器配置service 事务控制 本文记录如何整合service,包括定义spring接口,在spring容器配置service以及事务控制.让spring管理service接口. 定义service接口 public interface ItemsService { //商品查询列表 L

springmvc学习笔记(14)-springmvc校验

springmvc学习笔记(14)-springmvc校验 springmvc学习笔记14-springmvc校验 校验理解 springmvc校验需求 环境准备 配置校验器 在pojo中添加校验规则 捕获和显示校验错误信息 分组校验 本文主要介绍springmvc校验,包括环境准备,校验器配置,pojo张添加校验规则,捕获和显示检验错误信息以及分组校验简单示例. 校验理解 项目中,通常使用较多是前端的校验,比如页面中js校验.对于安全要求较高点建议在服务端进行校验. 服务端校验: 控制层con

springMVC学习笔记(一)-----springMVC原理

一.什么是springmvc springMVC是spring框架的一个模块,springMVC和spring无需通过中间整合层进行开发. springMVC是一个基于mvc的web框架. Spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出来: 二.mvc在b/s系统下的应用 mvc是个一个设计模式,大家都晓得,无需赘述了,直接看mvc在b/s系统下的应用: 1.用户发起request请求至控制器(Control

[SpringMVC]SpringMVC学习笔记一: springmvc原理及实例解析.

前言:今天来回顾下SpringMVC的开发原理, 使用图文并茂的方式 来解析其中的内幕, 我相信懂了其中的运行机制后, 对于面试中SpringMVC大家都可以说so easy了. 一, 图示法 第二张图的前端控制器应为DispatcherServlet. 看完图中的整体流程后, 我们再使用实际代码来说明每一步需要处理 的事情. 二. 代码示例 第一步: 用户发送请求, 前端控制器DispatcherServlet开始处理.在web.xml中配置前端控制器: 1 <servlet> 2 <

SpringMVC学习笔记七:SpringMVC的数据验证

SpringMVC支持JSR(Java Specification Requests, Java规范提案)303-Bean Validation数据验证规范,该规范的实现者很多,其中较常用的是 Hibernate Validator 需要加入的包pom.xml <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator --> <dependency> <groupId>org.hi