javaweb-day10:综合案例

1.基础知识

在这里插入图片描述

2.环境搭建

在这里插入图片描述

3.Restful风格的开发规范

在这里插入图片描述

4. 开发流程

在这里插入图片描述


正式开发

5.部门管理

5.1 查询部门

在这里插入图片描述

6.文件上传

6.1 文件上传三要素

在这里插入图片描述

(1)本地存储–生成随机名称

@Slf4j
@RestController
public class UploadController {@PostMapping("/upload")public Result upload(String username, Integer age, MultipartFile file) throws IOException {log.info("文件上传:{},{},{}",username,age,file);//将文件保存到本地服务器//1.获取原始文件名String originalFilename=file.getOriginalFilename();//2.生成新文件名String tmp=originalFilename.substring(originalFilename.lastIndexOf("."));   //文件后缀String newFilename= UUID.randomUUID()+tmp;log.info("新的文件名为:{}",newFilename);//3.将文件保存在本地服务器磁盘的特定位置file.transferTo(new File("E:\\1\\"+newFilename));return Result.success();}}

(2)云服务器存储

package com.xylearn.utils;import com.aliyun.oss.OSSClient;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.exceptions.ClientException;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;/*** 阿里云 OSS 工具类*/
@Component
public class AliOSSUtils {private String endpoint = "http://oss-cn-shanghai.aliyuncs.com";//说明:用EnvironmentVariableCredentialsProvider的话,要先根据官方文档去设置环境变量,重启电脑才生效EnvironmentVariableCredentialsProvider credentialsProvider =CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
//    String accessKeyId = "填你的accessKeyId";
//    String accessKeySecret = "填你的accessKeySecret";private String bucketName = "web-framework0011111";public AliOSSUtils() throws ClientException {}/*** 实现上传图片到OSS*/public String upload(MultipartFile file) throws IOException {// 获取上传的文件的输入流InputStream inputStream = file.getInputStream();// 避免文件覆盖String originalFilename = file.getOriginalFilename();String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));//上传文件到 OSSOSSClient ossClient = new OSSClient(endpoint, credentialsProvider);ossClient.putObject(bucketName, fileName, inputStream);//文件访问路径String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;// 关闭ossClientossClient.shutdown();return url;// 把上传到oss的路径返回}}

总结
在这里插入图片描述

7.参数配置化

(1)配置文件
在这里插入图片描述
(2)Yaml配置文件
在这里插入图片描述
在这里插入图片描述
(3)@ConfigurationProperties注解
在这里插入图片描述

8.登录

8.1 会话

在这里插入图片描述

8.1.1 基于cookie的会话跟踪技术

在这里插入图片描述
在这里插入图片描述

8.1.2 JWT令牌

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.1.3 登录校验-过滤器Filter

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

package com.xylearn.filter;import com.alibaba.fastjson2.JSONObject;
import com.xylearn.pojo.Result;
import com.xylearn.utils.JwtUtils;
import jakarta.servlet.*;
import jakarta.servlet.annotation.WebFilter;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;import java.io.IOException;@Slf4j
@WebFilter(urlPatterns = "/*")
public class LoginCheckFilter implements Filter {/*** 完成登录校验** @param servletRequest* @param servletResponse* @param filterChain* @throws IOException* @throws ServletException*/@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {//获取请求的urlHttpServletRequest request = (HttpServletRequest) servletRequest;HttpServletResponse response = (HttpServletResponse) servletResponse;String url = request.getRequestURL().toString();log.info("请求的url{}", url);//判断是否为登录请求,登录请求直接放行if (url.contains("login")) {log.info("登录操作,放行...");filterChain.doFilter(request, response);return;}//获取请求头中的令牌tokenString jwt = request.getHeader("token");//判断令牌是否存在,不存在返回错误if (!StringUtils.hasText(jwt)) {log.info("请求头token为空,返回未登录信息");Result error = Result.error("NOT LOGIN");String s = JSONObject.toJSONString(error);response.getWriter().write(s);return;}//令牌存在,解析,若解析失败返回错误try {JwtUtils.parseJWT(jwt);} catch (Exception e) {e.printStackTrace();log.info("jwt解析失败,返回未登录信息");Result error = Result.error("NOT LOGIN");String s = JSONObject.toJSONString(error);response.getWriter().write(s);return;}//放行filterChain.doFilter(request, response);}}

8.1.4 登录校验-拦截器Interceptor

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

9.异常处理

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/491912.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java全栈day17--Web后端实战(java操作数据库)

前言:本章应该是针对数据库基础讲解,数据的增删改查但是本人忘记对知识进行归纳总结就直接跳过,基本的内容都很简单,都是套式子使用。现在开始学习本章,很重要需要好好掌握。 一、使用的工具 二、JDBC 2.1概述 JDBC …

Scala的泛型界限

泛型界限 上限 泛型的上限,下限。对类型的更加具体的约束! 如果给某个泛型设置了上界:这里的类型必须是上界 如果给某个泛型设置了下界:这里的类型必须是下界

【C++复习第5小节】类和对象

文章目录 1. 内存对齐2. this 指针3. 构造函数 1. 内存对齐 #pragma pack(1) //指定对齐数为 1💧有一个小问题问大家,内存对齐其实也会造成空间浪费,为什么还要内存对齐呢? 》因为计算机读取数据是有要求的,要么就读…

【HarmonyOS】HarmonyOS 和 Flutter混合开发 (一)之鸿蒙Flutter环境安装

【HarmonyOS】HarmonyOS 和 Flutter混合开发 (一)之鸿蒙Flutter环境安装 一、前言 flutter作为开源适配框架方案,已经在Android,IOS,Web,Window四大平台进行了适配,一套代码,可以同…

2024年企业中生成式 AI 的现状报告

从试点到生产,企业 AI 格局正在被实时改写。我们对 600 名美国企业 IT 决策者进行了调查,以揭示新兴的赢家和输家。 从试点到生产 2024 年标志着生成性人工智能成为企业关键任务的一年。这些数字讲述了一个戏剧性的故事:今年人工智能支出飙升…

Linux 磁盘空间不足之排查方法(Troubleshooting Method for Linux Disk Space Shortage)

Linux 磁盘空间不足之排查方法 在Linux系统运维过程中,磁盘空间不足是一个常见且棘手的问题。当磁盘空间被占满时,系统的正常运行会受到影响,甚至可能导致服务中断。因此,迅速有效地排查和解决磁盘空间问题显得尤为重要。本文将详…

【Mybatis】MyBatis 探秘:#{} 与 ${} 参传差异解码,数据库连接池筑牢数据交互根基

前言 🌟🌟本期讲解关于Spring IOC&DI的详细介绍~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 🎆那么…

Ubuntu系统安装MySQL

使用在线方式安装 更新软件包 sudo apt update安装MySQL服务器 # 查看可使用的安装包 sudo apt search mysql-server安装指定版本的MySQL # 安装指定版本 sudo apt install -y mysql-server-8.0如果不加-y 会在安装过程中,系统将提示你设置MySQL的root密码。记住…

解决git clone时报错“authentication failed for huggingface repository”

问题1: 已经获取了模型的授权,但是git clone时,弹出弹窗 输入huggingface的用户名和密码后,报错如下 解决方式1: 阅读红框标注的说明,“password authentication in git is no longer supported.”&#…

(css)鼠标移入或点击改变背景图片

(css)鼠标移入或点击改变背景图片 html <div class"mapTip"><divv-for"(item, index) of legendList":key"index"class"mapTipOne":class"{ active: change index }"click"legendHandle(item, index)"…

下一代测序技术在宏基因组学中的应用

随着生物技术的迅猛发展&#xff0c;下一代测序技术&#xff08;Next Generation Sequencing, NGS&#xff09;已成为现代生物学和医学研究的核心工具之一。NGS技术不仅极大地提高了DNA测序的速度和通量&#xff0c;还显著降低了测序成本。这些优势使得NGS在多个领域得到了广泛…

基于 iAP2 协议 的指令协议,用于对安防设备的 MCU 进行操作

协议设计目标 1. 安全性&#xff1a;通过 iAP2 协议与 MCU 设备进行安全通信。 2. 通用性&#xff1a;支持对安防设备的常见功能进行操作&#xff0c;如状态查询、设备控制、参数配置等。 3. 高效性&#xff1a;数据结构简洁清晰&#xff0c;易于解析和扩展。 4. 扩展性&#x…

了解ARM的千兆以太网——RK3588

1. 简介 本文并不重点讲解调试内容&#xff0c;重点了解以太网在ARM设计中的框架以及在设备树以及驱动的一个整体框架。了解作为一个驱动开发人员当拿到一款未开发过的ARM板卡应该怎么去把网卡配置使用起来。 2. 基础知识介绍 在嵌入式ARM中实现以太网的解决方案通常有以下两种…

随机森林算法原理

随机森林算法原理 算法流程随机森林的生成随机森林的预测 算法总结随机森林的优点随机森林的缺点 算法流程 随机森林的生成 输入训练数据 D&#xff0c;样本个数为 m &#xff0c;待学习的决策树数量为 T。 对于 t 1,2,…,T&#xff0c;从 D 中有放回地采样 m 次&#xff0c…

asp.net repeater嵌套

OnItemCreated方式 <%-- 一级Repeater绑定班级信息 --%><asp:Repeater ID"rptClassInfo" runat"server" OnItemCreated"rptClassInfo_ItemCreated"><ItemTemplate><div class"classInfo"><h3><%# Ev…

35. Three.js案例-创建带阴影的球体与平面

35. Three.js案例-创建带阴影的球体与平面 实现效果 知识点 WebGLRenderer WebGLRenderer 是Three.js中用于渲染场景的主要类之一&#xff0c;它负责将场景中的对象渲染到画布上。 构造器 new THREE.WebGLRenderer(parameters : Object) 参数类型描述parametersObject可选…

TouchGFX移植(2)STM32CubeMX配置

硬件平台&#xff1a;STM32F429IGT6 屏&#xff1a;7寸RGB&#xff0c; 1024 X 600分辨率 1&#xff09;选择芯片 2&#xff09;SYS配置 3&#xff09;RCC配置 4&#xff09;FMC配置&#xff08;驱动板载SDRAM&#xff09; 这里的配置需要结合硬件原理图的接线&#xff1a;…

数字IC后端设计实现篇之TSMC 12nm TCD cell(Dummy TCD Cell)应该怎么加?

TSMC 12nm A72项目我们需要按照foundary的要求提前在floorplan阶段加好TCD Cell。这个cell是用来做工艺校准的。这个dummy TCD Cell也可以等后续Calibre 插dummy自动插。但咱们项目要求提前在floorplan阶段就先预先规划好位置。 TSCM12nm 1P9M的metal stack结构图如下图所示。…

30.攻防世界unserialize3

进入场景 解读一下 这个类 xctf 中有一个公共属性 $flag &#xff0c;其值为 111 &#xff0c;并且定义了一个 __wakeup 魔术方法&#xff0c;当对象被反序列化时会自动调用该方法&#xff0c;该方法会输出 bad requests 并终止程序的执行。 ?code提示了参数 <?php clas…

串口UART

1.并行和串行通信 2.常见的串行通信 3.同步和异步通信。同步通信需要时钟信号&#xff0c;异步通信不需要时钟信号。 4.双工通信 5.串口UART常见的几种协议 6.ARM单片机硬件结构 GD32F303单片机串口连接方式。 7.串口寄存器 8.底层如何调用上层的函数&#xff0c;注册回调…