




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主讲:图灵鲁班时间:2018/08/30课程概要1. spring mvc 设计思想与体系结构组成2. mvc 执行流程解析3. 注解配置一、spring mvc 设计思想与体系结构组成知识点1. jsp 执行过程回顾2. spring mvc执行流程解析3. mvc 体系结构1、回顾servlet 与jsp 执行过程流程说明:1. 请求Servlet2. 处理业务逻辑3. 设置业务Model4. forward jsp Servlet5. jsp Servlet 解析封装html 返回提问:这个是一个MVC应用场景吗?spring mvc本质上还是在使用Servlet处理,并在其基础上进行了封装简化了开发流程,提高易用性、并使用程序逻辑结构变得更清晰a. 基于注解的URL映谢b. http表单参数转换c. 全局统一异常处理d. 拦截器的实现2、spring mvc 执行流程:整个过程是如何实现的?1. dispatchServlet 如何找到对应的Control?2. 如何执行调用Control 当中的业务方法?回答这些问题之前我们先来认识一下spring mvc 体系结构3、spring mvc 体系结构l HandlerMapping hndl mp url与控制器的映谢l HandlerAdapter hndldpt 控制器执行适配器l ViewResolver vju rizlv 视图仓库l view 具体解析视图l HandlerExceptionResolver hndl ksep()n rizlv 异常捕捕捉器l HandlerInterceptor hndl ntsept 拦截器配置一个spring mvc 示例演示 验证上述流程 n 创建一个Controller 类n 配置DispatchServletn 创建spring-mvc.xml 文件n 配置SimpleUrlHandlerMappingn 配置InternalResourceViewResolver体系结构UML二、mvc 执行流程解析知识点:1. mvc 具体执行流程2. HandlerMapping详解3. HandlerAdapter 详解4. ViewResolver与View详解5. HandlerExceptionResolver详解6. HandlerInterceptor 详解1. mvc 各组件执行流程2、HandlerMapping 详解其为mvc 中url路径与Control对像的映射,DispatcherServlet 就是基于此组件来寻找对应的Control,如果找不到就会报Not Found mapping 的异常。HandlerMapping 接口方法HandlerMapping 接口结构目前主流的三种mapping 如下:BeanNameUrlHandlerMapping: 基于ioc name 中已 / 开头的Bean时行 注册至映谢.SimpleUrlHandlerMapping:基于手动配置 url 与control 映谢RequestMappingHandlerMapping:基于RequestMapping注解配置对应映谢l 演示基于 BeanNameUrlHandlerMapping 配置映谢。编写mvc 文件/ beanname control 控制器public class BeanNameControl implements HttpRequestHandler Override public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException request.getRequestDispatcher(/WEB-INF/page/userView.jsp).forward(request, response); 当IOC 中实例化这些类之后 DispatcherServlet 就会通过org.springframework.web.servlet.DispatcherServlet#getHandler() 方法基于request查找对应Handler。 但找到对应的Handler之后我们发现他是一个Object类型,并没有实现特定接口。如何调用Handler呢?3、HandlerAdapter详解这里spring mvc 采用适配器模式来适配调用指定Handler,根据Handler的不同种类采用不同的Adapter,其Handler与 HandlerAdapter 对应关系如下:Handler类别对应适配器描述ControllerSimpleControllerHandlerAdapter标准控制器,返回ModelAndViewHttpRequestHandlerHttpRequestHandlerAdapter业务自行处理 请求,不需要通过modelAndView 转到视图ServletSimpleServletHandlerAdapter基于标准的servlet 处理HandlerMethodRequestMappingHandlerAdapter基于requestMapping对应方法处理HandlerAdapter 接口方法HandlerAdapter 接口结构图l 演示基于Servlet 处理 SimpleServletHandlerAdapter/ 标准Servletpublic class HelloServlet extends HttpServlet Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException resp.getWriter().println(hello luban ); 上述例子中当IOC 中实例化这些类之后 DispatcherServlet 就会通过org.springframework.web.servlet.DispatcherServlet#getHandlerAdapter() 方法查找对应handler的适配器 ,如果找不到就会报 No adapter for handler。4、ViewResolver 与View 详解找到应的Adapter 之后就会基于适配器调用业务处理,处理完之后业务方会返回一个ModelAndView ,在去查找对应的视图进行处理。其在org.springframework.web.servlet.DispatcherServlet#resolveViewName() 中遍历 viewResolvers 列表查找,如果找不到就会报一个 Could not resolve view with name 异常。在下一步就是基于ViewResolver.resolveViewName() 获取对应View来解析生成Html并返回 。对应VIEW结构如下:至此整个正向流程就已经走完了,如果此时程序处理异常 MVC 该如何处理呢?5、HandlerExceptionResolver详解该组件用于指示 当出现异常时 mvc 该如何处理。 dispatcherServlet 会调用org.springframework.web.servlet.DispatcherServlet#processHandlerException() 方法,遍历 handlerExceptionResolvers 处理异常,处理完成之后返回errorView 跳转到异常视图。n 演示自定义异常捕捉public class SimpleExceptionHandle implements HandlerExceptionResolver Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) return new ModelAndView(error); HandlerExceptionResolver 结构除了上述组件之外 spring 中还引入了 我Interceptor拦截器 机制,类似于Filter。6、HandlerInterceptor 详解l 演示HandlerInterceptorpublic class SimpleHandlerInterceptor implements HandlerInterceptor Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception System.out.println(preHandle); return true; Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception System.out.println(postHandle); Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception System.out.println(afterCompletion); 其实现机制是基于 HandlerExecutionChain 分别在 doDispatch 方法中执行以下方法:l preHandle :业务处理前执行l postHandle:业务处理后(异常则不执行)l afterCompletion:视图处理后具体逻辑源码参见:org.springframework.web.servlet.DispatcherServlet#doDispatch 方法。三、注解配置l 演示基于注解配置mvc mapping / 注解方法RequestMapping(/hello.do)public ModelAndView hello() ModelAndView mv = new ModelAndView(userView); mv.addObject(name, luban); return mv;提问 为什么基于 配置就能实现mvc 的整个配置了,之前所提到的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业旅游学课件
- 农业报表化肥培训课件
- 化工企业环保培训课件
- 别踩黑块课件
- 品质营销推广规划方案(3篇)
- 先秦朱子论语课件
- 先秦两汉文学课件
- 内科慢阻肺讲解课件
- 内科循环系统课件
- 3口耳目手足 公开课一等奖创新教学设计
- 2025年四川基层法律服务工作者执业核准考试仿真试题及答案一
- 信息技术基础教程(WPS版)课件 第3章 Windows 10 操作系统的使用
- 小鹿斑比题目及答案
- 中学知识竞赛试题及答案
- 2025-2030中国建筑行业供应链金融发展现状与前景分析
- 2025-2026学年人教版(2024)初中物理八年级上册教学计划及进度表
- 医院环境感染监测制度
- 医院一键式报警系统建设与实施
- 精选急腹症影像学表现资料课件
- 角膜 角膜炎课件
- 《卫生政策学》第三章 政策问题确认
评论
0/150
提交评论