黑马程序员Springboot2简单学习笔记

news2024/10/5 22:37:35

Session是用于存放用户与web服务器之间的会话,即服务器为客户端开辟的存储空间。

文章:lombok @Slf4j注解

@Slf4j是用作日志输出的,一般会在项目每个类的开头加入该注解

可以配置静态资源的访问路径 这样访问任何的静态资源 但是每个页面都得改 麻烦

request.setAttribute()的用法详解

在Java Web开发中,request.setAttribute()是Servlet中的方法之一,用于在请求中设置属性。这些属性可以在请求的生命周期内共享,并且通常用于在不同组件之间传递数据。这种机制为开发人员提供了一种有效的方式来在请求处理过程中传递信息。

方法getRequestDispatcher()和sendRedirect()https://www.techguruspeaks.com/methods-getrequestdispatcher-and-sendredirect/

服务器端的重定向可以有两种方式,一是使用HttpServletResponse的sendRedirect()方法,一是使用RequestDispatcher的forward()方法.

【左京淳的JAVA WEB学习笔记】第四章转发、重定向、steam输出 https://ithelp.ithome.com.tw/articles/10255855

这篇比较通俗易解。

访问网站的时候,不经过login直接访问后续网页时不被允许的,可以先将登录信息放入session中,当访问后续页面的时候,看看session中是否有值就可以了,但是当页面多了,每个页面都得判断这就太麻烦了。用拦截器就方便多了。

重写上述三个方法,preHandle方法中获取session,如果为空则拦截,转发到login页面,并提示“请登录”,不为空则放行。那么在之前判断main中是否有session的地方直接这样写就行。后面的页面统一这样判断就可以了。

拦截器注册到容器中,实现WebMvcConfigurer的addInterceptors接口,指定拦截规则【如果拦截所有,静态资源也会被拦截】

WebMvcConfigurer实现定制了web功能的类,在类中重写了addInterceptors方法并将之前写的拦截器放入,并用这两个制定拦截规则addPathPatterns(“/“)//所有请求都被拦截包括静态资源了。 .excludePathPatterns(”/“,”/login","/css/”,“/fonts/“,”/images/”,“/js/**”);//设置要放行的页面。拦截所有并将静态资源放行(页面所需的css,js,image等)。

先preHandle,再目标方法mainPage,再postHandle,后afterCompletion

我感觉我真的需要三刷这个视频了,学的迷迷糊糊的。

SpringBoot实现文件上传功能(单文件、多文件)https://blog.csdn.net/weixin_47390965/article/details/122326369

https://geek-docs.com/html/html-tutorials/t_how-to-add-a-file-uploads-function-to-a-webpage-in-html.html

Servlet 的doGet()方法 https://blog.csdn.net/qq_40395874/article/details/113885985

localhost拒绝访问的解决方法 https://blog.csdn.net/qq_41999455/article/details/86630916

SpringBoot项目报错解决:“Error starting ApplicationContext. To display the conditions report re-run …”

Spring Boot 配置DataSource https://blog.csdn.net/qq_35760213/article/details/73863252

Javaweb——监听器
https://blog.csdn.net/pary__for/article/details/115032510

filter用于字符过滤

listener用于初始化作用域数据

innterceptor用于拦截请求

SpringBoot使用Druid连接池 + 配置监控页面(自定义版 + starter版)https://blog.csdn.net/yy8623977/article/details/127975428

Spring Boot2 —— Web原生组件注入及嵌入式容器https://blog.csdn.net/qq_35843514/article/details/115210069

命令行激活test/prod
java -jar xxx.jar --spring.profiles.active=prod --person.name=haha

这里是boss的原因是因为

java运行时环境和操作系统信息等都能获取到

从上往下的顺序:

  package com.itheima.bean;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component;


@Profile({"prod","default"})
@Component
@ConfigurationProperties("person")
@Data
public class Boss implements Person{
    private String name;
    private Integer age;
}
package com.itheima.bean;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
public interface Person {

   String getName();
   Integer getAge();
}
package com.itheima.bean;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component;

@Profile("test")
@Component
@ConfigurationProperties("person")
@Data
public class Worker implements Person{
    private String name;
    private Integer age;
}
package com.itheima.config;

import com.itheima.bean.Color;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

@Configuration
public class Config {

    @Profile("prod")
    @Bean
    public Color red(){
        return new Color();
    }

    @Profile("test")
    @Bean
    public Color green(){
        return new Color();
    }
}
package com.itheima.demos.web.controller;

import com.itheima.bean.Person;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @Value("${person.name:李四}")//这里的意思是不用再配.properties文件里面的person.name了
    private String name;

    //获取操作系统
    @Value("${}")
    private String osName;

    @Autowired//自动注入
    private Person person;

    //环境变量
    @Value("${MAVEN_HOME}")
    private String msg;

    @GetMapping("/")
    public String hello(){
        return person.getClass().toString();
    }
    @GetMapping("/person")
    public Person person(){
        return person;
    }

    @GetMapping("/msg")
    public String getMsg(){
        return msg + "==>" +osName;
    }
}
package com.itheima;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;

import java.util.Map;

@SpringBootApplication
public class BootzuihouApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext run = SpringApplication.run(BootzuihouApplication.class, args);

        //可获取到当前的环境
        ConfigurableEnvironment environment = run.getEnvironment();

        //环境里面包含系统的环境变量
        Map<String, Object> systemEnvironment = environment.getSystemEnvironment();

        //还有系统的属性
        Map<String, Object> systemProperties = environment.getSystemProperties();

        //输出
        System.out.println(systemEnvironment);
        System.out.println(systemProperties);
    }
}

applcation.yaml

person:
  age: 2222
  name: 2222

application.properties

server.port=8080

#\u6307\u5B9A\u6FC0\u6D3B\u7684\u73AF\u5883\u3002\u9ED8\u8BA4\u914D\u7F6E\u6587\u4EF6\u548C\u6307\u5B9A\u73AF\u5883\u7684\u914D\u7F6E\u6587\u4EF6\u90FD\u4F1A\u751F\u6548\u3002
#指定激活的环境。 默认配置文件和指定环境的配置文件都会生效
spring.profiles.active=myprod  

##profiles\u5206\u7EC4\u529F\u80FD
spring.profiles.group.myprod[0]=ppd
spring.profiles.group.myprod[1]=prod

#批量加载
spring.profiles.group.mytest[0]=test

person.name=1111
person.age=1111

application-ppd.yaml

application-prod.yaml

application-test.yaml

person:
  age: 19
person:
  name: prod-张三
  age: 18

server:
  port: 8000
person:
  name: test-张三

server:
  port: 7000  

好了好了完结撒花~后面的原理解析和源码解读等我有实力了又回来重新学吧。

本文由mdnice多平台发布

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

20. mediasoup服务器的布署与使用

Mediasoup Demo部署 架构服务分析 服务端提供3个服务&#xff1a; 1.www服务&#xff0c;浏览器通过访问服务器目录获取客户端代码&#xff0c;通过V8引擎&#xff0c;启动底层WebRTC 2.nodejs提供websocket服务和http服务&#xff0c;用于信令交互 3.Mediasoup C提供的流媒体…

Ui学习--UITableView

UI学习 UITableView基础UITableView协议UITableView高级协议与单元格总结 UITableView基础 UITableView作为iOS中的一个控件&#xff0c;用于以表格形式展示数据。例如通讯录好友&#xff0c;朋友圈信息等&#xff0c;都是UITableView的实际运用场景。 首先我们先要加入两个协…

ARM32开发--电源管理单元

知不足而奋进 望远山而前行 目录 文章目录 前言 学习目标 学习内容 PMU 电源域 VDD/VDDA域 备份域 1.2V域 省电模式 睡眠模式 深度睡眠模式 待机模式 几种模式总结 WFI和WFE指令 案例需求 模式初始化 源码 总结 前言 在嵌入式系统中&#xff0c;有效的电池管…

使用kettle做的数据同步案例

1 mongo同步数据到mysql中 我想把51万8400的计算出来的八字信息&#xff0c;从mongo同步到mysql&#xff0c;看看在mysql中运行会怎么样。 选择mongodb input&#xff0c;这个是在Big Data中。 填写数据库和表 获取到mongodb的字段,获取到mongo的字段&#xff0c;如果某个字段…

Windows10 利用QT搭建SOEM开发环境

文章目录 一. SOEM库简介二. 安装WinPcap三. SOEM(1.4)库安装(1) 编译32位库(2) 编译64位库 四. 运行SOEM示例代码五. WIN10下利用QT构建SOEM开发环境 一. SOEM库简介 SOEM&#xff08;Scalable Open EtherCAT Master 或 Simple Open EtherCAT Master&#xff09;是一个开源的…

SwiftUI 6.0(iOS 18)新容器视图修改器漫谈

概览 本届 WWDC 2024 观影正如火如荼的进行中&#xff0c;一片鸟语花香、枝繁叶茂的苹果树上不时结出几颗令人垂涎欲滴的美味苹果让秃头码农们欲罢不能。 如您所愿&#xff0c;在界面布局“利器” SwiftUI 这根蔓藤也长出不少喜人的果实&#xff0c;其中在 iOS 18.0 中新添加的…

1949年到2021年中国历年稻谷产量统计报告

数据介绍 数据来源于国家统计局&#xff0c;为1949年到2021年我国每年的稻谷产量数据。 2021年&#xff0c;我国稻谷产量为21284.24万吨&#xff0c;比上年增长0.5%。 数据统计单位为&#xff1a;万吨 我国稻谷产量有多少&#xff1f; 2021年&#xff0c;我国稻谷产量为2128…

TIA Portal 博途西门子自动化编程软件下载安装,TIA Portal 提高生产效率!

驱动编程功能则是TIA Portal的又一亮点&#xff0c;它支持各种驱动器的编程和配置&#xff0c;使设备能够精准地执行各种运动控制任务。此外&#xff0c;SCADA&#xff08;监控与数据采集&#xff09;编程功能使得用户可以实时监控生产过程的各项数据&#xff0c;确保生产过程的…

全网爆火的AI语音合成工具-ChatTTS,有人已经拿它赚到了第一桶金,送增强版整合包

上篇分享了如何从0到1搭建一套语音交互系统。 其中&#xff0c;语音合成&#xff08;TTS&#xff09;是提升用户体验的关键所在。 不得不说&#xff0c;AI 语音界人才辈出&#xff0c;从之前的Bert-Sovit&#xff0c;到GPT-Sovits&#xff0c;再到最近一周狂揽了 1w Star 的C…

在顺序表中使用顺序查找法查找某个关键字

//顺序表中顺序查找(SeqSearch) #include<stdio.h> #include<stdlib.h> #define MAX 100 #include<assert.h> typedef struct {int data[MAX];int length; }SeqList; int SeqSearch(SeqList* S, int key)//key为要查找的值 {printf("关键字序列&#xf…

11.泛型、trait和生命周期(上)

标题 一、泛型数据的引入二、改写为泛型函数三、结构体/枚举中的泛型定义四、方法定义中的泛型 一、泛型数据的引入 下面是两个函数&#xff0c;分别用来取得整型和符号型vector中的最大值 use std::fs::File;fn get_max_float_value_from_vector(src: &[f64]) -> f64…

转让注册地址在北京的无区域投资管理集团公司

公司名称中不带省市地域&#xff0c;或是公司名称没有行业表述的公司&#xff0c;都是要在工商总局进行核名的&#xff0c;我们简称为总局无区域核名公司&#xff0c;此类公司的注册须经总局局批准&#xff0c;名称可以不带省市地域、行业特点&#xff0c;现在公司名称新核准已…

LeetCode206-反转链表

题目 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 代码 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* …

【网络编程】进程间的通信

进程间通信意味着两个不同进程间交换数据&#xff0c;操作系统中应提供两个进程可以同时访问内存空间。 管道实现进程间通信 管道不属于进程资源&#xff0c;与套接字一样属于操作系统。两个进程通过操作系统提供内存空间进行通信 #include<unistd.h> int pipe(int fil…

高考志愿填报,如何选择大学专业?

选择大学专业是一件需要谨慎的事情&#xff0c;需要综合考虑各个因素。大学专业和将来的就业方向是一致的&#xff0c;选专业实际就是在选职业&#xff0c;选自己未来几十年的职业生活。如何去选择大学专业&#xff0c;建议从个人兴趣&#xff0c;个人优势能力&#xff0c;职业…

大家来决定:python-office运行时的提示信息,要不要删除?

​ 大家好&#xff0c;这里是程序员晚枫&#xff0c;今天想请大家投票决定一下&#xff1a;运行python-office时的下面这种中文提示信息&#xff0c;要不要全部都取消了&#xff1f;&#x1f447; 为什么加这个提示&#xff1f; 我是在2022年发布的这个开源项目&#xff0c;并…

Ctrl+Back(回退键)快捷键失效,导致IDEA不能删除多个字符

CtrlBackspace快捷键差不多失效了2年&#xff0c;因为没怎么用笔记本了&#xff0c;所以就没管。这阵子开始用了&#xff0c;在Idea里面不能通过CtrlBack的方式删除&#xff0c;只能一个个字符删除&#xff0c;真的难受。 后面尝试退出一些软件&#xff0c;停止一些服务&#x…

Bio-Info每日一题:Rosalind-07-Mendel‘s First Law(孟德尔第一定律 python实现)

&#x1f389; 进入生物信息学的世界&#xff0c;与Rosalind一起探索吧&#xff01;&#x1f9ec; Rosalind是一个在线平台&#xff0c;专为学习和实践生物信息学而设计。该平台提供了一系列循序渐进的编程挑战&#xff0c;帮助用户从基础到高级掌握生物信息学知识。无论你是初…

5000天后的世界

为何可以预见未来 1993年&#xff0c;在互联网的黎明时代&#xff0c;凯文凯利创办了《连线》杂志。他曾经采访过以比尔盖茨、史蒂夫乔布斯、杰夫贝佐斯为代表的一众风云创业家。《连线》杂志是全球发行的世界著名杂志&#xff0c;一直致力于报道科学技术带来的经济、社会变革…

特种设备观光车司机N2精选模拟试题

11、过电压继电器的返回电压与动作电压之比称为过电压继电器的返回系数。(√) 12、部门规章和地方政府规章都属于行政规章。(√) 13、在没有障碍时&#xff0c;倒车的车速应快一些&#xff0c;以免防碍交通。()(x) 14、场(厂)内专用机动车辆的安全运行&#xff0c;由使用单位…