![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JavaEE
文章平均质量分 80
学习笔记
阿瞒有我良计15
再长的路一步步也能走完,再短的路不迈开双脚也无法到达!
展开
-
黑马程序员——Spring框架——day07——SpringBoot高级
1.SpringBoot自动化配置原理starter依赖管理机制目的:通过依赖能了解SpringBoot管理了哪些starter讲解:通过依赖。原创 2024-06-09 10:08:07 · 782 阅读 · 0 评论 -
黑马程序员——Spring框架——day06——SpringBoot基础
SpringMVC的HelloWord程序大家还记得吗?SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程原生开发SpringMVC程序过程入门案例中没有引入spring-webmvc等依赖包,没有配置Tomcat服务器,为什么能正常启动?我们没有配置端口号,为什么端口是8080?原创 2024-06-07 08:18:49 · 828 阅读 · 0 评论 -
黑马程序员——Spring框架——day05——SpringMVC高级
/描述统一格式中的数据//描述统一格式中的编码,用于区分操作,可以简化配置0或1表示成功失败//描述统一格式中的消息,可选属性//同学们自己添加getter、setter、toString()方法Result类中的字段并不是固定的,可以根据需要自行增减程序开发过程中不可避免的会遇到异常现象,我们不能让用户看到这样的页面数据出现异常现象的常见位置与常见诱因如下:框架内部抛出的异常:因使用不合规导致数据层抛出的异常:因外部服务器故障导致(例如:服务器访问超时)原创 2024-06-06 09:17:04 · 601 阅读 · 0 评论 -
黑马程序员——Spring框架——day04——SpringMVC基础
Servlet属于web层开发技术,技术特点:每个请求都需要创建一个Servlet进行处理创建Servlet存在重复操作代码灵活性低,开发效率低是否有技术方案可以解决以上问题?SpringMVC是一种基于Java实现MVC模型的轻量级Web框架优点使用简单、开发便捷(相比于Servlet)灵活性强代码编写完后,我们要想测试,只需要打开浏览器直接输入地址发送请求即可。但是我们如果我们发送的是GET请求可以直接使用浏览器,但是如果要发送的是POST请求呢?原创 2024-06-03 16:51:15 · 678 阅读 · 0 评论 -
Spring的事务传播机制详解
Spring的事务传播机制有7种,在枚举Propagation中有定义。原创 2024-06-01 18:00:27 · 595 阅读 · 0 评论 -
黑马程序员——Spring框架——day03
问题1:AOP的作用是什么?问题2:AOP有哪些使用场景?问题3:AOP?AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构OOP(Object Oriented Programming)面向对象编程作用:在不惊动原始设计的基础上为其进行功能增强。简单的说就是在不改变方法源代码的基础上对方法进行功能增强。Spring理念:无入侵式/无侵入式。原创 2024-06-01 17:51:28 · 933 阅读 · 2 评论 -
黑马程序员——Spring框架——day02
问题:按照Bean名称获取Bean有什么弊端,按照Bean类型获取Bean有什么弊端?BeanFactory是IoC容器的顶层接口,初始化BeanFactory对象时,加载的bean延迟加载ApplicationContext接口是Spring容器的核心接口,初始化时bean立即加载ApplicationContext接口提供基础的bean操作相关方法,通过其他接口扩展其功能ApplicationContext接口常用初始化类ClassPathXmlApplicationContext(常用)原创 2024-05-26 17:59:07 · 1029 阅读 · 0 评论 -
黑马程序员——Spring框架——day01
问题导入我们为什么要学习Spring框架?为什么要学Spring技术是JavaEE开发必备技能,企业开发技术选型命中率>==90%==专业角度==简化开发==,降低企业级开发的复杂性==框架整合==,高效整合其他技术,提高企业级应用开发与运行效率生命周期:从创建到消亡的完整过程bean生命周期:bean从创建到销毁的整体过程bean生命周期控制:在bean创建后到销毁前做一些事情。原创 2024-05-24 15:38:56 · 783 阅读 · 0 评论 -
[黑马程序员SpringBoot2]——原理篇1
导入实现了ImportBeanDefinitionRegistrar接口的类,通过BeanDefinition的注册器注册实名bean,实现对容器中bean的裁定,例如对现有bean的覆盖,进而达成不修改源代码的情况下更换实现的效果。导入实现了BeanDefinitionRegistryPostProcessor接口的类,通过BeanDefinition的注册器注册实名bean,实现对容器中bean的最终裁定。使用@Bean定义第三方bean,并将所在类定义为配置类或Bean。原创 2023-11-24 20:53:08 · 119 阅读 · 0 评论 -
[黑马程序员SpringBoot2]——开发实用篇3
企业级应用中广泛使用的三种异步消息传递技术JMSAMQPMQTTJMS (Java Message Service):一个规范,等同于JDBC规范,提供了与消息服务相关的API接口JMS消息模型peer-2-peer:点对点模型,消息发送到一个队列中,队列保存消息。队列的消息只能被一个消费者消费,或超时publish-subscribe: 发布订阅模型,消息可以被多个消费者消费,生产者和消费者完全独立,不需要感知对方的存在JMS消息种类MapMessage。原创 2023-11-24 07:39:47 · 345 阅读 · 0 评论 -
[黑马程序员SpringBoot2]——开发实用篇2
MongodbMongoDB是一个开源、高性能、无模式的文档型数据库。NoSQL数据库产品中的一种,是最像关系型数据库的非关系型数据库淘宝用户数据存储位置:数据库特征:永久性存储,修改频度极低游戏装备数据、游戏道具数据存储位置:数据库、Mongodb.特征:永久性存储与临时存储相结合、修改频度较高直播数据、打赏数据、粉丝数据存储位置:数据库、Mongadb.特征:永久性存储与临时存储相结合,修改频度极高物联网数据存储位置:Mongadb.特征:临时存储,修改频度飞速。原创 2023-11-20 11:28:57 · 203 阅读 · 0 评论 -
[黑马程序员SpringBoot2]——开发实用篇1
通用配置无法设置具体的数据源配置信息,仅提供基本的连接相关配置,如需配置,在下一级配置中设置具体设定。SpringBoot可以根据url地址自动识别数据库种类,在保障驱动类存在的情况下,可以省略配置。测试用例数据通常采用随机值进行测试,使用SpringBoot提供的随机数为其赋值。为测试用例添加事务,SpringBoot会对测试用例对应的事务提交操作进行回滚。SpringBoot提供了3种内嵌数据库供开发者选择,提高开发测试效率。优势:比多环境开发中的测试环境影响范围更小,仅对当前测试类有效。原创 2023-11-18 10:51:07 · 272 阅读 · 0 评论 -
[黑马程序员SpringBoot2]——运维实用篇
通过启动参数加载配置文件(无需书写配置文件扩展名)注意事项properties与yml文件格式均支持通过启动参数加载指定文件路径下的配置文件注意事项properties与yml文件格式均支持通过启动参数加载指定文件路径下的配置文件时可以加载多个配置注意事项多配置文件常用于将配置进行分类,进行独立管理,或将可选配置单独制作便于上线更新维护自定义配置文件——重要说明单服务器项目:使用自定义配置文件需求较低。原创 2023-11-05 18:16:32 · 179 阅读 · 0 评论 -
[黑马程序员SpringBoot2]——基础篇1
REST简介REST (Representational State Transfer),表现形式状态转换传统风格资源描述形式id=1REST风格描述形式隐藏资源的访问行为,无法通过地址得知对资源是何种操作书写简化按照REST风格访问资源时使用行为动作区分对资源进行了何种操作http: / / localhost/users 查询全部用户信息 GET(查询)http: / / localhost/users/1 查询指定用户信息 GET(查询)原创 2023-10-24 09:10:13 · 535 阅读 · 0 评论 -
[黑马程序员SpringBoot2]——基础篇2
分页操作是在MyBatisPlus的常规操作基础上增强得到,内部是动态的拼写SQL语句,因此需要增强对应的功能,使用MyBatisPlus拦截器实现。使用QueryWrapper对象封装查询条件,推荐使用LambdaQueryWrapper对象,所有查询操作封装成方法调用。对查询结果进行校验,如果当前页码值大于最大页码值,使用最大页码值作为当前页码值重新查询。设计表现层返回结果的模型类, 用于后端与前端进行数据格式统一,也称为前后端数据协议。修改表现层返回结果的模型类,封装出现异常后对应的信息。原创 2023-10-26 11:04:53 · 190 阅读 · 0 评论 -
Spring MVC的高级功能(异常处理器,拦截器,文件操作)
从单个拦截器的执行流程图中可以看出,程序收到请求后,首先会执行拦截器中的preHandle()方法,如果preHandle()方法返回的值为false,则将中断后续所有代码的执行。从多个拦截器的执行流程图中可以看出,当有程序中配置了多个拦截器时,拦截器中的preHandle()方法会按照配置文件中拦截器的配置顺序执行,而拦截器中的postHandle()方法和afterCompletion()方法则会按照拦截器的配置顺序的相反顺序执行。在Spring MVC中,上传文件的方法编写十分简单,其代码如下所示。原创 2023-06-03 08:51:34 · 1150 阅读 · 1 评论 -
Spring MVC数据绑定和响应
在复杂POJO数据绑定时,如果数据绑定到Map类型的属性,客户端请求的参数名称(本例中指form表单内各元素name的属性值)必须与POJO类的层次结构名称保持一致,并使用键值的映射格式描述对象在Map中的位置,即客户端参数名称必须和要绑定的Map中的具体对象的具体属性的名称保持一致。当请求的映射方式是REST风格时,上述对简单类型数据绑定的方式就不适用了。在程序运行时,Spring MVC接收到客户端的请求后,会根据客户端请求的参数和请求头等数据信息,将参数以特定的方式转换并绑定到处理器的形参中。原创 2023-05-27 02:36:06 · 1995 阅读 · 0 评论 -
初识Spring MVC框架,Spring MVC工作原理
在Spring MVC4.0以前,配置文件内必须要配置处理器映射器、处理器适配器和视图解析器,但在Spring MVC4.0以后,如果不配置处理器映射器、处理器适配器和视图解析器,框架会加载内部默认的配置完成相应的工作。Spring MVC作用于三层架构中的表现层,用于接收客户端的请求并进行响应Spring MVC中包含了控制器和视图,控制器接收到客户端的请求后对请求数据进行解析和封装,接着将请求交给业务层处理。不同的处理器映射器映射出来的Handler对象是不一样的,不同的映射由不同的适配器来负责解析。原创 2023-05-19 20:46:32 · 646 阅读 · 0 评论 -
MyBaits的注解开发
在MyBatis中,@param注解用于为SQL语句中的参数提供名称和值。当使用动态SQL时,@param注解还可以帮助 MyBatis 明确哪些参数是必须提供的,哪些是可选的。前面介绍了MyBatis的基本用法、关联映射、动态SQL和缓存机制等知识,所有的配置都是基于XML文件完成的,但在实际开发中,大量的XML配置文件的编写是非常繁琐的,为此,MyBatis提供了更加简便的基于注解的配置方式。2.建表∶在mybatis数据库中创建名为tb_worker的数据表,同时预先插入几条测试数据。原创 2023-05-03 22:46:08 · 1049 阅读 · 0 评论 -
Mybatis中association标签的用法
【代码】Mybatis中association标签的用法。原创 2023-04-18 22:54:56 · 1622 阅读 · 0 评论 -
MyBatis的关联映射和缓存机制
终端用户访问缓存时,如果在缓存中查找到了要被访问的数据,就叫做命中。在MyBatis中,一个Mapper.xml文件通常称为一个Mapper,MyBatis以namespace区分Mapper,如果多个SqlSession对象使用同一个Mapper的相同查询语句去操作数据库,在第一个SqlSession对象执行完后,MyBatis会将查询结果写入二级缓存,此后,如果程序没有执行插入、更新、删除操作,当第二个SqlSession对象执行相同的查询语句时,MyBatis会直接读取二级缓存中的数据。原创 2023-04-19 21:26:19 · 697 阅读 · 0 评论 -
MyBatis动态SQL的使用
在实际项目的开发中,开发人员在使用JDBC或其他持久层框架进行开发时,经常需要根据不同的条件拼接SQL语句,拼接SQL语句时还要确保不能遗漏必要的空格、标点符号等,这种编程方式给开发人员带来了非常大的不便,而MyBatis提供的SQL语句动态组装功能,恰能很好地解决这一问题。上述配置代码中,元素的作用是去除一些多余的前缀字符串,它的prefix属性代表的是语句的前缀(where ),而prefixOverrides属性代表的是需要去除的前缀字符串(SQL中的“AND”或“OR”)。原创 2023-04-11 07:33:17 · 683 阅读 · 0 评论 -
MyBatis的核心配置与简单应用
在不同的映射文件中,元素的子元素的id可以相同,MyBatis通过元素的namespace属性值和子元素的id联合区分不同的Mapper.xml文件。很多时候,执行插入操作后,需要获取插入成功的数据生成的主键值,不同类型数据库获取主键值的方式不同,下面分别对支持主键自动增长的数据库获取主键值和不支持主键自动增长的数据库获取主键值的方式进行介绍。是一个配置属性的元素,该元素的作用是读取外部文件的配置信息。使用元素执行更新操作非常简单。原创 2023-04-03 23:14:11 · 839 阅读 · 0 评论 -
Mybatis框架入门
9.UserMapper.xml我们已经写好了,现在配置一下mybatis-config.xml(让mybatis-config.xml获取一下mapper文件夹下的xml文件)5.在resources目录下创建mybatis-config.xml(把db.properties给配置到mybatis-config.xml中)8.根据User实体类在resources路径下创建mapper,mapper文件夹下在创建UserMapper.xml(用来放sql语句)3.创建数据库db_test1;原创 2023-03-28 21:52:31 · 287 阅读 · 0 评论 -
Spring事务管理,xml和注解实现
事务的传播行为是指处于不同事务中的方法在相互调用时,方法执行期间,事务的维护情况。例如,当一个事务的方法B调用另一个事务的方法A时,可以规定A方法继续在B方法所属的现有事务中运行,也可以规定A方法开启一个新事务,在新事务中运行,B方法所属的现有事务先挂起,等A方法的新事务执行完毕后再恢复。TransactionDefinition接口中除了提供事务的隔离级别、事务的传播行为、事务的超时时间和是否为只读事务的常量外,还提供了一系列方法来获取事务的属性。现在模拟zhangsan给lisi转账100元。原创 2023-03-19 15:46:18 · 600 阅读 · 0 评论 -
Spring的数据库编程
针对数据库操作,Spring框架提供了JdbcTemplate类,JdbcTemplate是一个模板类,Spring JDBC中的更高层次的抽象类均在JdbcTemplate模板类的基础上创建。在dataSource的4个属性中,需要根据数据库类型或者系统配置设置相应的属性值。默认情况下,数据库端口号可以省略,但如果修改过MySQL数据库的端口号,则需要加上修改后的端口号。通过刚才的例子,我们已经了解到JdbcTemplate类中的增,删,改操作,接下来,我们在看看JdbcTemplate类中的查操作。原创 2023-03-19 11:08:20 · 1197 阅读 · 0 评论 -
基于xml的AOP实现
在Spring的配置文件中,配置切面使用的是元素,该元素会将一个已定义好的Spring Bean转换成切面Bean,因此,在使用元素之前,要在配置文件中先定义一个普通的Spring Bean。元素作为元素的子元素定义时,表示该切入点是全局的,它可被多个切面共享;当元素作为元素的子元素时,表示该切入点只对当前切面有效。元素的常用属性。原创 2023-03-09 18:52:17 · 1015 阅读 · 0 评论 -
Spring Aop 详解
JDK动态代理存在缺陷,它只能为接口创建代理对象,当需要为类创建代理对象时,就需要使用CGLib (Code Generation Library)动态代理,CGLib动态代理不要求目标类实现接口,它采用底层的字节码技术,通过继承的方式动态创建代理对象。我们做一个后台系统,除了登录,注册功能不用用户验证,其他页面都需要用户验证,写的页面越多,这些代码重复率高,你还得写,这个时候我们把相同的功能给抽离出来,用aop来统一处理.aop是一种思想,(spring aop是一个框架.是aop思想的实现)原创 2023-03-09 19:15:19 · 568 阅读 · 0 评论 -
Bean三种实例化方式的底层原理
以上三种方式,先试试手动的形式创建对象。至于通过使用Spring去创建对象,无非是向Spring交代清楚该如何创建罢了。意思就是原本需要手动去做的,后来通过配置文件告诉Spring,这件事情就交给Spring你去做了。我们知道,静态方法可以通过类名.方法名()去调用,而普通方法只能通过对象去访问,明确这一点,方式二和方式三的背后逻辑区别就清楚了。一个bean标签返回一个bean实例。原创 2023-03-09 14:58:16 · 271 阅读 · 0 评论 -
Bean的生命周期
Bean的生命周期是指Bean实例被创建、初始化和销毁的过程。在Bean的两种作用域singleton和prototype中,Spring容器对Bean的生命周期的管理是不同的。在singleton作用域中,Spring容器可以管理Bean的生命周期,控制着Bean的创建、初始化和销毁。在Bean的生命周期中,有两个时间节点尤为重要,这两个时间节点分别是Bean实例初始化后和Bean实例销毁前,在这两个时间节点通常需要完成一些指定操作。监控两个节点的方式有两种,一种是使用XML配置文件,一种是使用注解。原创 2023-03-08 20:04:23 · 310 阅读 · 0 评论 -
Bean的装配方式(xml和注解)
在Spring中,使用XML配置文件可以实现Bean的装配工作,但在实际开发中如果Bean的数量较多,会导致XML配置文件过于臃肿,给后期维护和升级带来一定的困难。在基于XML的装配就是读取XML配置文件中的信息完成依赖注入,Spring容器提供了两种基于XML的装配方式,属性setter方法注入和构造方法注入。使用构造方法注入时,在配置文件里,需要使用元素的子元素来定义构造方法的参数,例如,可以使用其value属性(或子元素)来设置该参数的值。原创 2023-03-05 23:40:02 · 1682 阅读 · 0 评论 -
Bean的作用域
掌握singleton作用域,能够在Spring中对Bean设置singleton作用域,并说出singleton作用域的作用范围.掌握prototype作用域,能够在Spring中对Bean设置prototype作用域,并说出prototype作用域的作用范围。一般多线程使用prototype,一个线程一个副本。其他代码和上边一样,就改了个prototype。原创 2023-03-05 20:56:22 · 48 阅读 · 0 评论 -
Bean的配置以及实例化
Spring容器支持XML和Properties两种格式的配置文件,在实际开发中,最常用的是XML格式的配置文件。XML是标准的数据传输和存储格式,方便查看和操作数据。在Spring中,XML配置文件的根元素是,元素包含子元素,每个子元素可以定义一个Bean,通过元素将Bean注册到Spring容器中。熟悉Spring构造方法实例化,能够通过构造方法实例化Bean。原创 2023-03-05 20:22:25 · 126 阅读 · 0 评论 -
实现程序, 通过网页提交一个图片到服务器上
上传文件也是日常开发中的一类常见需求. 在 Servlet 中也进行了支持。原创 2023-02-02 11:47:05 · 112 阅读 · 0 评论 -
Cookie 和 Session 详解 及实现用户登陆功能
sessionId 是由服务器生成的一个 "唯一性字符串", 从 session 机制的角度来看, 这个唯一性字符串称为 "sessionId". 但是站在整个登录流程中看待, 也可以把这个唯一性字符串称为 "token".sessionId 和 token 就可以理解成是同一个东西的不同叫法(不同视角的叫法)服务器同一时刻收到的请求是很多的. 服务器需要清除的区分清楚每个请求是从属于哪个用户, 就需要在服务器这边记录每个用户令牌以及用户的信息的对应关系.浏览器提供的在客户端存储数据的一种机制。原创 2023-02-02 11:19:20 · 3702 阅读 · 0 评论 -
Servlet API 详解
POST 请求的参数一般通过 body 传递给服务器. body 中的数据格式有很多种. 如果是采用 form 表单的形式, 仍然可以通过 getParameter 获取参数的值.我们写 Servlet 代码的时候, 首先第一步就是先创建类, 继承自 HttpServlet, 并重写其中的某些方法.如果 POST 请求中的 body 是按照 JSON 的格式来传递, 那么获取参数的代码就要发生调整.注意: 响应对象是服务器要返回给浏览器的内容, 这里的重要信息都是程序猿设置的. 因此上面的方。原创 2023-01-31 21:09:30 · 438 阅读 · 0 评论 -
Servlet程序创建步骤
war 包是 java web 的程序, 里面除了会包含 .class 文件之外, 还会包含 HTML, CSS, JavaScript, 图片, 以及其他的 jar 包. 打成 war 包格式才能被 Tomcat 识别。webapp 目录就是未来部署到 Tomcat 中的一个重要的目录. 当前我们可以往 webapp 中放一些静态资源, 比如 html , css 等.在这个目录中还有一个重要的文件 web.xml. Tomcat 找到这个文件才能正确处理 webapp 中的动态资源.原创 2023-01-30 17:24:00 · 2852 阅读 · 0 评论 -
Tomcat详解
乱码的原因是 Tomcat 默认按照 UTF-8 的编码方式处理中文. 而 windows 的 cmd 默认是 GBK 编码.如果使用 Linux 或者 IDEA 中的终端来启动 Tomcat, 则没有乱码问题. 因此此处的乱码我们暂时不处理.实际开发中我们的 HTML 可能不止一个, 依赖的 CSS / JavaScript 文件也可能比较多. 这个时候就不适合全都拷贝到 webapps/ROOT 目录中了(这就会显的比较乱).我们可以创建一个单独的目录, 和 ROOT 并列, 来存放我们要部署的内容.原创 2023-01-30 10:05:40 · 408 阅读 · 0 评论 -
HTTPS详解
非对称加密的数学原理比较复杂, 涉及到一些 数论 相关的知识. 这里举一个简单的生活上的例子.A 要给 B 一些重要的文件, 但是 B 可能不在. 于是 A 和 B 提前做出约定:B 说: 我桌子上有个盒子, 然后我给你一把锁, 你把文件放盒子里用锁锁上, 然后我回头拿着钥匙来开锁取文件.在这个场景中, 这把锁就相当于公钥, 钥匙就是私钥. 公钥给谁都行(不怕泄露), 但是私钥只有 B 自己持有. 持有私钥的人才能解密.其实一切的关键都是围绕这个对称加密的密钥. 其他的机制都是辅助这个密钥工作的.原创 2023-01-29 23:26:59 · 535 阅读 · 0 评论 -
Http协议详解
GET 是最常用的 HTTP 方法. 常用于获取服务器上的某个资源.在浏览器中直接输入 URL, 此时浏览器就会发送出一个 GET 请求.另外, HTML 中的 link, img, script 等标签, 也会触发 GET 请求.还可以 使用 JavaScript 中的 ajax 也能构造 GET 请求.所谓 "超文本" 的含义, 就是传输的内容不仅仅是文本(比如 html, css 这个就是文本), 还可以是一些其他的资源, 比如图片, 视频, 音频等二进制的数据。原创 2023-01-29 18:45:34 · 1484 阅读 · 0 评论