springmvc第二天课堂笔记

上传人:woxinch****an2018 文档编号:38980594 上传时间:2018-05-10 格式:DOCX 页数:40 大小:725.73KB
返回 下载 相关 举报
springmvc第二天课堂笔记_第1页
第1页 / 共40页
springmvc第二天课堂笔记_第2页
第2页 / 共40页
springmvc第二天课堂笔记_第3页
第3页 / 共40页
springmvc第二天课堂笔记_第4页
第4页 / 共40页
springmvc第二天课堂笔记_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《springmvc第二天课堂笔记》由会员分享,可在线阅读,更多相关《springmvc第二天课堂笔记(40页珍藏版)》请在金锄头文库上搜索。

1、springmvc 第二天第二天 高级知识高级知识复习:springmvc 框架:DispatcherServlet 前端控制器:接收 request,进行 responseHandlerMapping 处理器映射器:根据 url 查找 Handler。 (可以通过 xml 配置方式,注解方式)HandlerAdapter 处理器适配器:根据特定规则去执行 Handler,编写 Handler 时需要按照 HandlerAdapter 的要求去编写。Handler 处理器(后端控制器):需要程序员去编写,常用注解开发方式。常用注解开发方式。Handler 处理器执行后结果 是 ModelAnd

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

3、oller 注解必须要加,作用标识类是一个 Handler 处理器。requestMapping 注解必须要加,作用:1、对 url 和 Handler 的方法进行映射。2、可以窄化请求映射,设置 Handler 的根路径,url 就是根路径+子路径请求方式3、可以限制 http 请求的方法映射成功后,springmvc 框架生成一个 Handler 对象,对象中只包括 一个映射成功的 method。注解开发中参数绑定:将 request 请求过来的 key/value 的数据(理解一个串) ,通过转换(参数绑定的一部分) ,将 key/value 串转成形参,将转换后的结果传给形参(整个参数

4、绑定过程) 。springmvc 所支持参数绑定:1、默认支持很多类型,HttpServletRequest、response、session、model/modelMap(将模型数据填充到 request 域)2、支持简单数据类型,整型、字符串、日期。 。只要保证 request 请求的参数名和形参名称一致,自动绑定成功如果 request 请求的参数名和形参名称不一致,可以使用RequestParam(指定 request 请求的参数名) ,RequestParam 加在形参的前边。3、支持 pojo 类型只要保证 request 请求的参数名称和 pojo 中的属性名一致,自动将 req

5、uest 请求的参数设置到 pojo的属性中。注意:形参中即有 pojo 类型又有简单类型,参数绑定互不影响。自定义参数绑定:日期类型绑定自定义:定义的 Converter接口实现类,比如:Converter表示:将请求的日期数据串转成 java 中的日期类型。注意:要转换的目标类型一定和接收的 pojo 中的属性类型一致。将定义的 Converter 实现类注入到处理器适配器中。springmvc 和 struts2 区别:springmvc 面向方法开发的(更接近 service 接口的开发方式) ,struts2 面向类开发。springmvc 可以单例开发,struts2 只能是多例开

6、发。1 课程安排课程安排上午:在商品查询和商品修改功能案例驱动下进行学习:包装类型 pojo 参数绑定(掌握) 。集合类型的参数绑定:数组、list、map.商品修改添加校验,学习 springmvc 提供校验 validation(使用的是 hibernate 校验框架)数据回显统一异常处理(掌握)下午:上传图片json 数据交互RESTful 支持拦截器2 包装类型包装类型 pojo 参数绑定参数绑定2.1 需求需求商品查询 controller 方法中实现商品查询条件传入。2.2 实现方法实现方法第一种方法:在形参中 添加 HttpServletRequest request 参数,通过

7、 request 接收查询条件参数。第二种方法:在形参中让包装类型的 pojo 接收查询条件参数。分析:页面传参数的特点:复杂,多样性。条件包括 :用户账号、商品编号、订单信息。 。 。如果将用户账号、商品编号、订单信息等放在简单 pojo(属性是简单类型)中,pojo 类属性比较多,比较乱。建议使用包装类型的 pojo,pojo 中属性是 pojo。2.3 页面参数和页面参数和 controller 方法形参定义方法形参定义页面参数:商品名称:注意:itemsCustom 和包装 pojo 中的属性一致即可。controller 方法形参:public ModelAndView queryI

8、tems(HttpServletRequest request,ItemsQueryVo itemsQueryVo) throws Exception3 集合类型绑定集合类型绑定3.1 数组绑定数组绑定3.1.1 需求需求商品批量删除,用户在页面选择多个商品,批量删除。3.1.2 表现层实现表现层实现关键:将页面选择(多选)的商品 id,传到 controller 方法的形参,方法形参使用数组接收页面请求的多个商品 id。controller 方法定义:页面定义:3.2 list 绑定绑定3.2.1 需求需求通常在需要批量提交数据时,将提交的数据绑定到 list中,比如:成绩录入(录入多门课成

9、绩,批量提交) ,本例子需求:批量商品修改,在页面输入多个商品信息,将多个商品信息提交到 controller 方法中。3.2.2 表现层实现表现层实现controller 方法定义:1、进入批量商品修改页面(页面样式参考商品列表实现)2、批量修改商品提交使用 List 接收页面提交的批量数据,通过包装 pojo 接收,在包装 pojo 中定义 list属性页面定义:3.3 map 绑定绑定也通过在包装 pojo 中定义 map 类型属性。在包装类中定义 Map 对象,并添加 get/set 方法,action 使用包装对象接收。包装类中定义 Map 对象如下:Public class Que

10、ryVo private Map itemInfo = new HashMap();/get/set 方法.页面定义如下:学生信息:姓名:年龄:. . .Contrller 方法定义如下:public String useraddsubmit(Model model,QueryVo queryVo)throws ExceptionSystem.out.println(queryVo.getStudentinfo();4 springmvc 校验校验4.1 校验理解校验理解项目中,通常使用较多是前端的校验,比如页面中 js 校验。对于安全要求较高点建议在服务端进行校验。服务端校验:控制层 con

11、roller:校验页面请求的参数的合法性。在服务端控制层 conroller 校验,不区分客户端类型(浏览器、手机客户端、远程调用)业务层 service(使用较多):主要校验关键业务参数,仅限于 service 接口中使用的参数。持久层 dao:一般是不校验的。4.2 springmvc 校验需求校验需求springmvc 使用 hibernate 的校验框架 validation(和 hibernate 没有任何关系)。校验思路:页面提交请求的参数,请求到 controller 方法中,使用 validation 进行校验。如果校验出错,将错误信息展示到页面。具体需求:商品修改,添加校验(

12、校验商品名称长度,生产日期的非空校验) ,如果校验出错,在商品修改页面显示错误信息。4.3 环境准备环境准备hibernate 的校验框架 validation 所需要 jar 包:4.4 配置校验器配置校验器4.5 校验器注入到处理器适配器中校验器注入到处理器适配器中4.6 在在 pojo 中添加校验规则中添加校验规则在 ItemsCustom.java 中添加校验规则:4.7 CustomValidationMessages.properties在 CustomValidationMessages.properties 配置校验错误信息:4.8 捕获校验错误信息捕获校验错误信息/在需要校验

13、的pojo前边添加Validated,在需要校验的pojo后边添加BindingResult bindingResult接收校验出错信息/注意:Validated 和 BindingResult bindingResult 是配对出现,并且形参顺序是固定的(一前一后)。4.9 在页面显示校验错误信息在页面显示校验错误信息在 controller 中将错误信息传到页面即可。页面显示错误信息:4.10分组校验分组校验4.10.1需求需求在 pojo 中定义校验规则,而 pojo 是被多个 controller 所共用,当不同的 controller 方法对同一个 pojo 进行校验,但是每个 co

14、ntroller 方法需要不同的校验。解决方法:定义多个校验分组(其实是一个 java 接口) ,分组中定义有哪些规则每个 controller 方法使用不同的校验分组4.10.2校验分组校验分组4.10.3在校验规则中添加分组在校验规则中添加分组4.10.4在在 controller 方法使用指定分组的校验方法使用指定分组的校验5 数据回显数据回显5.1 什么数据回显什么数据回显提交后,如果出现错误,将刚才提交的数据回显到刚才的提交页面。5.2 pojo 数据回显方法数据回显方法1、springmvc 默认对 pojo 数据进行回显。pojo 数据传入 controller 方法后,spri

15、ngmvc 自动将 pojo 数据放到 request 域,key 等于 pojo 类型(首字母小写)使用ModelAttribute 指定 pojo 回显到页面在 request 中的 key2、ModelAttribute 还可以将方法的返回值传到页面在商品查询列表页面,通过商品类型查询商品信息。在 controller 中定义商品类型查询方法,最终将商品类型传到页面。页面上可以得到 itemTypes 数据。3、使用最简单方法使用model,可以不用ModelAttribute5.3 简单类型数据回显简单类型数据回显使用最简单方法使用model。model.addAttribute(“i

16、d“, id);6 异常处理异常处理6.1 异常处理思路异常处理思路系统中异常包括两类:预期异常和运行时异常 RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。系统的 dao、service、controller 出现都通过 throws Exception 向上抛出,最后由 springmvc 前端控制器交由异常处理器进行异常处理,如下图:Controller客户端ServiceDaoSpringmvcDispatcherServlet请求异常ExceptionResolver异常处理器异常异常springmvc 提供全局异常处理器(一个系统只有一个异常处理器)进行统一异常处理。6.2 自定义异常类自定义异常类对不同的异常类型定义异常类,继承 Exception。6.3 全局异常处理器全局异常处理器思路:系统遇到异常,在程序中手动抛出,dao 抛给 service、service 给 controller、controller 抛给前端控制器,前端控制器调用全局

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号