【SpringBoot】 什么是springboot(三)?springboot使用ajax、springboot使用reids

文章目录

  • SpringBoot
    • 第五章
    • 第六章
      • 1、springboot使用ajax
      • 2、springboot使用reids
        • 1、单机版
          • **使用步骤**
            • 1-5步
            • 6
            • 7-9步
          • RedisTemplate
            • 使用RedisTemplate
        • 2、集群版
          • 开启集群
          • 项目配置
            • 1
            • 2
            • 3
            • 4-5
    • 第七章
      • 1、springboot文件上传
        • 使用步骤
          • 1-2
          • 3
          • 4-5
      • 2、springboot邮件发送
        • 步骤
          • 1-2
          • 3
          • 4
          • 5
      • 3、springboot拦截器
        • 1、创建应用的基本结构与拦截器无关
        • 2、加入拦截器
      • 4、springboot整合shiro
        • 1、与传统ssm区别
        • 2、步骤
          • 1-3
          • 4
          • 5
          • 6-7
          • 8
          • 9-10
          • 11
          • 12-13
          • 14
          • 15
          • 16-17
          • 18-19
          • 20
          • 21

SpringBoot

第五章

整章都在讲thymeleaf的语法

第六章

1、springboot使用ajax

如果通过ajax请求访问springboot控制器的方法:

	查询使用get请求: 		@GetMapping
	添加使用post请求:	    @PostMapping
	删除使用delete请求:	@DeleteMapping
	修改使用put请求:		@PutMapping

2、springboot使用reids

1、单机版
使用步骤
1-5步
@@@@@@在springboot中使用单机版的redis
1、开启redis
	A、进入/usr/local/d113/redis/bin

	B、执行命令启动redis端
		./redis-server redis.conf

	C、执行命令启动redis客户端
		./redis-cli


2、创建springboot项目

3、导入下列依赖
	1、热部署
	2、web
	3、lombok
	4、mysql
	5、mybatis-plus
	6、druid
	7、spring-boot-data-starter-redis
	8、velocity
	9、swagger

4、使用代码生成器生成代码 

5、编写配置类,扫描Mapper接口

	@Configuration
	@MapperScan(basePackages = "com.qs.mapper")
	@EnableSwagger2
	public class WebConfig {
	}
6
6、编写yml
	server:
	  port: 9999
	spring:
	  datasource:
	    type: com.alibaba.druid.pool.DruidDataSource
	    driver-class-name: com.mysql.jdbc.Driver
	    url: jdbc:mysql:///d113
	    username: root
	    password: root
	  redis:
	    host: 192.168.47.128
	    port: 6379
	    jedis:
	      pool:
		min-idle: 100 #最小闲置连接数
		max-idle: 200 #最大闲置连接数
		max-active: 300 #最大连接数
		time-between-eviction-runs: 3s #如果闲置连接超过上限,就将3s未使用的闲置连接销毁
		max-wait: 3s #等待连接的时间
	logging:
	  level:
	    com:
	      qs:
		mapper: debug
7-9步
7、在配置类中,启用缓存管理
	@EnableCaching //启用缓存管理

8、在service接口以及实现类中编写方法,并胜在service的方法上加上注解,使用redis进行缓存

	@Service
	public class InfoServiceImpl extends ServiceImpl<InfoMapper, Info> implements InfoService {
   

	    @Autowired
	    private InfoMapper infoMapper;

	    /**
	     *加了该注解后,在查询时,将会在redis进行缓存,并且自动生成key的名称
	     * key的名称=  findById::id
	     */
	    @Cacheable(value = "findById")
	    @Override
	    public Info findById(Integer id) {
   
		System.out.println("--------------------从数据库查询了编号为"+id+"的数据");
		return infoMapper.selectById(id);
	    }
	}

9、编写控制器类进行测试
	@RestController
	@RequestMapping("/info")
	public class InfoController {
   
	    @Autowired
	    private InfoService infoService;

	    @GetMapping("/find")
	    public Info find(Integer id){
   
		return infoService.findById(id);
	    }

	}
RedisTemplate
@@@@@@这种方式的缓存主要是适用于非高并发环境,如果在高并发环境下,容易出现缓存击穿。为了解决该问题,我们可以使用RedisTemplate模板类配置缓存
	
	如果使用RedisTemplate配置redis,下列两个注解不需要指定:

		@EnableCaching //启用缓存管理	
		@Cacheable(value = "findById")
使用RedisTemplate
@@@@@@@使用RedisTemplate

    @Autowired
    private InfoMapper infoMapper;

    //注入redisTemplate模板
    @Autowired
    private RedisTemplate<Object,Object> redisTemplate;

    public Info findById(Integer id) {
   

        //默认情况下,RedisTemplate模板它在进行缓存时,有自己的序列化规则缓存数据,但这样会导致产生乱码,浏览起
        //来不方便,为了解决该问题,我们一般要自己设置RedisTemplates模板的键使用序列化规则,防止产生乱码

        //指定序列化规则,防止出现乱码,这种序列化规则不会产生乱码
        StringRedisSerializer serializer = new StringRedisSerializer();
        //指定RedisTemplate在缓存数据时,key(键)采用我们设置的序列化规则,这样就不会出现乱码
        redisTemplate.setKeySerializer(serializer);

        //查询数据库之前,首先判断redis中有没有需要的数据
        Info info = (Info) redisTemplate.opsForHash().get("springboot_113_7_01",id);//键,字段

        //判断info是否为空
        if(ObjectUtils.isEmpty(info)){
   
            //缓存中没有查询到该对象,准备查询数据库,此时会有100个线程准备查询数据库
            synchronized (this){
   
                //再一次查询缓存,但此时,只允许一个线程一个线程查询
                info = (Info) redisTemplate.opsForHash().get("springboot_113_7_01",id);
                //再一次判断是否查询到对象
                if(ObjectUtils.isEmpty(info)){
   
                    //此时,缓存中依然没有对象,需要去找数据库
                    System.out.println("----------------------从数据库中加载了编号为"+id+"的数据");
                    //查询数据库,获得对象
                    info = infoMapper.selectById(id);
                    //将对象存放到redis
                    redisTemplate.opsForHash().put("springboot_113_7_01",id,info);
                    return info;
                }else{
   
                    //此时,缓存中已经有了对象,不需要查询数据库,直接返回缓存中的对象即可
                    System.out.println("----------------------从缓存中加载了编号为"+id+"的数据");
                    return info;
                }
            }
        }else{
   
            //缓存中查询到了对象,直接返回缓存中的对象
            System.out.println("----------------------从缓存中加载了编号为"+id+"的数据");
            return info;
        }

    }

2、集群版
开启集群
@@@@@@@@@在springboot中访问redis集群

####开启redis集群
1、进入 /usr/local/d113/redis-cluster目录

2、分别进入 7001~7006目录,启动6台redis服务器

	./redis-server redis.conf

3、进入7001~7006任意目录,登录redis集群的客户端
	
	cd  /usr/local/d113/redis-cluster/7001

	./redis-cli -h 192.168.47.128 -p 7001 -c

项目配置
1
#########在项目中进行如下配置

1、导入依赖 
	
	@@@如果只是使用redis集群,spring-boot-starter-data-redis可以导入也可以不导入

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>

2
2、在yml文件中配置集群的服务器节点
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql:///d113
    username: root
    password: root
  redis:
    host: 192.168.47.128
    port: 6379
    jedis:
      pool:
        min-idle: 100 #最小闲置连接数
        max-idle: 200 #最大闲置连接数
        max-active: 300 #最大连接数
        time-between-eviction-runs: 3s #如果闲置连接超过上限,就将3s未使用的闲置连接销毁
        max-wait: 3s #等待连接的时间
    cluster:
      nodes: 192.168.47.128:7001,192.168.47.128:7002,192.168.47.128:7003,192.168.47.128:7004,
		192.168.47.128:7005,192.168.47.128:7006
3
3、在配置类解析集群节点,获得jedis集群
	
	@Configuration
	@MapperScan(basePackages = "com.qs.mapper")
	@EnableSwagger2
	//@EnableCaching //启用缓存管理
	public class WebConfig {
   
	    
	    //192.168.47.128:7001,192.168.47.128:7002,192.168.47.128:7003,192.168.47.128:7004,192.168.47.128:7005,192.168.47.128:7006
	    @Value("${spring.redis.cluster.nodes}")//-------------------读取yml文件根据键取值赋值给属性
	    private 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【智能算法】最优捕食算法(OFA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2017年&#xff0c;GY Zhu受到动物行为生态学理论启发&#xff0c;提出了最优捕食算法&#xff08;Optimal Foraging Algorithm, OFA&#xff09;。 2.算法原理 2.1算法思想 OFA灵感来源…

网络编程学习笔记1

文章目录 一、socket1、创建socket2、网络通信流程3、accept()函数4、signal()函数5、recv()函数6、connect()函数 二、I/O多路复用1.select模型2.poll模型3.epoll模型 注 一、socket 1、创建socket int socket(int domain,int type,int protocol); //返回值&#xff1a;一个…

微信小程序的Vant Weapp组件库(WeUI组件库)

一、定义&#xff1a; 是一套开源的微信小程序UI组件库。提供了一整套UI基础组件和业务组件&#xff0c;能够快速地搭配出一套风格统一的页面 二、使用&#xff1a; &#xff08;1&#xff09;&#xff08;找到.eslintrc.js 右键&#xff0c;在内件终端打开&#xff09;打开命…

|Python新手小白中级教程|第二十八章:面向对象编程(类定义语法私有属性类的继承与多态)(4)

文章目录 前言一、类定义语法二、私有方法和私有属性1.私有属性2.私有方法 三、类“继承”1.初识继承2.使用super函数调用父类中构造的东西 四、类“多态”1.多态基础2.子类不同形态3.使用isinstance函数与多态结合判断类型 总结 前言 大家好&#xff0c;我是BoBo仔吖&#xf…

RocketMQ学习笔记(一)

一、基本概念 生产者&#xff08;Producer&#xff09;&#xff1a;也称为消息发布者&#xff0c;是RocketMQ中用来构建并传输消息到服务端的运行实体&#xff0c;举例&#xff1a;发信者主题&#xff08;Topic&#xff09;&#xff1a;Topic是RocketMQ中消息传输和存储的顶层…

【全开源】Java知识付费教育付费资源付费平台公众号小程序源码

特色功能&#xff1a; 多样化的内容呈现&#xff1a;资源付费平台小程序支持图文、音视频、直播等多种形式的内容呈现&#xff0c;为用户提供了丰富的学习体验。直播课程&#xff1a;专家或讲师可以通过小程序进行在线授课&#xff0c;与用户实时互动&#xff0c;增强了学习的…

再有人说数字孪生大屏没有用,用这8条怼回去。

数字孪生大屏之所以受到欢迎&#xff0c;主要有以下几个原因&#xff1a; 实时数据可视化 数字孪生大屏可以将实时数据以直观的可视化形式展示出来&#xff0c;让用户能够一目了然地了解数据的状态和趋势。这样可以帮助用户更好地理解和分析数据&#xff0c;及时做出决策和调…

动态规划算法练习——计数问题

题目描述 给定两个整数 a 和 b&#xff0c;求 a 和 b 之间的所有数字中 0∼9 的出现次数。 例如&#xff0c;a1024&#xff0c;b1032&#xff0c;则 a 和 b 之间共有 9 个数如下&#xff1a; 1024 1025 1026 1027 1028 1029 1030 1031 1032 其中 0 出现 10 次&#xff0c;1 出现…

蓝桥杯-网络安全比赛(7)基础知识 HTTP、TTL、IP数据包、MSS、MTU、ARP、LLMNR、MDNS、NBNS。

1. IP中TTL值能够给我提供什么信息&#xff1f;2. IP头部中标志、13位偏移、32位源IP地址、目标IP、IP数据包格式&#xff0c;有多少字节3. IP头部中的16位标识是什么&#xff1f;4. MSS 和MTU分别有多大&#xff1f;5. 怎么获取路由IP信息&#xff1f;PING、NSLOOKUP、TRACERT…

day6Qt作业

人脸识别系统 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <opencv2/opencv.hpp> #include <iostream> #include <math.h> #include<opencv2/face.hpp> #include <vector> #include <map> #include <QMessag…

创建一个react项目(router,store,axios,antd)最后有项目地址

第一步&#xff1a;使用cra脚手架 创建项目 文档地址&#xff1a;Create React App 中文文档 npx create-react-app 你的项目名称 第二步&#xff1a;整理项目结构和删除多余代码 目标效果图&#xff1a; 在src目录下分别新建apis,assets,components,pages,router,store,ut…

重学JavaScript核心知识点(二)—— 详解Js中的模块化

详解Js中的模块化 1. 模块化的背景2. 来看一个例子3. 优雅的做法 —— 创建模块对象4. 模块与类&#xff08;class&#xff09;5. 合并模块6. 动态加载模块 1. 模块化的背景 JavaScript 在诞生之初是体积很小的&#xff0c;早期&#xff0c;它们大多被用来执行独立的脚本任务&…

C++初学者,使用命令行编绎C文件

今天在家里&#xff0c;闲来无事。又开始学习制作Helloworld! VStudio 版本众多&#xff0c;用哪个好呢&#xff0c;真是不好选择。今天就使用网上的大神&#xff1a;theoractice&#xff0c;制造的版本来学习C&#xff0c;我喜欢2013这个版本&#xff0c;真是太好用了。不但C…

Qt自定义控件--提升为

为什么要自定义控件 1&#xff0c;有复合小控件需要组合为一个整体控件时&#xff1b; 2&#xff0c;一个复合控件需要重复使用时&#xff1b; 实现 自定义控件文件 新增三个文件 关联不同组的控件 关联之前的准备工作 1&#xff0c;在主控件选择和子控件所有控件所在控件…

【一键录音,轻松转换:用Python打造个性化音频记录工具】

在数字化时代,音频记录已成为日常学习、工作和娱乐不可或缺的一部分。想象一下,只需简单按下几个键,即可随时随地捕捉灵感,记录会议要点,或是珍藏孩子的童言稚语。本文将引领您步入Python编程的奇妙世界,展示如何借助几个强大的库,构建一个既简单又实用的音频录制及转换…

第十二届蓝桥杯省赛真题 Java A 组【原卷】

文章目录 发现宝藏【考生须知】试题 A: 相乘试题 B: 直线试题 C : \mathrm{C}: C: 货物摆放试题 D: 路径试题 E: 回路计数试题 F : \mathrm{F}: F: 最少砝码试题 G: 左孩子右兄弟试题 H : \mathrm{H}: H: 异或数列试题 I \mathbf{I} I 双向排序试题 J : \mathrm{J}: J: 分…

如何快速展示专业:掌握类的基本概念-类/方法/关键字/变量/数据类型/注释

在李笑来的《财富自由之路》中提到一种初学者快速入门的学习方法&#xff1a;快速掌握最小必要知识。 关于Java的类&#xff0c;最少必要知识就是本文提到的基本概念&#xff0c;掌握了这些基本概念&#xff0c;就对类有了基本的了解&#xff0c;为后续的深入学习和沟通奠定了基…

Go编程语言的调试器Delve | Goland远程连接Linux开发调试(go远程开发)

文章目录 Go编程语言的调试器一、什么是Delve二、delve 安装安装报错cgo: C compiler "gcc" not found: exec: "gcc": executable file not found in $PATH解决 三、delve命令行使用delve 常见的调试模式常用调试方法todo调试程序代码与动态库加载程序运行…

真要这么卷?某国产大模型定价下调90%,百万 tokens 只需 1 元!

就在刚刚&#xff0c;国内明星AI公司——智谱AI官宣重磅炸弹&#xff1a; 将能力对标GPT3.5-Turbo的GLM-3的大模型API调用价格最高下调90%&#xff0c;价格仅为原来的十分之一&#xff01; 废话不多说&#xff0c;直接上图&#xff1a; 官网地址&#xff1a;https://open.big…

【SRC实战】前端脱敏信息泄露

挖个洞先 https://mp.weixin.qq.com/s/xnCQQCAneT21vYH8Q3OCpw “ 以下漏洞均为实验靶场&#xff0c;如有雷同&#xff0c;纯属巧合 ” 01 — 漏洞证明 一、前端脱敏&#xff0c;请求包泄露明文 “ 前端脱敏处理&#xff0c;请求包是否存在泄露&#xff1f; ” 1、获取验…