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 小时前
CuTe 与 CuTe DSL:从 C++ 模板元编程到 Python DSL 的 GPU 编程演进
开发语言·c++·python·cutlass·cute·cute dsl
学长毕设3 小时前
基于SpringBoot的野生动物公益保护平台设计与实现-附源码
java·spring boot·后端
FRing033 小时前
vue2干货总结8(路由模块封装、router-link、声明式导航、路由重定向、编程式导航)
开发语言·前端·vue.js·vue2
旖旎夜光3 小时前
【C++ 基础入门】C++ 多态(上):虚函数、重写、override/final 与抽象类
开发语言·c++·笔记·学习
SL_staff3 小时前
离散制造排程破局:JVS-APS 四步闭环落地实践(开发者视角)
java·产品·全栈
这个昵称不容易3 小时前
SpringBoot 美容院管理系统:232个Java文件315个接口,5套角色从预约到发货一整条链路
java·springboot·毕设
starzy19903 小时前
深入理解Scala嵌套函数:作用域封装之道
开发语言·scala
Sakura_j_h_4 小时前
从零写一个 MCP stdio Server:用 Python 校验博客文章格式
开发语言·python·自动化·ai工具·mcp·json-rpc
装不满的克莱因瓶4 小时前
【SpringAI Alibaba】ReactAgent记忆管理MessageTrimmingHook与MessageDeletionHook
java·人工智能·ai·ai编程·springai·springaialibaba
文丑颜不良啊4 小时前
LeetCode2241~2260题目解析
java·leetcode