ssm学习笔记三-SpringMVC框架

SpringMVC框架

简介

  1. p77 SpringMVC框架的概述,简单来说就是上图中的公用行为封装和特有行为调用的框架。具体请见视频

  2. p78 SpringMVC的开发步骤,见上图6步

    POJO:Plain Ordinary Java Object,即普通Java类,具有一部分getter/setter方法的那种类就可以称作POJO。即一般开发中的domain包下的简单的实体类,是JavaBeans的子集,前面的笔记有过提及。特点就是支持业务逻辑的协助类。

    到具体项目中来的步骤描述:

    在这里插入图片描述

  3. p79 基于上述开发步骤的小案例代码实现

组件解析

  1. p80 基于上述小demo的项目部署启动流程及分析。步骤的再次强调

  2. p81 基于SringMVC框架的底层组件解析SpringMVC的执行流程:

在这里插入图片描述

                                  

在这里插入图片描述

  1. p82-85 SpringMVC组件解析:

    • 82 注解解析:@RequstMapping()。包括:作用位置属性

      在这里插入图片描述

    • 83 组件扫描:<context:component-scan>属性:base-package,全限定包名

      子标签:

      • <context:include-filter> 只扫描的部分
      • <context:exclude-filter> 排除扫描的部分
    • 84 XML配置解析(资源解析器):源码查看解析,对Controller类代码进行增强

      • Controller类中return的视图返回方式:forwardredirect

      • xml中配置内部资源视图解析器(InternalResourceViewResolver):

        重构源码中内部资源视图解析器中的前缀(prefix)和后缀(suffix)的默认构造方法,自定义添加需要的前后缀,使得return语句变得更简洁。

    • 组件总结:红色框住部分为重点

      在这里插入图片描述

数据响应

  1. p86 SpringMVC数据相应方式的预览和思维导向讲解:

在这里插入图片描述

​ 重点注意回写数据中的返回对象或集合中提及的AJAX和Json的应用

  1. p87-90 页面跳转

    • 87 返回字符串的形式。对上述构建的小demo的web执行的流程解析

    • 88-90 返回ModelAndView的形式,四种形式:

      • 88 以ModelAndView方式建立ModelAndView类型的方法,重构实现上述返回字符串的形式的demo

      • 89 另外两种形式:

        ModelAndView对象解耦:SpringMVC自动注入;

        自定义String方法,实现ModelAndView形式(String对象即为View,再自动注入一个Model对象)

      • 90 自定义String方法,实现ModelAndView形式(String对象即为View,再自动注入一个HTTPServletRequest对象)

        对比前面的Model对象的自定义方法,Model对象是SpringMVC框架封装好的一个对象,HTTPRequestServlet对象是原生的,Tomcat提供的对象(**不常用,使用框架就尽量使用框架提供的方法)

  2. p91-94 回写数据

    • 91 直接返回字符串:不进行视图跳转,直接返回字符串展示,两种方法:

      • 方法类型为void,没有return返回,自动注入response对象调用getWriter().print()展示
      • 通过return返回字符串,添加**@ResponsBody**注解告知SpringMVC直接通过响应体回写
    • 92 返回Json格式字符串:使用Json转换工具将实体类对象转换为Json格式字符串返回:

      ​ 使用ObjectMapper类的**writerValueAsString(domain)**方法

    • 93 94 返回对象或集合:配置SpringMVC自动将对象转换成Json

      • 93 xml中配置处理器适配器的RequestMappingHandlerAdapter类的类型转换器,实现SpringMVC的自动转换

      • 94 简化上述配置,xml配置中添加一个MVC的注解驱动:<mvc:annotation-driven>即可,作用如下图:

        在这里插入图片描述

  3. p95 数据响应总结

SpringMVC的请求

获得请求参数 P96-108
  1. P96-101 请求参数类型

    • 96 参数类型总结和思维导图讲解:

      • 基本类型
      • POJO类型
      • 数组类型
      • 集合类型
    • 97获取基本类型参数:

    在这里插入图片描述

    • 98获取POJO类型参数:

    在这里插入图片描述

    • 99获取数组类型参数:

    在这里插入图片描述

    • 100 101 获取集合类型参数:

      • 自定义一个list类(VO对象)在Controller类中注入,并在视图页面(jsp)中提交数据,数据在Controller类中完成封装获取

      在这里插入图片描述

      • 注意ajax提交的代码编写方式,引出静态资源访问权限问题:

      在这里插入图片描述

  2. p102 静态资源访问开启

    SpringMVC前端控制器DispatcherServlet内部会对web资源进行虚拟路径匹配(Controller类),而原案例web.xml配置为’/’(缺省),所以全部资源讲由SpringMVC来匹配。

    在spring-mvc.xml中配置不由SpringMVC来匹配,开放静态资源访问:

    • <mvc:resources>属性:mapping:映射地址,location:开放的目录-

    • <mvc:default-servlet-handler/>:当DispatcherServlet匹配不到时,交由原始容器(Tomcat)寻找

  3. p103 请求数据乱码问题:配置全局乱码过滤器<filter>

  4. p104 参数绑定注解:@requestParam

    在这里插入图片描述

    属性:
    在这里插入图片描述

  5. p105 获得Restful风格的参数

在这里插入图片描述

@PathVariable 进行占位符匹配:

在这里插入图片描述

  1. p106 自定义类型转换器

在这里插入图片描述

步骤:

在这里插入图片描述

  1. p107 获取Servlet相关API

    视频丢失,看的这个:

    https://www.bilibili.com/video/BV1mE411X7yp?p=174

    在一个虚拟路径方法中,想获取Servlet任意API直接在形参中声明即可,SpringMVC自动注入。

  2. p108 获取请求头信息:

在这里插入图片描述

@CookieValue

在这里插入图片描述

文件上传 P109-113
  1. p109 上传客户端三要素,及前端表单实现:

在这里插入图片描述

  1. p110 文件上传原理:

在这里插入图片描述

  1. p111 单文件上传步骤:

在这里插入图片描述

​ ①在pom.xml添加

​ ②spring-mvc.xml配bean

​ ③编写Controller类方法

  1. p112单文件的上传下载案例实现

  2. 多文件上传:

    • 数组形式:

    在这里插入图片描述

    在这里插入图片描述

    • 前端不同名的name值,方法中多个对应形参形式

SpringMVC拦截器

  1. p114 拦截器(Interceptor)的概述和作用:

在这里插入图片描述

  1. p115 拦截器(Interceptor)和过滤器(Filter):

在这里插入图片描述

  1. p116 自定义拦截器快速入门步骤:

在这里插入图片描述

​ ①三个方法都需要实现(可以缺省)

​ ②spring-mvc.xml配置:<mvc:interceptors>标签及其子标签 <mvc:interceptor>具体某一个拦截器,

  • ​ 属性标签:<mvc:mapping>,属性值:path,(配置对那些资源进行拦截操作 p121)

  • ​ (属性标签:<mvc:exclude-mapping>,属性值:path,配置对那些资源不进行拦截操作 p121)

    括号内的为后面p121的内容

​ ③build测试

  1. p117 自定义拦截器三个方法的逻辑实现,以及拦截器链的三个方法的执行顺序:
  • Boolean preHandle():

    在目标方法执行前执行

    最常用,类似于Filter中的doFilter()方法;

  • void postHandle()

    在目标方法执行之后,视图对象返回之前执行

    可用于修改返回的视图对象

  • void afterCompletion()

    在流程都执行完毕后执行

    不常用

执行顺序:

​ 链中所有preHandle()方法执行完再执行所有postHandle()方法, 最后执行所有afterCompletion()方法。

​ 链中拦截器的执行顺序是由xml文件中的配置顺序决定的。

  1. p118 三个方法说明总结及其他总结:

在这里插入图片描述

28.p119-122 拦截器案例demo实现用户登录权限控制

  • 119 案例需求分析及preHandle()实现逻辑分析

  • 120 在preHandle()方法代码实现上P的逻辑分析

  • 121 实现登录功能保存至数据库,并引出拦截范围问题,引出新标签用于排除拦截:<mvc:exclude-mapping>

  • 122 JdbcTemplate的queryForObject()方法返回为空时的EmptyResultDataAccessException异常问题:

    解决:Dao层抛出异常,业务层中抓取异常并解决。并引出后续的框架解决异常的方法。

异常处理机制

  1. p123 不使用框架方法解决异常思路:

    Dao层抛出异常,业务层中抓取异常并解决。每个方法都抓取解决。

    引出抽取思想,进而引出SpringMVC框架解决思路:

    在这里插入图片描述

    以及后续对绿色框部分的学习

  2. 异常处理的两种方式:

    在这里插入图片描述

  3. 简单异常处理器SimpleMappingException代码实现:

在这里插入图片描述

  1. 自定义异常处理器实现HandlerExceptionResolver接口步骤和案例实现:

在这里插入图片描述

​ ①实现方法中,方法参数除servlet两大对象外,Exception参数即异常对象;返回值ModelAndView:跳转的错误视图信息

​ 配置方法中,使用分支结构囊括所需要的异常类型,使用instanceof方法进行判断,最后设置ModelAndView对象信息并该对象返回即可。

​ ②简单声明配bean即可

​ ③④没什么可讲

  1. 异常处理总结

  2. 请求的两个额外注解:

    https://www.bilibili.com/video/BV1mE411X7yp?p=181

  • @ModelAttribute

    在这里插入图片描述

    • 修饰方法有返回值:

      在这里插入图片描述

    • 修饰方法没有返回值

      在这里插入图片描述

      在这里插入图片描述

  • @SessionAttributes

    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43175022/article/details/108933556