springmvc(三) 参数绑定、

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

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

                          --WZY

一、参数绑定

      1.1、什么是参数绑定?

        客户在浏览器端会提交一些参数到服务器端,比如用户的登录等,就会传username 和 password过来,springmvc则通过参数绑定组件将请求参数的内容进行数据转换,然后将转换后的值覆给controller方法的形参,这就是参数绑定的过程,其实,springmvc就是使用controller方法形参来接收请求的参数

      1.2、springmvc默认支持的参数类型

        可以在Controller方法的形参中直接使用以下类型

          HttpServletRequest、HttpServletResponse、HttpSession:这三个很熟悉,不做解释

          Model/ModelMap:将model数据填充到request域,比如之前的ModelAndView对象添加list,其实就是将list添加到request作用域,只是ModelAndView对象不仅能够添加model数据,还能够添加视图。而Model对象的功能就只有将model数据填充到request作用域

          

        如图所示,就是这样,在形参中使用这几个对象,那么在方法中就能直接用这几个对象了。有了request对象,就能够使用我们以前学过的老方法获取请求参数等一些信息了。

      1.3、绑定简单类型的参数

        上面讲解的只是默认支持的参数类型,有request等一些对象,必然是很好很方便的一件事,比如获取请求参数就可以得到解决了,但是springmvc提供更强大一些的功能。

        绑定简单类型的参数规则:

          1.3.1、如果请求参数的key和Controller类中方法的形参名称一致,那么就直接绑定;

            请求url:http://localhost:8080/ssm_test/editItems.do?id=2 模拟客户端发送了一个id=2的请求参数过来,这里使用的是get方式,如果post方式也是一样的道理

            Controller方法:

                

            分析:形参中的名称与请求参数的名称相同,固可以直接绑定。

          1.3.2、如果请求参数的key和Controller类中方法的形参名称不一致,那么就需要使用@RequestParam注解来进行参数绑定

            请求url:http://localhost:8080/ssm_test/editItems.do?itemsId=2 模拟客户端发送了一个id=2的请求参数过来

            Controller方法:

                

            分析:使用@RequestParam("itemsId")注解将名为itemsId的请求参数的值赋值给形参中名为id的参数。注意,在对应的形参前面加该注解。

      1.4、绑定pojo

        使用springmvc绑定pojo的参数时,要求jsp中input框的name值要和Controller方法形参的pojo对象中的属性名称一致,如下图

          jsp页面

              

          controller方法

                

          Items类

              

      1.5、参数绑定时日期类型转换问题

        在我们从jsp页面传过来的参数的类型都是object的,而我们自己编写的是有具体类型的,比如id是需要int型,name是需要string型,而springmvc就会帮我们将这些简单的类型自动进行类型转换,但是当遇到Date类型的时候,就转换不了,需要我们自己写一个类型转换器,然后给适配器配上,从而jsp传过来的参数能够转换成我们需要的日期类型,如果不自定义类型转换器的话,会报错             即把请求中的日期字符串转成java的日期类型,该日期类型与pojo中日期属性的类型保持一致            

        1.5.1、自定义Converter

              

DateConverter.java
  

        1.5.2、在springmvc.xml中配置该转换器

          第一种方式(推荐):两步搞定

            修改mvc:annotation-driven的配置

            配置自定义转换器绑定

              

springmvc.xml中配置日期转换器

          第二种方式:

              

View Code

      1.6、包装pojo参数绑定

        与1.4的pojo参数绑定的区别在于,这里将pojo放入一个包装类中,如下图,将Items类放入了ItemsQueryVO类中,ItemsQueryVO就是一个包装pojo

          ItemsQueryVO

            

          jsp

                  

          controller:直接使用包装pojo接收

            

            

      1.7、集合参数的绑定

        1.7.1、简单类型的集合参数绑定,可以使用数组或者List来接收

        比如jsp页面有一些多选框,复选框,这样提交过来,就需要使用集合参数的绑定了。

        jsp

          

        controller

          使用数组来接收

            形参中的数组类型要和jsp中值的类型一致,形参中的参数名称要和jsp中name一致。也就是itemsid

              

          使用list来接收

            形参中list的泛型跟jsp中的值的类型一致,形参中参数名称要和jsp中name一致。(我们想象中是这样)

                  

            结果,会报错,嘿嘿,因为不能在形参中直接定义List类型的参数,如果想要使用list来接收,需要把List类型的参数定义在包装POJO中,Controller的方法形参使用该包装POJO,下面讲解。所以如果使用接收简单类型的集合参数,使用数组最为方便。

        1.7.2、pojo类型的集合参数绑定,可以使用数组或者list来接收

          注意:pojo类型的集合参数绑定时,接收它的数组或者List,都不能直接定义在Controller方法形参上,需要把它定义到一个包装pojo中,如何把这个包装pojo放到形参

          使用list。

          包装pojo类 ItemsQueryVo, 将需要装items集合的对象放入包装类中。

              

          jsp

              

          这里注意:标记的是name属性,不要与value属性搞混淆了,在ItemsQueryVo中有名为itemsList的list,所以在jsp中的name就需要一层层匹配下去才能正确将其属性值装载到正确的位置,list的格式为:itemsList[下标].name。 就拿这个分析,itemsList就可以找打ItemsQueryVo中的itemsList, itemsList[1],就可以定位到itemsList中的第一个items,itemsList[1].name就可以定位到itemsList中的第一个items的name属性,这样一来就看得懂了。

          

          controller

                

        1.7.3、总结上面两种

          总结一下集合参数的绑定

            对于简单类型的集合参数绑定,则使用数组作为形参来接收请求的集合参数

            对于pojo类型的集合参数绑定,则使用数组或者list两者都可以,一般常用list。

              注意:这种pojo类型的集合参数绑定,必须将list或者数组作为一个包装类中的属性,然后使用该包装类对象作为形参来接收请求参数。       

        1.7.4、map集合类型绑定

          这个用的不多,一般只是用list,这个也稍微了解一下,等需要的时候会用即可,贴出关键代码就行

          同样,需要使用包装pojo类。

          ItemsQueryVo

            

          jsp:格式为下面这样。就能够匹配到

            

          controller

            

    

二、总结

      看了这么多中参数绑定的例子,我觉得用一句话来概括最为准确,万变不离其宗。有耐心看一下就自然就会用了,真的很简单。只是知识比较多比较细,需要理解的也不多。

相关文章
|
4天前
|
设计模式 前端开发 Java
步步深入SpringMvc DispatcherServlet源码掌握springmvc全流程原理
通过对 `DispatcherServlet`源码的深入剖析,我们了解了SpringMVC请求处理的全流程。`DispatcherServlet`作为前端控制器,负责请求的接收和分发,处理器映射和适配负责将请求分派到具体的处理器方法,视图解析器负责生成和渲染视图。理解这些核心组件及其交互原理,有助于开发者更好地使用和扩展SpringMVC框架。
22 4
|
21天前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
64 2
|
2月前
|
JSON 前端开发 Java
SSM:SpringMVC
本文介绍了SpringMVC的依赖配置、请求参数处理、注解开发、JSON处理、拦截器、文件上传下载以及相关注意事项。首先,需要在`pom.xml`中添加必要的依赖,包括Servlet、JSTL、Spring Web MVC等。接着,在`web.xml`中配置DispatcherServlet,并设置Spring MVC的相关配置,如组件扫描、默认Servlet处理器等。然后,通过`@RequestMapping`等注解处理请求参数,使用`@ResponseBody`返回JSON数据。此外,还介绍了如何创建和配置拦截器、文件上传下载的功能,并强调了JSP文件的放置位置,避免404错误。
|
2月前
|
前端开发 Java 应用服务中间件
【Spring】Spring MVC的项目准备和连接建立
【Spring】Spring MVC的项目准备和连接建立
64 2
|
3月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
2月前
|
XML 前端开发 Java
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
本文阐述了Spring、Spring Boot和Spring MVC的关系与区别,指出Spring是一个轻量级、一站式、模块化的应用程序开发框架,Spring MVC是Spring的一个子框架,专注于Web应用和网络接口开发,而Spring Boot则是对Spring的封装,用于简化Spring应用的开发。
175 0
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
|
3月前
|
XML 缓存 前端开发
springMVC02,restful风格,请求转发和重定向
文章介绍了RESTful风格的基本概念和特点,并展示了如何使用SpringMVC实现RESTful风格的请求处理。同时,文章还讨论了SpringMVC中的请求转发和重定向的实现方式,并通过具体代码示例进行了说明。
springMVC02,restful风格,请求转发和重定向
|
4月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
4月前
|
XML JSON 数据库
SpringMVC入门到实战------七、RESTful的详细介绍和使用 具体代码案例分析(一)
这篇文章详细介绍了RESTful的概念、实现方式,以及如何在SpringMVC中使用HiddenHttpMethodFilter来处理PUT和DELETE请求,并通过具体代码案例分析了RESTful的使用。
SpringMVC入门到实战------七、RESTful的详细介绍和使用 具体代码案例分析(一)
|
4月前
|
前端开发 应用服务中间件 数据库
SpringMVC入门到实战------八、RESTful案例。SpringMVC+thymeleaf+BootStrap+RestFul实现员工信息的增删改查
这篇文章通过一个具体的项目案例,详细讲解了如何使用SpringMVC、Thymeleaf、Bootstrap以及RESTful风格接口来实现员工信息的增删改查功能。文章提供了项目结构、配置文件、控制器、数据访问对象、实体类和前端页面的完整源码,并展示了实现效果的截图。项目的目的是锻炼使用RESTful风格的接口开发,虽然数据是假数据并未连接数据库,但提供了一个很好的实践机会。文章最后强调了这一章节主要是为了练习RESTful,其他方面暂不考虑。
SpringMVC入门到实战------八、RESTful案例。SpringMVC+thymeleaf+BootStrap+RestFul实现员工信息的增删改查
下一篇
DataWorks