
Java EE进阶
文章平均质量分 95
Java EE进阶的学习
tao滔不绝
22级大学生,用写博客的方式记录学习,欢迎大家阅读
展开
-
Maven
官网对Maven的描述:翻译过来就是:Maven是一个项目管理工具。基于 POM (Project Object Model,项目对象模型)的概念,Maven 可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。大白话:Maven是一个项目管理工具,通过 pom.xml文件的配置获取jar包,而不用手动去添加 jar包。我们通过短短几行代码,就可以把依赖 jar包 放在项目里,具体是如何做的呢?这个代码,我们称之为 “坐标”,也就是唯一的。原创 2024-04-22 15:33:50 · 1908 阅读 · 29 评论 -
第一个Spring Boot程序
官方()的介绍:可以看到,Spring 让 Java程序更加快速、简单和安全。Spring对应速度、简单些和生产力的关注,使其成为世界上最流行的Java框架。Spring官方提供了很多开源的项目,覆盖范围从Web开发到大数据,Spring发展到了今天,已经形成了自己的生态圈。我们在开发时,也倾向于使用Spring官方提供的技术,来解决对应的问题。上面这些项目,都是基于Spring Framework来进行开发的。Spring Framework存在配置多,入门难的问题。原创 2024-04-23 18:29:35 · 2678 阅读 · 41 评论 -
Spring Web MVC入门(1)
官方对于 SPring Web MVC 的描述是这样的:翻译为中文:Spring Web MVC是基于 Servlet API构建的原始 Web 框架,从一开始就包含在Spring框架中。它的正式名称“Spring Web MVC”来自其源模块的名称(Spring-webmvc),但它通常被称为“Spring MVC”。什么是Servlet呢?原创 2024-04-25 07:51:19 · 2834 阅读 · 24 评论 -
Spring Web MVC入门(2)——请求
访问不同的路径,就是发送不同的请求。在发送请求时,可能会带一些参数,所以学习Spring的请求,主要是学习如何传递参数到后端,以及后端如何接收。传递参数,这里主要使用Postman来模拟,浏览器也可以,但是Postman会更方便。后端开发人员无需过度关注如何传递参数,了解即可,实际开发中以Postman测试为主。比如餐厅里的厨师,不需要关注用户是在店里下单还是外卖平台下单,只需要知道如何接收订单,根据订单做出对应的菜肴即可。原创 2024-04-27 15:33:10 · 2998 阅读 · 34 评论 -
Spring Web MVC入门(3)——响应
404错误码,因为该类是注解@Controller修饰的,访问该类的方法默认返回的是视图,程序就会认为需要返回视图(returnData方法没加@ResponseBody注解),然后根据内容进行查找文件,但查询不到,也就是路径不存在,所以报错404。如果一个类里面,既要返回数据,又要返回视图,那么就使用注解@Controller添加在该类上,然后需要返回数据的方法添加注解@ResponseBody,返回视图的方法就不同管它。原创 2024-04-28 21:22:05 · 2833 阅读 · 16 评论 -
综合性练习(后端代码练习1)——加法计算器
约定 “前后端交互接口” 是进行Web开发中的关键环节。接口又叫 API(Application Programming Interface),我们一般讲到接口或者API,指的都是同一个东西。这里的接口是指应用程序对外提供的服务的描述,用于交换信息和执行任务(与JavaSE阶段学习的 [类和接口] 中的接口不一样,两个不同的概念)。简单来说,就是允许客户端给服务器发送哪些 HTTP 请求,并且每种请求预期获取什么样的HTTP响应。原创 2024-04-30 10:18:37 · 1059 阅读 · 34 评论 -
综合性练习(后端代码练习2)——用户登录
校验接口:请求路径:/user/login请求方式:POST接口描述:校验账号密码是否正确参数名类型是否必须备注userNameString是校验的账号passwordString是校验的密码响应数据:响应内容:true //账号密码验证成功false //账户密码验证失败。原创 2024-04-30 18:11:11 · 1686 阅读 · 7 评论 -
综合性练习(后端代码练习3)——留言板
param(参数):from,to,sayreturn:true / false(成功或失败)我们发现,这些get和set方法是有规律的,有很多重复性的操作,那么我们能不能把它们进行封装呢?让代码更简洁呢?原创 2024-05-01 14:21:00 · 1250 阅读 · 3 评论 -
综合性练习(后端代码练习4)——图书管理系统
请求参数:userName,password返回结果(响应):成功 / 失败 (String类型,成功返回:" " (空字符串);失败返回失败原因)原创 2024-05-01 23:10:46 · 4482 阅读 · 34 评论 -
应用分层和企业规范
阿里开发手册中,关于工程结构部分,定义了常见工程的应用分层结果,如图:应用分层 是一种软件开发设计思想,它将应用程序分成N个层次,这N个层次分别负责各自的职责,多个层次之间协同提供完整的功能。根据项目的复杂度,把项目分成三层,四层或者更多层。其中常见的MVC设计模式,就是应用分层的一种具体体现。1、学校Spring MVC,其实就是学习各种Web开发需要用到的注解:a、@RequestMapping:路由映射b、@RequestParam:后端参数重命名。原创 2024-05-04 18:11:05 · 2289 阅读 · 26 评论 -
Spring IoC&DI(1)—入门
容器是用来容纳某种物品的(基本)装置。——来自:百度百科。生活中的水杯、垃圾桶、冰箱等等这些都是容器,之前接触过的容器:List/Map->数据存储容器、Tomcat->Web容器。IoC是Spring的核心思想,也是常见的面试题,那么什么是IoC呢?其实IoC在前面的代码练习已经使用过了,比如在类上面添加 @RestController 和 @Controller 注解,就是把这个对象交给Spring管理,Spring框架启动时,就会加载该类。——把对象交给Spring管理,这就是IoC思想。原创 2024-05-05 19:03:27 · 1729 阅读 · 30 评论 -
Spring IoC&DI(2)—IoC详解
对于同一个类,定义多个对象(多个方法使用@Bean注解);比如多数据源的场景,类是同一个,但配置是不同的,指向不同的数据源。@Component@Bean@Bean定义了多个对象的话,我们根据类型获取对象,获取的是哪个对象呢?//获取Spring上下文对象//从Spring中获取对象//使用对象执行结果,可以看到,报错了:可以看到,报错信息显示期望只有一个匹配,结果发现两个:userInfo1,userInfo2。从报错信息中,可以看出来,原创 2024-05-06 20:17:38 · 4437 阅读 · 28 评论 -
Spring IoC&DI(3)—DI详解
简单来说,Spring是一个开发应用框架;那是什么样的框架呢?有这么几个标签:轻量级、一站式、模块化,其目的是用于简化企业级应用程序开发。Spring的主要功能管理对象,以及对象之间的依赖关系,面向切面编程、数据库事务管理、数据访问、web框架支撑等等。但是Spring具备高度可开发性,并不强制依赖Spring,开发者可以自由选择Spring的部分或者全部,Spring可以无缝继承第三方框架,比如数据访问框架(Hibernate、JPA等等),web框架(如:Struts、JSF等等)。原创 2024-05-07 14:49:23 · 1278 阅读 · 38 评论 -
图书管理系统调整——修改注解(引入IoC、DI思想)
这里修改的还是比较简单,我们知道,而这里的BookController和UserController的注解不变 ,也不能改变,如果修改了,就可能导致URL没办法访问到了。因为BookService类是处理业务逻辑的,所以加注解好一点,这个也表示是业务逻辑层的代码,程序员可以直接看出来;而BookDao类是数据层,也叫持久化层,因为还没学MyBatis,所以使用的是mock的方式创建数据,因为是和数据相关的,所以注解好一点,这个注解也代表是数据相关的代码。原创 2024-05-08 10:09:34 · 609 阅读 · 3 评论 -
Spring Boot 配置文件
因为Tocmat默认端口号是8080,所以我们程序访问时的端口号也是8080,但是如果8080端口号已经被其他进程占有了,这时候我们就可以通过配置文件来修改服务器的端口号,Spring Boot在创建项目时,就已经帮我们创建了配置文件。可以看到,冒号后面有加空格的,前面的key值是橙色的,而冒号后面没有加空格的,依旧是白色的,还报红线了(专业版会报红线,社区版不会)。例如上面的例子,就是把 /n 保持它原本的含义,没有对它进行转义,保持字符串原本的内容。让用户通过简单的几行代码,就可以完成数据库的访问。原创 2024-05-09 10:03:41 · 2243 阅读 · 37 评论 -
综合性练习(验证码案例)
(1)生成验证码请求URL:/captcha/getCaptchaparam:无return:图片(响应)(2)校验验证码请求URL:/captcha/checkreturn:true / false(响应)这里验证码的实现,是使用Hutool提供的小工具来实现的。Hutool是一个Java工具包类库,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util(静态)工具类。原创 2024-05-11 09:53:47 · 1327 阅读 · 4 评论 -
Spring Boot日志
之前在学习JavaSe部分,使用System.out.println打印日志,观察、发现问题所在,追踪问题源头,在学习Spring的阶段,也经常需要根据控制台的日志来分析和定位问题。随着项目的复杂度提升,我们对日志的打印也有了更高的需求,不仅仅是定位排查问题。比如:需要记录一些用户操作记录(一些审计公司会要求),也可能需要使用日志来记录用户的一些喜好,把日志持久化,后续进行数据分析等。原创 2024-05-13 22:08:17 · 1441 阅读 · 34 评论 -
MyBatis入门(1)
1MyBatis是一块优秀的持久层框架,用于简化JDBC的开发。2MyBatis本是Apache的一个开源项目iBatis,2010年这个项目由Apache迁移到了google code,并且改名为MyBaits。2013年11月迁移到Github。3官网MyBatis中文网。4持久层:指的就是持久化操作的层,通常指数据访问层(dao),是用来操作数据库的。简单来说,MyBatis是更简单完成程序和数据库交互的框架,也就是更简单的操作和读取数据库工具。原创 2024-05-21 16:17:23 · 1175 阅读 · 25 评论 -
MyBatis入门——MyBatis的基础操作(2)
目录一、打印日志二、参数传递常见错误:使用对象接受小结:三、增(Insert)返回主键四、删(Delete)五、改(Update)六、查(Select)1、起别名2、结果映射3、开启驼峰命名(推荐)准备工作: 存在的表如下:(表名:userInfo) 代码如下: 实体类UserInfo类: UserController类: UserServer类: UserInfoMapper接口:原创 2024-05-22 19:07:03 · 1178 阅读 · 24 评论 -
MyBatis入门——MyBatis XML配置文件(3)
MyBatis的开发有两种方式:1、注解 2、XML。使用MyBatis的注解方式,主要是来完成一些简单的增删改查功能。,也就是将SQL语句写在XML配置文件中。MyBatis XML开发的方式需要以下两步:1、配置数据库连接字符串和MyBatis。2、写持久层代码。原创 2024-05-23 21:00:11 · 1550 阅读 · 31 评论 -
Mybatis入门——其他查询操作和数据库连接池(4)
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。没有使用数据库连接池的情况每次执行SQL语句,要先创建一个新的连接对象,然后执行SQL语句,SQL语句执行完,再关闭连接对象释放资源,这种重复创建连接、消耗连接的操作,比较消耗资源。使用数据库连接池的情况。原创 2024-05-28 18:39:22 · 955 阅读 · 23 评论 -
Mybatis进阶——动态SQL(1)
目录一、 <if> 标签二、<trim> 标签三、<where> 标签四、<set> 标签五、<foreach> 标签六、<include> 标签 动态SQL 是Mybatis的强大特性之一,能够完成不同条件下的不同SQL拼接,可以参考官方文档:动态 SQL_MyBatis中文网准备工作: SQL语句: yml配置内容: xml文件内容如下: model代码如下:一、<if> 标签 在注册用户的时原创 2024-05-29 18:05:44 · 1854 阅读 · 32 评论 -
留言板——增添功能(持久化存储数据,使用MyBatis)
当数据发生更新操作时,自动把该列的值设置为now(),now() 可以替换成其他获取时间的标识符,比如:CURRENT_TIMESTAMP(),LOCALTIME()不允许同时存在两个列,其中一列设置了DEFAULT CURRENT_TIMESTAMP,另一个设置了ON UPADTE CURRENT_TIMESTAMP。重启服务器后,再次访问改页面,数据也不会丢失,因为我们把数据放进数据库里了,TIMESTAMP 和 DATETIME都支持自动更新,且可以有多列。一个表只能有一列设置自动更新。原创 2024-05-31 10:21:02 · 1963 阅读 · 48 评论 -
图书管理系统(持久化存储数据以及增添新功能)
数据库表是应用程序开发中的一个重要环节,数据库表的设计往往会决定我们的应用需求是否能顺利实现,甚至决定我们的实现方式。分析我们的需求,图书管理系统相对来说比较简单,只有两个实体:用户和图书,并且用户和图书之间没有关联关系。图书表有哪些字段,也是参考需求页面(通常不是一个页面决定的,而是要对整个系统进行全面分析观察后定的)。所以不用这里每一个接口都要增添一个强制登录的功能,但已经写好了代码的接口,逐一添加会耗时好力。强制登录是指不让用户在没登录的情况下访问某一列表,会使用到session,原创 2024-07-04 16:10:56 · 1136 阅读 · 22 评论 -
SpringBoot拦截器
拦截器是 Spring 框架提供的核心功能之一,主要用来拦截用户的请求,在指定的方法前后,根据业务需要执行预先设定的代码。也就是说,允许开发人员提前预定义一些逻辑,在用户的请求、响应前后执行。也可以在用户请求前阻止其执行。在拦截器当中,开发人员可以在应用程序中做一些通用性的操作,比如通过拦截器来拦截前端发来的请求,判断Session中是否有登录用户的信息,如果有 -> 就放行,如果没有 -> 就进行拦截。如图:这种情况就类似我们去银行办理业务,原创 2024-07-08 19:47:45 · 6019 阅读 · 29 评论 -
SpringBoot统一功能处理
统一处理包含了拦截器、统一数据返回格式、统一异常处理。1、拦截器的实现主要分两部分(1)、定义拦截器(实现HandlerInterceptor 接口@Component注解。(2)、配置拦截器(实现WebMvcConfigurer 接口@Configuration注解。其中@Configuration注解包含 @Component注解2、统一数据返回格式通过@ControllerAdvice + ResponseBodyAdvice接口来实现。3、统一异常处理使用。原创 2024-07-12 17:22:53 · 2383 阅读 · 38 评论 -
Spring AOP(1)
AOP 是 Spring 框架 的第二大核心(第一大核心是 IoC)。AOP 的全称Aspect Oriented Programming(面向切面编程)。什么是面向切面编程呢?切面就是指某一类特定问题,所以 AOP 也可以理解为 面向特定方法编程。什么是面向特定方法编程呢?比如之前图书馆管理系统的 “登录校验”,就是一类特定问题。登录校验拦截器,就是对 “登录校验” 这类问题的统一处理。所以,拦截器也是 AOP 的一种应用。AOP 是一种思想,拦截器是 AOP 思想的一种实现。原创 2024-07-19 15:37:29 · 1714 阅读 · 31 评论 -
Spring AOP(2)原理(代理模式和源码解析)
/目标对象,即被代理的对象@Override//代理增强内容System.out.println("我是中介,开始代理");//通过反射调用被代理类的方法//代理增强内容System.out.println("我是中介,结束代理");/*** JDK动态代理*///创建⼀个代理类:通过被代理类、被代理实现的接⼝、⽅法调⽤处理器来创建//目标对象/*** loader:加载我们的被代理类的ClassLoad* interfaces:要实现的接口。原创 2024-07-22 11:07:04 · 1850 阅读 · 24 评论 -
Spring事务(1)
事务是一组操作的集合,是一个不可分割的操作。事务会把所有的操作作为一个整体,一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功,要么同时失败。原创 2024-07-23 16:29:07 · 1459 阅读 · 41 评论 -
Spring事务(2)——@Transaction详解
多个事务方法存在调用关系,事务是如何在这些方法间传播的。比如有两个方法:A方法、B方法,它们都被 @Transaction 修饰,A方法 调用 B方法。A方法 运行时,会开启一个事务。当 A方法 调用 B方法 时,B方法本身就有事务了,此时 B方法 运行,它是加入 A方法 的事务?还是使用自己的事务?或者是自己新建一个事务呢?上述问题就涉及到了事务的传播机制了。原创 2024-09-03 21:16:42 · 1380 阅读 · 24 评论 -
Spring原理
当SpringBoot程序启动时,会加载配置文件当中所定义的配置类,通过 @Import 注解将这些配置类全部加载到Spring的IoC容器中,交给IoC容器管理。1、Bean的作用域共分为6种:2、Bean的生命周期共分为5大部分:实例化、属性赋值、初始化、使用Bean、销毁Bean3、SpringBoot的自动配置原理源码入口:@SpringBootApplication 注解,这个注解封装了3个注解:(1)标志当前类为配置类。(2)进行包扫描(默认扫描的是启动类所在的当前包及其子包)原创 2024-09-14 18:20:12 · 1094 阅读 · 15 评论