黑马程序员springmvc教程第二天:包装类型pojo参数绑定和集合类型绑定

合集下载

SpringMVC数据绑定-2

SpringMVC数据绑定-2

SpringMVC数据绑定-2在系列(4)中我们介绍了如何用@RequestParam来绑定数据,下面我们来看一下其它几个数据绑定注解的使用方法。

1.@PathVariable 用来绑定URL模板变量值,2.@CookieValue 用来绑定Cookie中的数据。

下面我们用获取Cookie中的sessionId做测试:在DataBindController添加cookiebind action,复制代码//@CookieValue Test@RequestMapping(value="/cookiebind", method = {RequestMethod.GET})public String cookieBind(HttpServletRequest request, Model model, @CookieValue(value="JSESSIONID", defaultValue="") String jsessionId){model.addAttribute("jsessionId", jsessionId);return "cookiebindresult";}复制代码在views文件夹中添加一个cookiebindresult.jsp视图复制代码<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>${jsessionId}</body></html>复制代码可以看到已经获取到了sessionId。

黑马程序员:JavaBean的属性类型

黑马程序员:JavaBean的属性类型

JavaBean中包含四种类型的属性,它们分别是简单属性(simple property)、索引属性(indexed property)、绑定属性(bound property)和约束属性(constrained property),首先对前两种属性进行介绍。

1、简单属性简单属性是非数组类型的属性,它的修改器必须接受一个参数,参数类型由属性的特性决定,可以是任意类型。

而简单属性的访问器仅仅是用于返回属性的值,它不接受任何参数,但它要返回一个值,返回值的类型必须与修改器所接收的参数类型一致。

public class Book {private double price;publicString getPrice() {return price;}public voidsetPrice(double price) {this.price= price;}}2、索引属性索引属性是数组类型的属性,JavaBean中需要对索引索性提供两对setter和getter方法,一对用于设置和获取数组本身,另一对用于设置和获取数组中的元素。

接下来就通过一个JavaBean来演示索引属性的定义,代码如例程所示。

class Person {// 索引属性hobbiesprivateString[] hobbies;// 设置和获取属性本身publicString[] getHobbies() {returnhobbies;}publicvoid setHobbies(String[] hobbies) {this.hobbies= hobbies;}// 设置和获取属性中的元素publicString getHobbies(int i) {returnhobbies;}publicvoid setHobbies(int i, String hobby) {hobbies= hobby;}}在例程所示的JavaBean中,定义了一个索引属性hobbies,为了使外界能够方便的操作该属性,提供了一对重载的setHobbies()方法和一对重载的getHobbies()方法,其中setHobbies(String hobbies)方法用于设置数组属性hobboes本身,而setHobbies(int i,String hobby)方法用于设置数组属性中的元素。

springmvc第一天课堂笔记

springmvc第一天课堂笔记

springmvc 第一天springmvc的基础知识课程安排:第一天:springmvc的基础知识什么是springmvc?springmvc框架原理(掌握)前端控制器、处理器映射器、处理器适配器、视图解析器springmvc入门程序目的:对前端控制器、处理器映射器、处理器适配器、视图解析器学习非注解的处理器映射器、处理器适配器注解的处理器映射器、处理器适配器(掌握)springmvc和mybatis整合(掌握)springmvc注解开发:(掌握)常用的注解学习参数绑定(简单类型、pojo、集合类型(明天讲))自定义参数绑定(掌握)springmvc和struts2区别第二天:springmvc的高级应用参数绑定(集合类型)数据回显上传图片json数据交互RESTful支持拦截器1springmvc框架1.1什么是springmvcspringmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。

(struts2与Spring整合的时候需要借助单独的jar包)springmvc是一个基于mvc的web框架。

1.2 mvc 在b/s 系统 下的应用mvc 是一个设计模式,mvc 在b/s 系统 下的应用:C 控制器比如struts2中的filter controller 接口用户请求, 响应request 请求M 模型(model) pojo action service dao请求模型进行处理处理结果返回V 视图 view视图渲染将模型数据填充到request 域response 响应b/s 系统下模型无法将数据填充到视图1.3 springmvc 框架第一步:发起请求到前端控制器(DispatcherServlet)第二步:前端控制器请求HandlerMapping 查找 Handler 可以根据xml 配置、注解进行查找第三步:处理器映射器HandlerMapping 向前端控制器返回Handler 第四步:前端控制器调用处理器适配器去执行Handler 第五步:处理器适配器去执行Handler第六步:Handler执行完成给适配器返回ModelAndView第七步:处理器适配器向前端控制器返回ModelAndViewModelAndView是springmvc框架的一个底层对象,包括Model和view第八步:前端控制器请求视图解析器去进行视图解析根据逻辑视图名解析成真正的视图(jsp)第九步:视图解析器向前端控制器返回View第十步:前端控制器进行视图渲染视图渲染将模型数据(在ModelAndView对象中)填充到request域第十一步:前端控制器向用户响应结果组件:1、前端控制器DispatcherServlet(不需要程序员开发)作用接收请求,响应结果,相当于转发器,中央处理器。

springmvc第二天课堂笔记

springmvc第二天课堂笔记

springmvc第二天高级知识复习:springmvc框架:DispatcherServlet前端控制器:接收request,进行responseHandlerMapping处理器映射器:根据url查找Handler。

(可以通过xml配置方式,注解方式)HandlerAdapter处理器适配器:根据特定规则去执行Handler,编写Handler时需要按照HandlerAdapter的要求去编写。

Handler处理器(后端控制器):需要程序员去编写,常用注解开发方式。

Handler处理器执行后结果是ModelAndView,具体开发时Handler返回方法值类型包括:ModelAndView、String(逻辑视图名)、void(通过在Handler形参中添加request和response,类似原始servlet开发方式,注意:可以通过指定response响应的结果类型实现json数据输出)View resolver视图解析器:根据逻辑视图名生成真正的视图(在springmvc中使用View对象表示)View视图:jsp页面,仅是数据展示,没有业务逻辑。

注解开发:使用注解方式的处理器映射器和适配器:<!--注解映射器 --><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandl erMapping"/><!--注解适配器 --><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandl erAdapter"/>在实际开发,使用<mvc:annotation-driven>代替上边处理器映射器和适配器配置。

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框架还支持参数校验,这是一种安全措施,可以确保参数的正确性。

黑马程序员springmvc教程第二天:拦截器(1)

黑马程序员springmvc教程第二天:拦截器(1)

拦截器拦截定义定义拦截器,实现HandlerInterceptor接口。

接口中提供三个方法。

publicclass HandlerInterceptor1implements HandlerInterceptor { //进入 Handler方法之前执行//用于身份认证、身份授权//比如身份认证,如果认证通过表示当前用户没有登陆,需要此方法拦截不再向下执行@Overridepublicboolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {//return false表示拦截,不向下执行//return true表示放行returnfalse;}//进入Handler方法之后,返回modelAndView之前执行//应用场景从modelAndView出发:将公用的模型数据(比如菜单导航)在这里传到视图,也可以在这里统一指定视图@Overridepublicvoid postHandle(HttpServletRequest request,HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception { }//执行Handler完成执行此方法//应用场景:统一异常处理,统一日志处理@Overridepublicvoid afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)throws Exception {}}拦截器配置针对HandlerMapping配置springmvc拦截器针对HandlerMapping进行拦截设置,如果在某个HandlerMapping中配置拦截,经过该 HandlerMapping映射成功的handler最终使用该拦截器。

springmvc-机制(拦截器、aop、异常)

springmvc-机制(拦截器、aop、异常)

◆Spring-mvc知识➢概念Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。

图1 Spring Web MVC核心架构图理解这张图之前我们得先知道以下的几个名词:前端控制器(DispatcherServlet)、请求到处理器映射(HandlerMapping)、处理器适配器(HandlerAdapter)、视图解析器(ViewResolver)、处理器或页面控制器(Controller)、验证器(Validator)、命令对象(Command 请求参数绑定到的对象就叫命令对象)、表单对象(Form Object 提供给表单展示和提交到的对象就叫表单对象)步骤解析:核心架构的具体流程步骤如下:1、首先用户发送请求——>DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制;2、DispatcherServlet——>HandlerMapping,HandlerMapping将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象、多个HandlerInterceptor拦截器)对象,通过这种策略模式,很容易添加新的映射策略;3、DispatcherServlet——>HandlerAdapter,HandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器;4、HandlerAdapter——>处理器功能处理方法的调用,HandlerAdapter将会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理;并返回一个ModelAndView对象(包含模型数据、逻辑视图名);5、ModelAndView的逻辑视图名——> ViewResolver,ViewResolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术;6、View——>渲染,View会根据传进来的Model模型数据进行渲染,此处的Model实际是一个Map数据结构,因此很容易支持其他视图技术;7、返回控制权给DispatcherServlet,由DispatcherServlet返回响应给用户,到此一个流程结束。

黑马程序员springmvc教程第一天:黑马程序员springmvc教程:简单类型、pojo绑定

黑马程序员springmvc教程第一天:黑马程序员springmvc教程:简单类型、pojo绑定

简单类型
通过@RequestParam对简单类型的参数进行绑定。

如果不使用@RequestParam,要求request传入参数名称和controller方法的形参名称一致,方可绑定成功。

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

通过required属性指定参数是否必须要传入,如果设置为true,没有传入参数,报下边错误:
参考教案对其它简单类型绑定进行测试。

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

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

将请求日期数据串传成日期类型,要转换的日期类型和pojo中日期属性的类型保持一致。

所以自定义参数绑定将日期串转成java.util.Date类型。

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

自定义日期类型绑定
配置方式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

包装类型pojo参数绑定
需求
商品查询controller方法中实现商品查询条件传入。

实现方法
第一种方法:在形参中添加HttpServletRequest request参数,通过request接收查询条件参数。

第二种方法:在形参中让包装类型的pojo接收查询条件参数。

分析:
页面传参数的特点:复杂,多样性。

条件包括:用户账号、商品编号、订单信息。

如果将用户账号、商品编号、订单信息等放在简单pojo(属性是简单类型)中,pojo类属性比较多,比较乱。

建议使用包装类型的pojo,pojo中属性是pojo。

页面参数和controller方法形参定义
页面参数:
商品名称:<input name="" />
注意:itemsCustom和包装pojo中的属性一致即可。

controller方法形参:
public ModelAndView queryItems(HttpServletRequest
request,ItemsQueryVo itemsQueryVo) throws Exception
集合类型绑定
数组绑定
需求
商品批量删除,用户在页面选择多个商品,批量删除。

表现层实现
关键:将页面选择(多选)的商品id,传到controller方法的形参,方法形参使用数组接收页面请求的多个商品id。

controller方法定义:
页面定义:
list绑定
需求
通常在需要批量提交数据时,将提交的数据绑定到list<pojo>中,比如:成绩录入(录入多门课成绩,批量提交),
本例子需求:批量商品修改,在页面输入多个商品信息,将多个商品信息提交到controller方法中。

表现层实现
controller方法定义:
1、进入批量商品修改页面(页面样式参考商品列表实现)
2、批量修改商品提交
使用List接收页面提交的批量数据,通过包装pojo接收,在包装pojo中定义list<pojo>属性
页面定义:
map绑定
也通过在包装pojo中定义map类型属性。

在包装类中定义Map对象,并添加get/set方法,action使用包装对象接收。

包装类中定义Map对象如下:
Publicclass QueryVo {
private Map<String, Object>itemInfo = new HashMap<String, Object>(); //get/set方法..
}
页面定义如下:
<tr>
<td>学生信息:</td>
<td>
姓名:<input type="text"name="itemInfo['name']"/>
年龄:<input type="text"name="itemInfo['price']"/>
.. .. ..
</td>
</tr>
Contrller方法定义如下:
public String useraddsubmit(Model model,QueryVoqueryVo)throws Exception{ System.out.println(queryVo.getStudentinfo());
}。

相关文档
最新文档