欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

程序员文章站 2022-04-16 16:02:37
目录SpringMVC的简介SpringMVC的组件解析开始一、SpringMVC的简介轻量级 基于 MVC 开发模式 的 Web框架有一套轻量完善的注解配置机制之前web层有很多Servlet,每个Servlet基本都需要接受使用参数、封装实体、指派视图框架可以帮我们 将 一些 共同的操作 抽取出来,框架进行封装对于特有功能的Servlet,只需要一个POJOBean(控制器Controller)来完成 相应功能1.1开发步骤导坐标配置...

目录

  • SpringMVC的简介
    • 开发步骤
    • 快速入门
  • SpringMVC的组件解析
    • 执行流程
    • 注解解析
    • XML配置解析
    • 知识小结
  • SpringMVC的数据响应、
    • 数据响应的方式
    • 页面跳转
    • 需要什么对象,就添加什么对象到形参
    • 回写数据
      • 回写一般字符串数据
      • 回写json格式的字符串
      • 回写对象集合
    • 小结
  • SpringMVC获取请求数据
    • 获取请求参数
    • 获得基本类型的数据
    • 获得POJO类型的数据
    • 获取数组类型的数据
    • 获取集合类型的数据
    • 请求数据的乱码问题
    • 参数绑定注解
    • 获得Restful风格的参数
    • 自定义类型转换器
    • 获取请求头数据
    • 文件上传
  • SpringMVC拦截器
    • 快速入门
    • 知识小结
    • 拦截器登录权限控制小案例
  • SpringMVC异常处理机制
    • 简单异常处理器
    • 自定义异常处理器
    • 小结

开始

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

一、SpringMVC的简介

轻量级 基于 MVC 开发模式 的 Web框架

有一套轻量完善的注解配置机制

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

之前web层有很多Servlet,每个Servlet基本都需要

  • 接受使用参数、

  • 封装实体、

  • 指派视图

框架可以帮我们 将 一些 共同的操作 抽取出来,框架进行封装
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

对于特有功能的Servlet,只需要一个POJOBean(控制器Controller)来完成 相应功能

1.1开发步骤

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

  • 导坐标

  • 配置 前端控制器Servlet,也就是DispathcerServlet核心控制器

  • 编写 POJO(Controller)

  • 将Controller配置到Spring容器中(使用注解@Component或者衍生注解@Controller ,或者使用xml配置)

  • 配置组件扫描(可以在applicationContext.xml中组件扫描,一般在spring-mvc.xml中配置web层的扫描器)

  • 执行测试

1.2快速入门

导包
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

配置web.xml,设置前端控制器的虚拟目录,/ 就是代表所有的资源 都需要经过 前端控制器

这里后面会出现一些静态资源js,css等被拦截的问题,需要配置放行
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

配置跳转的view页面

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

配置 组件扫描,因为 在 UserController中使用注解 将 Bean 放到了Spring中

而且 访问的 资源的 和 方法 的映射,也是使用注解来配置的
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

web.xml,类似配置全局参数加载applicationContext.xml 配置文件那样 加载 spring-mvc.xml文件

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

二、SpringMVC的组件解析

2.1SpringMVC的执行流程

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

核心 前端控制器DispatcherServlet 完成的主要任务 是 调度 完成相应功能的 组件

  • HandlerMapping:处理映射器,目标Controller之前可能会有很多拦截器,返回执行的很多资源的顺序
  • HandlerAdaptor处理器适配器:调度需要执行的资源,也就是自己写的POJO,最后返回给DispatcherServlet 核心控制器Model and View
  • Handler:处理器,可认为自己写的POJO对象,执行完返回 Model and View
  • ViewResolver:视图解析器:从Model and View 将视图解析出来

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

2.2SpringMVC注解解析

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
因为 自定义UserController 上 加 @Controller 表示 将 Bean 放到 Spring中,需要在 spring-mvc.xml中进行组件扫描

和 applicationContext.xml 中的 组件扫描 各司其职,分管不同的层下的Bean

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

2.3SpringMVC的XML配置解析

可以在Spring-mvc.xml中配置 组件扫描

还可以配置 指定一些组件,像处理器适配器,处理器,映射器等,可修改缺省时候默认的组件

可以对 某些 组件 内部功能指定增强

在SpringMVC的包下,有DispatcherServlet核心控制器 组件 的配置文件

配置文件中,缺省情况下对 相关 组件 默认配置
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

我们 可以 重写 配置,在spring-mvc.xml配置文件中 进行 增强组件功能 配置

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
改用web.xml 的 Servlet-Mapping 来映射 资源

  • 发现报错

26-Nov-2020 10:33:13.701 警告 [http-nio-8080-exec-3] org.springframework.web.servlet.DispatcherServlet.noHandlerFound No mapping found for HTTP request with URI [/demo] in DispatcherServlet with name 'DispatcherServlet'

原因是 因为 SpringMVC的拦截器功能太过强大,把我们访问的.jsp文件拦截,导致404,我们需要配置放行

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

<!--    全局初始化参数,加载applicationContext.xml文件-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:java/applicationContext.xml</param-value>
    </context-param>

    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--        加载配置文件spring-mvc.xml-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:java/spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

<!--    映射资源-->
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
<!--    拦截器放行的资源-->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/.jsp</url-pattern>
    </servlet-mapping>
</web-app>

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

2.4知识小结

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

三、SpringMVC的数据响应、

3.1 数据响应的方式

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

页面跳转

  • 直接返回字符串:return "success.jsp"
  • 返回Model and View ,简单理解就是一个封装,需要 对 Model and View 再解析为 View

回写数据

  • 直接返回字符串:reponse.getWritter().print();
  • 返回对象或集合:Ajax访问服务器,返回json格式的字符串,通过json的转换工具,然后在response.getWriter().print()进行回写SpringMVC集成之后,只需要 在方法上 返回 对象的集合就行,然后帮助我们转换成串,直接回写

3.2页面跳转

  1. 直接返回字符串的形式,只写view的字符串形式即可,然后视图跳转字符串指定资源
    Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

  2. 返回ModelAndView
    Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
    其中setViewName()设置 展示 的 view,即 访问 index.jsp
    Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
    Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
    方法形参注入思想,当方法 形参包含 ModelAndView对象,Spring调用方法,传入实参,即创建实际的对象,自动注入ModelAndView 对象
    Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
    也可以将ModelAndView拆开,单独返回View
    Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

3.3需要什么对象,就添加对象到方法的形参

靠着Spring来注入,如需要request对象(不常用)

和Model model 类似,Model 是 SpringMVC封装好的对象,而request对象是Tomcat服务器创建的原生对象

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

3.3回写数据

3.3.1回写一般的字符串到页面

通过之前的response对象回写
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
还可以 通过方法上加注解 区别事务跳转 来直接return “字符串”

  • @ResponseBody 告诉 SpringMVC框架,不进行视图跳转,直接进行数据响应,以HTTP响应体的方式回写

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

3.3.2回写json格式的字符串

将数据库查询的对象,转化为json格式,然后再回写,需要json转换工具

  • 导包

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

  • 创建使用ObjectMapper 对象 通过objectMapper.writeValueAsString(对象) 得到 json字符串,然后返回
    Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

上述 操作,不管是对象,对象集,都需要通过objectMapper来处理为json字符串,很繁琐

可以通过配置SpringMVC来 封装 转换过程,自动将对象、对象集转化为json字符串

3.3.3SpringMVC来返回对象集合

调用 Controller 中方法的是 处理器适配器RequestMappingHandlerAdapter,但是默认情况下是不能将对象转化为json格式,需要功能增强

因此需要我们在 配置适配器时,指定一个json的转换器,然后在处理器适配器调用方法的时候,完成转换,

就类似之前配置的 资源视图解析器,自动加上 后缀、前缀

  • 配置处理器映射器,spring-mvc.xml中对处理器适配器进行注入,功能增强Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
    Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

  • mvc注解驱动,底层默认集成jackson转换器
    Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

  • 导命名空间mvc,配置注解驱动
    Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

3.4小结

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

四、SpringMVC获取请求数据

4.1获取请求参数

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

SprigMVC接受客户端请求参数类型可以是:

  • 基本数据类型:字符串、数字等
  • POJO:简单JavaBean,将参数封装到Bean,在进行业务逻辑操作
  • 数组类型:例如复选框数据
  • 集合类型:和数组类似

4.2获得基本类型数据

客户端 提交基本类型数据 名称 和 SpringMVC 中的Controller中的形参名称相同,完成自动封装

类似request.getParamater(),将获得的请求数据和service、dao层进行交互

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

4.3获得POJO类型的数据

请求的数据是一个 对象 整体

之前是通过request.getParamaterMap()获取 请求数据封装的 Bean

底层很复杂,但是使用只需 形参设置User user,就可以直接拿到 请求参数 对应的实体Bean

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

4.3获取数组类型的数据

通过方法形参传入一个数组

对类似多选框的参数进行封装为一个数组

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

4.4获取集合数据类型的参数

4.4.1封装集合数据到VO对象的List<User>属性中

就是封装多个User对象数据,封装的对象需要放到List<User>集合中,但是List集合还要依赖于 某个对象(某个对象作为方法的形参)

List<User>作为对象的属性,每个请求的参数数据类型为User集合

相对数组类型的封装较复杂,需要 设置单独的JavaBean,

一般叫做VO对象(value Object值对象) 里面设置一个集合,获取的集合参数 需要 到POJO中的集合中

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
需要 将请求参数集合 封装到VO对象中的集合 中,即VO对象的 List<User> userList 成员变量

但是 List<User> userList 是一个 List,并且 List 的元素为 User 对象,就是

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

4.1.2直接接受json格式的集合数据类型

使用ajax请求数据

不用再封装到VO对象中,直接形参写成List<User> list

使用ajax发送请求数据,可以将数据的格式设置为json格式

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

开启静态资源访问权限

可能出现页面404错误

问题出现在 前端控制器DispatcherServlet 的 配置,默认的 <url-patten>/<url-patten>

访问的资源都要进行虚拟路径的匹配,都需要经过DIspatcherServlet 前端控制器

把 JQuery的请求也当成Controller 的请求,简单理解就是在SpringMVC框架中找JQuery文件,当然找不到

匹配失败,因此需要 在SpringMVC框架中 开放 某些静态资源 的访问权限

就是当在SpringMVC框架中 找不到 指定资源的时候,将寻找权交给 之前的容器 Tomcat容器 寻找静态资源

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

或者

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

对应的三次请求
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

4.5请求数据的乱码问题

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

之前我们解决的方法就是 request.setCharacterEnCoding()设置编码

对于get请求,Tomcat服务器解决

对于post请求,使用过滤器解决

现在设置一个 全局过滤器filter 进行编码的过滤
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

4.6参数绑定注解

请求的参数键名,需要和 Bean的属性名一致,不一致则SpringMVC无法通过 方法形参的方式 获取请求参数

  • 通过@requestParam注解 解决 请求参数名称 和 业务方法参数名称不一致时 的 参数获取问题
    Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
    Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

其他参数

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

4.6获得Restful风格的参数

一种风格

参数不是?= 值 的形式,而是作为URL的一部分传递
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
在方法的形参中,可以设置 占位符 匹配URL中的参数,完成参数获取

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

4.7自定义类型转换器

SpringMVC内部具备一些内置的数据类型转换器,请求的参数都是字符串,SpringMVC可以把字符串数字 转化为 数字

但是这些内置的 不满足我们的需求,例如对日期 格式 的转换

使用步骤

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

场景
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
会报错,需求是封装自定义格式的数据

使用

  • 创建convert.DateConverter 实现 converter接口
    Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
  • spring-mvc.xml声明转换器
    声明 转换器服务工厂,让工厂产生我们定义的转换器Bean
    Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
  • 指定转换器工厂来产生 转换器Bean
    Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

4.8获取请求头数据

请求头也是键值的的形式,一般根据键获取值

  • @RequestHeader注解获取请求头参数

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

  • @CookieVale注解

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

4.9文件上传

web阶段文件上传客户端需要具备:

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

  • 文件上传项type=“file”
  • 表单提交为post
  • enctype属性是多表单形式

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

4.9.1文件上传原理

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

获取的数据 都在http请求体当中

SpringMVC内部封装的也是apach文件上传小组件,可以直接使用

4.9.2单文件上传
  • 导坐标
  • 配置文件上传解析器
  • 编写文件上传代码

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
在spring-mvc.xml文件中配置 文件上传解析器,由Spring提供的CommonsMultipartResolver对象

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
编写文件上传代码,SpringMVC 会将上传的文件 封装成一个对象

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

4.9.3多文件上传

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

表单准备对个参数即可,对应方法的参数也增加
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

五、SpringMVC拦截器

类似之前的 过滤器

简单理解 就是 访问资源目标方法的时候,做一些干预

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

5.1快速入门

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

controller.TargetController
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
然后在spring-mvc.xml配置

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
测试
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

5.2知识小结

拦截方法说明
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
自定义拦截器的步骤

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

5.3拦截器登录权限控制小案例

实现不登录情况下,不能操作,转到登录页面

在preHandel验证有没有登录,检查有无session中有无user

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
配置spring-mvc.xml

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
这里先简单实现 拦截 未登录 跳转到 登录页面的情况,因涉及案例环境,后续实现在补充…

六、SpringMVC异常处理机制

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
基本环境

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
之前阶段 对异常的处理就是 在业务层try...catch...

有弊端,抓异常代码和业务耦合,不利于异常定位

我们可以把解决异常抽取出来,让某一个组件进行异常处理

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
异常处理器可以使用SpringMVC定义好的异常处理器,也可以自定义异常处理器

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

6.1简单异常处理器

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
spring-mvc.xml配置默认异常处理器
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

6.2自定义异常处理器

Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

6.3小结

在业务中直接抛出异常即可,由对应的异常处理组件来处理
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制

本文地址:https://blog.csdn.net/qq_24654501/article/details/110069459