Day7 | Java框架 | SpringMVC

Day7 | Java框架 | SpringMVC

视频链接:黑马程序员SSM框架教程-SpringMVC

学习目标

  • 掌握基于 SpringMVC 获取请求参数与响应 json 数据操作
  • 熟练应用基于 REST 风格的请求路径设置与参数传递
  • 能够根据实际业务建立前后端开发通信协议并进行实现
  • 基于 SSM 整合技术开发任意业务模块功能

SpringMVC简介

  • 表现层拿到业务层返回的数据之后,将其转换成 json 格式发送给前端页面
  • 前端页面接收数据,将其解析成用户最终浏览的页面信息,交给浏览器

技术栈

  • 后端服务器
    • 数据层实现:JDBC → MyBatis 框架(加速开发)
    • 表现层开发 :Servlet → SpringMVC 框架

SpringMVC 概述

  • SpringMVC 是一种基于 Java 实现 MVC 模型的轻量级 Web 框架
  • 优点:相比于Sevlet,使用简单,开发便捷;灵活性强

入门案例

  1. 导入 SpringMVC 坐标与 Servlet 坐标

  2. 创建 SpringMVC 控制器类(等同于 Servlet 功能)

    用于处理请求

  3. 初始化 SpringMVC 环境(同Spring环境),设定 SpringMVC 加载对应的 bean

  4. 初始化 Servlet 容器,加载 SpringMVC 环境,并设置 SpringMVC 技术处理的请求

涉及的注解



SpringMVC 入门程序开发总结

AbstractDispatcherServletInitializer 类



入门案例工作流程分析

Controller 加载控制与业务bean加载控制(SpringMVC & Spring)




PostMan

PostMan是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件

  • 作用:常用于及进行接口测试(模拟网页发送各种各样的请求)
  • 特征:简单、实用、美观、大方
  • 基本使用:注册登录-->创建工作空间/进入工作空间-->发送请求测试结果

请求与响应

请求映射路径

团队多人开发,每人设置不同的请求路径。冲突问题如何解决? --> 设置模块名作为请求路径前缀

PostMan 发送携带参数 GET 请求

PostMan 发送携带参数 POST 请求

SpringMVC解决POST请求中文乱码问题

请求方式(不同类型的请求参数):@RequestParam

请求方式



传递 json 数据

具体操作看视频:json 数组、json 对象(POJO)、json 数组(POJO)

  1. 接收请求中的 json 数据



  2. 注解


日期型参数传递

注解

类型转换器

响应

注解


类型转换器 :将对象数据转换成 JSON 返回出去

REST风格

简介

即,访问网络资源的格式。

RESTful 入门案例



注解


REST 快速开发

简化为如下形式:

注解

标准请求动作映射(4种)

案例:基于RESTful数据交互

  • 先做后台功能,开发接口并调通接口
  • 再做页面异步调用,确认功能可以正常访问
  • 最后完成页面数据展示
  • 补充:放行静态资源访问


SSM整合

SSM整合:整合配置、功能模块开发、接口测试

Spring 整合 MyBatis

Spring 整合 SpringMVC



表现层数据封装

即,前后端联调协议。配合业务将数据整理成统一格式,反馈给前端页面,再由前端页面的人员进行解析。



异常处理器

  • 各个层级均出现异常,异常处理代码书写在哪一层?-->** 所有的异常均抛出到表现层进行处理**
  • 表现层处理异常,每个方法中单独书写,代码书写量巨大且意义不强,如何解决?-->AOP思想

SpringMVC 提供了异常处理器

项目异常处理方案





案例:SSM整合标准开发-前后台协议联调

详细请看视频教程。

拦截器

概念



入门案例:配置

  1. 制作拦截器功能类
  2. 配置拦截器的执行位置




拦截器执行顺序

拦截器参数


拦截器链配置

相关推荐
程序媛小果2 分钟前
基于java+SpringBoot+Vue的宠物咖啡馆平台设计与实现
java·vue.js·spring boot
追风林7 分钟前
mac m1 docker本地部署canal 监听mysql的binglog日志
java·docker·mac
芒果披萨22 分钟前
El表达式和JSTL
java·el
q5673152322 分钟前
在 Bash 中获取 Python 模块变量列
开发语言·python·bash
许野平1 小时前
Rust: 利用 chrono 库实现日期和字符串互相转换
开发语言·后端·rust·字符串·转换·日期·chrono
也无晴也无风雨1 小时前
在JS中, 0 == [0] 吗
开发语言·javascript
狂奔solar1 小时前
yelp数据集上识别潜在的热门商家
开发语言·python
duration~1 小时前
Maven随笔
java·maven
zmgst1 小时前
canal1.1.7使用canal-adapter进行mysql同步数据
java·数据库·mysql
跃ZHD1 小时前
前后端分离,Jackson,Long精度丢失
java