4-3 Spring MVC框架-02
Spring MVC框架-02
Ⅰ.RESTful基础
- 是一种设计风格和开发方式
1.get和post请求区别:
| get | post |
|---|---|
| 获取请求 | 上传请求 |
| 请求参数在地址栏URL | 请求参数在请求体里面 |
| URL长度有限制;保密性不好 | 请求体长度没有限制;保密性好 |
| 利于数据分享 | 利于数据加密传输 |
| 传输效率快 | 传输效率比get慢一点 |
2.@PathVariable
- URL中使用的占位符是{id},则方法的参数名称也应该是id,就可以直接匹配上
- 结合正则表达式进行匹配 :{占位符名称:正则表达式}
- 多种不冲突的正则表达式是可以同时存在的
- 优先精确匹配@GetMapping("/
list/info.do")
@GetMapping("/{userId}/info.do")
public UserVO info(@PathVariable("userId") Long id) {
// ...
}
Ⅱ.响应正文的结果类型
1.<响应结果类型>JsonResult
状态state 例如:2
信息message 例如:"登录失败,用户名不存在"
数据data
2.构造方法与静态方法
处理重复冗余代码:
通过调用
构造方法:处理重复代码,外部new对象实现,但是不直观通过调用
静态方法:处理重复代码,根据静态方法名(见名知意)实现功能--推荐方法重载的可以互相引用
3.Enum 枚举
- 应用的前提是,它的值一定是相对有限的(
- 只能在列举的枚举内部已有的值进行实现
- 穷举所有可能有限的值
- 里边的属性值就是类的一个对象
4.泛型
- 不确定的类型可以用泛型
- 声明泛型的步骤:
- 属性值==>类=>静态方法,需要多加一个泛型(类加时就执行了,没有实例化类对象)
public class JsonResult<T> {
//泛型对象
private T data;
//泛型静态方法
public static <T> JsonResult<T> ok(T data){
JsonResult<T> jsonResult = new JsonResult<>();
}
//非泛型静态方法<Void>
public static JsonResult <Void> ok(){
JsonResult<Void> jsonResult = new JsonResult<>();}
//私有化构造方法,不允许外部随意创建JsonResult对象
private JsonResult() {}
###泛型的使用,声明时的类型和使用时应该保持一致
Ⅲ.统一处理异常
1.异常
- 处理异常的本质并不能够让异常消失,而是避免下一次出同一样的错
- 控制器:处理异常=>目的(和客户端打交道,反馈给用户)
2.springmvc异常处理机制
注解:@ExceptionHandler
访问权限:公有的
返回值类型: 参考处理请求的方法的返回值类型
方法名称:自定义
参数列表:必须包含1个异常类型的参数,并且可按需添加HttpServletRequest、HttpServletResponse等少量特定的类型的参数,
不可以随意添加参数@ExceptionHandler public String handleException(NullPointerException e) { return "Error, NullPointerException!"; }
只能作用于当前控制器类中各个处理请求的方法,
注解:@RestControllerAdvice
统一处理异常
类注解优先精准匹配异常方法,
范围越小越优先Spring MVC允许存在多个统一处理异常的方法,这些方法可以在不同的类中,只要处理的异常的类型不冲突即可(允许继承)
- 例如:如果有2个或多个方法都处理NullPointerException,是错误的
- 例如:如果同时存在2个方法,分别处理NullPointerException和RuntimeException,是允许的
通常都会有handleThrowable()方法(方法名是自定义的),以避免某个异常没有被处理而导致500错误!– 此方法中应该输出异常的相关信息,甚至跟踪信息,否则,当程序运行此至处时,可能不便于观察、分析、记录出现异常
Ⅳ.拦截器(Interceptor)
- 运行在所有控制器处理请求之前和之后的一种组件
- 只要是若干种不同的请求过程中都需要执行同样的或高度相似的代码,都可以使用拦截器解决,典型的例如验证用户是否已经登录等等
1.配置
拦截器类:实现接口 HandlerInterceptor 并重写其内的所有方法;SpringMVC配置类:实现接口 WebMvcConfigurer 重写addInterceptors()方法;
4-3 Spring MVC框架-02的更多相关文章
- Spring MVC篇一、搭建Spring MVC框架
本项目旨在搭建一个简单的Spring MVC框架,了解Spring MVC的基础配置等内容. 一.项目结构 本项目使用idea intellij创建,配合maven管理.整体的目录结构如图: 其中ja ...
- Spring MVC 框架的架包分析,功能作用,优点
由于刚搭建完一个MVC框架,决定分享一下我搭建过程中学习到的一些东西.我觉得不管你是个初级程序员还是高级程序员抑或是软件架构师,在学习和了解一个框架的时候,首先都应该知道的是这个框架的原理和与其有关j ...
- 从零开始学 Java - 搭建 Spring MVC 框架
没有什么比一个时代的没落更令人伤感的了 整个社会和人都在追求创新.进步.成长,没有人愿意停步不前,一个个老事物慢慢从我们生活中消失掉真的令人那么伤感么?或者说被取代?我想有些是的,但有些东西其实并不是 ...
- 【WEB】初探Spring MVC框架
Spring MVC框架算是当下比较流行的Java开源框架.但实话实说,做了几年WEB项目,完全没有SpringMVC实战经验,乃至在某些交流场合下被同行严重鄙视“奥特曼”了.“心塞”的同时,只好默默 ...
- Spring mvc框架 controller间跳转 ,重定向 ,传参
一.需求背景 1. 需求:spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示. @Req ...
- spring mvc 框架搭建及详解
现 在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不 ...
- Spring MVC框架搭建
Spring MVC篇一.搭建Spring MVC框架 本项目旨在搭建一个简单的Spring MVC框架,了解Spring MVC的基础配置等内容. 一.项目结构 本项目使用idea intellij ...
- Spring MVC框架下的第一个Hello World程序
本程序是一个maven程序,使用maven方便管理jar包和程序,简化了操作步骤.本程序的目的是通过一个简单的程序,了解Spring MVC框架的基本工作流程,由简入繁的学习Spring MVC框架, ...
- spring MVC框架入门(外加SSM整合)
spring MVC框架 一.什么是sping MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 W ...
随机推荐
- 从零开始,开发一个 Web Office 套件(16):拖动控制点,调整编辑器大小
这是一个系列博客,最终目的是要做一个基于 HTML Canvas 的.类似于微软 Office 的 Web Office 套件(包括:文档.表格.幻灯片--等等). 博客园:<从零开始, 开发一 ...
- 解决vue安装less报错Failed to compile with 1 errors的问题
1.创建vue项目后安装less,执行 npm install less less-loader --save-dev 下载版本为:less-loader@6.1.0 , less@3.11.3,重启 ...
- 重新审视C# Span<T>数据结构
先谈一下我对Span的看法, span是指向任意连续内存空间的类型安全.内存安全的视图. Span和Memory都是包装了可以在pipeline上使用的结构化数据的内存缓冲器,他们被设计用于在pipe ...
- Django学习——ajax发送其他请求、上传文件(ajax和form两种方式)、ajax上传json格式、 Django内置序列化(了解)、分页器的使用
1 ajax发送其他请求 1 写在form表单 submit和button会触发提交 <form action=""> </form> 注释 2 使用inp ...
- debconf-utils-交互式安装时预配置
debconf-utils是一个可以在Ubuntu下预先配置要安装程序的小工具,它可以避免在安装一个DEB程序时的弹窗输入问题,这可能在编写一键部署脚本的时候非常有用. 以下我们用安装MySQL-AP ...
- 【C++ 字符串题目】 输入三个人名,按字母顺序排序输出
题目来源:https://acm.ujn.edu.cn Problem A: [C++ 字符串] 输入三个人名,按字母顺序排序输出 Time Limit: 1 Sec Memory Limit: 1 ...
- springboot2.7.x 集成log4j2配置写入日志到mysql自定义表格
在阅读之前请先查看[springboot集成log4j2] 本文暂不考虑抽象等实现方式,只限于展示如何自定义配置log4j2并写入mysql数据库(自定义结构) 先看下log4j2的配置 <?x ...
- 数字图像处理-基于matlab-直方图均匀化,傅立叶变换,图像平滑,图像锐化
直方图均匀化 任务:用MATLAB或VC或Delphi等实现图像直方图均匀化的算法. clc;clear;close all; % 清除工作台 % path(path,'..\pics'); % 设置 ...
- node zlib压缩模块了解一下
压缩: 从index.html压缩成index.html.gz const zlib = require('zlib'); const gzip = zlib.createGzip();const f ...
- canvas简易画布
今天学习了canvas,利用它做了一个简易版的画板,校验自己所学的知识,分享出来以供大家学习指教.先上效果图. 主要是使用了canvas的stroke和clearReact来实现画板的绘画和橡皮擦功能 ...