第5章 数据绑定和表单标签库-Spring MVC开发技术指南(微课版)-陈恒-清华大学出版社

合集下载

SpringMVC数据绑定概述及原理详解

SpringMVC数据绑定概述及原理详解

SpringMVC数据绑定概述及原理详解数据绑定概述在执⾏程序时,Spring MVC根据客户端请求参数的不同,将请求消息中的信息以⼀定的⽅式转换并绑定到控制器类的⽅法参数中。

这种将请求消息数据与后台⽅法参数建⽴连接的过程就是 Spring MVC中的数据绑定。

在数据绑定过程中,Spring MVC框架会通过数据绑定组件(DataBinder)将请求参数串的内容进⾏类型转换,然后将转换后的值赋给控制器类中⽅法的形参,这样后台⽅法就可以正确绑定并获取客户端请求携带的参数。

具体的信息处理过程的步骤如下。

(1)Spring MVC将ServletRequest对象传递给 DataBinder。

(2)将处理⽅法的⼊参对象传递给 DataBinder。

(3) DataBinder调⽤ConversionService组件进⾏数据类型转换、数据格式化等⼯作,并将 ServletRequest对象中的消息填充到参数对象中。

(4)调⽤Validator组件对已经绑定了请求消息数据的参数对象进⾏数据合法性校验。

(5)校验完成后会⽣成数据绑定结果 BindingResult对象,Spring MVC会将BindingResult对象中的内容赋给处理⽅法的相应参数。

根据客户端请求参数类型和个数的不同,将 Spring Mvc中的数据绑定主要分为简单数据绑定和复杂数据绑定1.简单数据绑定绑定默认数据类型UserController.java:package com.ssm.controller;import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class UserController {@RequestMapping(value="/selectUser")public String selectUser(HttpServletRequest request) {String id=request.getParameter("id");System.out.println("id="+id);return "success";}}使⽤注解⽅式定义了⼀个控制器类,同时定义了⽅法的访问路径。

springmvc技术文档

springmvc技术文档

Spring MVC技术文档1.Spring MVC 框架介绍Spring 框架提供了构建Web 应用程序的全功能MVC 模块。

使用Spring 可插入的MVC 架构,可以选择是使用内置的Spring Web 框架还是Struts 这样的Web 框架。

通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和POI。

Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用JSP 技术。

Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

1)Spring MVC中的功能组件划分很细致,采用了面向方面的编程aop 技术更好的降低的程序的耦合度,也使得程序扩展起来非常方便、灵活。

2)Spring MVC性能非常优秀,能与Spring框架无缝集成,相比Struts2效率更快,Struts2由于采用了值栈、OGNL表达式、struts2标签库等,会导致应用的性能下降。

3)Spring MVC的学习难度小于Struts2,Struts2用不上的多余功能太多。

4)Spring MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分)1)以Controller为中心完成对系统流程的控制管理2)获取请求中提交的数据3)对传入参数进行验证4)根据请求调用相应业务逻辑完成数据处理5)将处理结果返回给视图6)国际化支持7)针对不同视图技术提供不同解析支持方案8)针对JSP视图技术提供标签库9)通过拦截器链实现面向方面编程完成系统级控制10)对文件上传、下载等常用功能的封装实现Spring MVC的方式主要有两种,一种是基于配置的方式来实现,另一种是基于注解的方式实现,重点主要为基于注解的方式来实现Spring MVC。

springmvc参数绑定原理

springmvc参数绑定原理

springmvc参数绑定原理Spring MVC参数绑定是一种将HTTP请求参数(通常是表单参数)绑定到控制器方法参数上的技术,它是SpringMVC框架的一个重要组成部分。

Spring MVC参数绑定分为两个步骤:参数解析和参数绑定。

首先,Spring MVC框架会将HTTP请求参数解析为一个个参数对象,这个过程叫做参数解析。

其次,Spring MVC框架会将这些参数对象绑定到控制器方法的参数上,这个过程叫做参数绑定。

在参数解析阶段,Spring MVC框架会根据客户端发送的请求类型(如GET或POST),将HTTP请求参数解析为一个个参数对象。

当请求类型为POST时,Spring MVC框架将通过HttpServletRequest.getParameterMap()方法获取参数列表,并根据参数名称(如username)创建一个参数对象,然后将其值(如tom)存储到这个参数对象中。

在参数绑定阶段,Spring MVC框架会根据控制器方法参数的类型(如String,int,Date等)将参数对象绑定到控制器方法的参数上。

比如,如果控制器方法的参数为String类型,那么Spring MVC框架会将参数对象的值(如tom)存储到这个参数上;如果控制器方法的参数为int类型,那么Spring MVC框架会将参数对象的值(如18)转换为int类型,然后存储到这个参数上。

此外,Spring MVC框架还支持参数校验,比如对参数的最大值、最小值、正则表达式等进行校验。

参数校验是一种安全措施,它可以确保参数的正确性,避免出现安全问题。

以上就是Spring MVC参数绑定的原理。

它允许我们将HTTP请求参数解析为参数对象,并将这些参数对象绑定到控制器方法参数上,这样就可以在控制器方法中对参数进行处理。

此外,Spring MVC框架还支持参数校验,这是一种安全措施,可以确保参数的正确性。

Spring Mvc 课件

Spring Mvc 课件
强大而直接的配置方式:将框架类和应用程序类都能作 为JavaBean配置,支持跨多个context的引用,例如(lìrú) ,在web控制器中对业务对象和验证器(validator)的引 用。
可适配、非侵入:可以根据不同的应用场景,选择合适 的控制器子类 (simple型、command型、form型、wizard 型、multi-action型或者自定义),而不是从单一控制器 (比如Action/ActionForm)继承。
业务模型还有一个很重要的模型那就是数据模型。数据模型主 要指实体对象的数据保存(持续化)。比如将一张订单保存到数据 库,从数据库获取订单。我们可以将这个模型单独列出,所有有关 数据库的操作只限制在该模型中。
第六页,共62页。
MVC设计(shèjì)思想
控制(Controller)可以理解为从用户接收请求, 将模型与 视图匹配在一起,共同完成用户的请求。划分控制层的作用也 很明显,它清楚地告诉你,它就是一个(yī ɡè)分发器,选择 什么样的模型,选择什么样的视图,可以完成什么样的用户请 求。控制层并不做任何的数据处理。
❖ 如果不作其它配置,会加载默认(mòrèn)组件
第二十一页,共62页。
在web.xml配DispatcherServlet
web.xml

<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
第十五页,共62页。
Spring MVC 特点(tèdiǎn)
可定制的本地化和主题(theme)解析:支持在JSP中可选择 地使用Spring标签库、支持JSTL、支持Velocity(不需要 (xūyào)额外的中间层)等等。

SpringMVC之表单标签库和校验注解

SpringMVC之表单标签库和校验注解

SpringMVC之表单标签库和校验注解Spring MVC 表单标签库Handler1 package com.wiggin.controller;23 import com.wiggin.entity.Student;4 import org.springframework.stereotype.Controller;5 import org.springframework.web.bind.annotation.GetMapping;6 import org.springframework.web.bind.annotation.RequestMapping;7 import org.springframework.web.servlet.ModelAndView;89 @Controller10 @RequestMapping("/tag")11 public class TagHandler {1213 @GetMapping("get")14 public ModelAndView get(){15 ModelAndView modelAndView = new ModelAndView("tag");16 Student student = new Student(1L,"张三",18);17 modelAndView.addObject("student",student);18 return modelAndView;1920 }21 }JSP1 <%--2 Created by IntelliJ IDEA.3 User: Administrator4 Date: 2020/8/55 Time: 19:176 To change this template use File | Settings | File Templates.7 --%>8 <%@ page contentType="text/html;charset=UTF-8" language="java" %>9 <%@ page isELIgnored="false" %>10 <%@ taglib prefix="form" uri="/tags/form" %>11 <html>12 <head>13 <title>Title</title>14 </head>15 <body>16 <h1>学⽣信息</h1>17 <form:form modelAttribute="student">18 学⽣ID:<form:input path="id"/></br>19 学⽣姓名:<form:input path="name"/></br>20 学⽣年龄:<form:input path="age"/></br>21 <input type="submit" value="提交">22 </form:form>23 </body>24 </html>1.前缀与定义JSTL标签库相似,前缀可以⾃定义,通常定义为form<%@ taglib prefix="form" uri="/tags/form" %>2.将form表三与模型数据进⾏绑定,通过modelAttribute的值设置为模型数据对应的key值Handler:modelAndView.addObject("student",student);JSP:<form:form modelAttribute="student">3.form表单完成绑定后,将模型数据的值定义到各个标签中,通过设置path属性完成,与Handler属性名⼀致。

SpringMVC数据绑定二(List、Set和Map类型)

SpringMVC数据绑定二(List、Set和Map类型)

SpringMVC数据绑定⼆(List、Set和Map类型)1.List类型绑定//联系信息类⽤户类的⼦属性public class ContactInfo {private String phone;private String address;//getting and setting............}//⽤户类public class User {private String name;private Integer age;private ContactInfo contactInfo;//getting and setting............@Overridepublic String toString() {return "User [name=" + name + ", age=" + age + ", contactInfo=" + contactInfo + "]";}}//List<User> 集合的包装类public class UserListForm {private List<User> users;public List<User> getUsers() {return users;}public void setUsers(List<User> users) {ers = users;}@Overridepublic String toString() {return "UserListForm [users=" + users + "]";}}//controller⽅法//http://127.0.0.1:8080/SpringMVC/list?users[0].name=Tom&users[0].age=20&users[1].name=Lucy&users[1].age=25&users[1].contactInfo.phone=10086@RequestMapping(value="list")@ResponseBodypublic String list(UserListForm userListForm) {return userListForm.toString();}结果显⽰:注意:若参数中users[20] 则⽣成的list对应的size为212.Set//Set<User> 集合的包装类public class UserSetForm {private Set<User> users;public UserSetForm() {//必须初始化,如若没有则报500错误Cannot get element with index 0 from Set of size 0 //getPropertyValue(AbstractNestablePropertyAccessor.java:661)中做判断。

SpringMVC框架学习指南

SpringMVC框架学习指南

springMVC框架学习指南V1.0SpringMVC 2.5& 3.0最大的特色就是URL自定义,Request参数自动绑定:来看一下基于注解的Controller 是如何定义做到这一点的,下面是使用注解的BbtForumController:清单 1. BbtForumController.javapackage com.baobaotao.web;import com.baobaotao.service.BbtForumService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.ModelAttribute;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import java.util.Collection;@Controller //<——①@RequestMapping("/forum.do")public class BbtForumController {@Autowiredprivate BbtForumService bbtForumService;@RequestMapping //<——②public String listAllBoard() {bbtForumService.getAllBoard();System.out.println("call listAllBoard method.");return "listBoard";}}从上面代码中,我们可以看出BbtForumController 和一般的类并没有区别,它没有实现任何特殊的接口,因而是一个地道的POJO。

课程教学日历-Spring MVC开发技术指南(微课版)-陈恒-清华大学出版社

课程教学日历-Spring MVC开发技术指南(微课版)-陈恒-清华大学出版社
章主要介绍了拦截器的概念、原理以及实际应用。通过本章的学习,理解拦截器的原理,掌握拦截器的实际应用。
第7章 数据验证(4学时)
本章重点讲解Spring MVC框架的输入验证体系。通过本章的学习,理解输入验证的流程,能够利用Spring的自带验证框架和JSR 303(Java验证规范)对数据进行验证。
教学日历
课程:JavaEE框架(SSM)开发总学时:64周学时:4
周次
授课内容
备注
1-3
4
4-5
5
6
7
8
9
9
10
10
11
12
13
14-16
第1章 Spring基础(12学时)
本章重点讲解Spring框架的基础知识。通过本章的学习,了解Spring框架的体系结构,理解Spring IoC与AOP的基本原理,了解Spring Bean的生命周期、实例化以及作用域,掌握Spring的事务管理。
第4章 类型转换和格式化(2学时)
本章主要学习类型转换器和格式化转换器。通过本章的学习,应该理解类型转换器和格式化转换器的原理,掌握类型转换器和格式化转换器的用法。
第5章 数据绑定和表单标签库(4学时)
本章主要讲解数据绑定、表单标签库以及JSON数据交互。通过本章的学习,理解数据绑定的基本原理,掌握表单标签库的用法,理解JSON数据交互的原理。
第10章 文件的上传和下载(2学时)
本章重点讲解如何使用Spring MVC框架进行文件的上传与下载。通过本章的学习,掌握Spring MVC框架单文件上传、多文件上传以及文件下载。
第11章 EL与JSTL(2学时)
本章主要介绍表达式语言(EL)和JSP标准标签库(JSTL)的基本用法。通过本章的学习,掌握EL表达式语法,掌握EL隐含对象,了解什么是JSTL,掌握JSTL的核心标签库。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

示例代码如下:
<form:checkboxes items="${hobbys}" path="hobby" />
Spring MVC开发技术指南(微课版)
清华大学出版社
5.2.8 radiobutton标签
radiobutton标签,语法格式如下: <form:radiobutton path="xxx" value="xxx"/> 多个path相同的radiobutton标签,它们是一个选项组, 只允许单选。
Spring MVC开发技术指南(微课版)
清华大学出版社
5.2.9 radiobuttons标签
radiobuttons标签渲染多个radio,是一个选项组,等价于 多个path相同的radiobutton标签。radiobuttons标签,语法格 式如下:
<form:radiobuttons path="xxx" items="xxx"/> 该标签的itemLabel和itemValue属性与checkboxes标签的 itemLabel和itemValue属性完全一样,但只允许单选。
5.2.4 hidden标签
5.2.5 textarea标签
Spring MVC开发技术指南(微课版)
清大学出版社
5.2.6 checkbox标签
checkbox标签,语法格式如下: <form:checkbox path="xxx" value="xxx"/> 多个path相同的checkbox标签,它们是一个选项组,允许 多选。选项值绑定到一个数组属性。示例代码如下: <form:checkbox path="friends" value="张三"/>张三 <form:checkbox path="friends" value="李四"/>李四 <form:checkbox path="friends" value="王五"/>王五 <form:checkbox path="friends" value="赵六"/>赵六
</form:form>
return "userAdd";
}
Spring MVC开发技术指南(微课版)
清华大学出版社
5.2.2 input标签
input标签,语法格式如下: <form:input path="xxx"/> path属性将文本框输入值绑定到form backing object的一 个属性。 5.2.3 password标签
<form:select path="xxx"> <form:options items="xxx"/>
</form:select> 该标签的itemLabel和itemValue属性与checkboxes标签 的itemLabel和itemValue属性完全一样。
Spring MVC开发技术指南(微课版)
@RequestMapping(value = "/input")
<form:form modelAttribute="user"
public String inputUser(Model model) { ……
method="post" action="user/save"> ……
model.addAttribute("user", new User());
Spring MVC开发技术指南(微课版)
清华大学出版社
5.2.1 表单标签
<form:form modelAttribute="xxx" method="post" action="xxx"> ……
</form:form>
modelAttribute:暴露form backing object的模型属性 名称,缺省为command。
Spring MVC开发技术指南(微课版)
清华大学出版社
5.2.10 select标签
<form:select path="xxx" items="xxx" /> 或
<form:select path="xxx"> <option value="xxx">xxx</option>
</ form:select> 或
itemLabel:items属性中指定的集合对象的属性,为每个
input元素提供label。
itemValue:items属性中指定的集合对象的属性,为每个
input元素提供value。
checkboxes标签语法格式如下:
<form:checkboxes items="xxx" path="xxx"/>
清华大学出版社
5.2.11 options标签
options标签生成一个select标签的选项列表。因此,需要 与select标签一同使用,具体用法参见5.2.10 select标签。
Spring MVC开发技术指南(微课版)
Spring MVC开发技术指南(微课版)
清华大学出版社
5.2.7 checkboxes标签
checkboxes标签渲染多个复选框,是一个选项组,等价于
多个path相同的checkbox标签。它有3个非常重要的属性:
items、itemLabel和itemValue。
items:用于生成input元素的Collection、Map或Array。
Spring MVC开发技术指南(微课版)
清华大学出版社
主要内容 数据绑定 表单标签库 数据绑定应用 JSON数据交互
Spring MVC开发技术指南(微课版)
清华大学出版社
5.2 Spring的表单标签库
JSP页面使用Spring表单标签库时,必须在JSP页面开头处声 明taglib指令,指令代码如下: <%@ taglib prefix="form" uri="/tags/form" %>
第5章 数据绑定和表单标签库
主要内容 数据绑定 表单标签库 数据绑定应用 JSON数据交互
Spring MVC开发技术指南(微课版)
清华大学出版社
5.1 数据绑定
在Spring MVC框架中,数据绑定有以下几层含义:绑定请 求参数输入值到领域模型(如3.2节)、模型数据到视图的绑 定(输入验证失败时)、模型数据到表单元素的绑定(如下拉 列表选项值由控制器初始化)。
相关文档
最新文档