自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

huangyuanzhi

个人博客:https://www.huangyuanzhi.top

  • 博客(29)
  • 收藏
  • 关注

原创 详解<url-pattern/>

配置详解建议写为*.do 形式在没有特殊要求的情况下, SpringMVC 的中央调度器 DispatcherServlet 的<url-pattern/>常使用后辍匹配方式,如写为*.do。不能写为/*这里的 url-pattern 不能写为/*,因为 DispatcherServlet 会将向动态页面的跳转请求, 即向 JSP 页面的跳转请求也当作是一个普通的 Controller 请求。 中央调度器会调用处理器映射器为其查找相应的处理器。当然是找不到的,所以在这种情况下, 所有的

2021-04-28 21:12:09 762

原创 详解SpringMVC执行流程

SpringMVC 执行流程SpringMVC 执行流程整体如下:执行流程分析(1)浏览器提交请求到中央调度器。(2)中央调度器直接将请求转给处理器映射器。(3)处理器映射器会根据请求,找到处理该请求的处理器,并将其封装为处理器执行链后返回给中央调度器。(4)中央调度器根据处理器执行链中的处理器,找到能够执行该处理器的处理器适配器。(5)处理器适配器调用执行处理器。(6)处理器将处理结果及要跳转的视图封装到一个对象 ModelAndView 中,并将其返回给处理器适配器。(7)处理器适配

2021-03-22 21:17:04 2388

原创 SpringMVC概述

SpringMVC 全称是 Spring Web MVC,是 Spring 框架一部分,是一个 MVC 的框架,和 Struts2 一样是一个表现层框架,是在 Spring3.0 后发布的。SpringMVC简介由以上 Spring 的结构图可以看出, Spring 由四大部分组成: Dao 部分(DAO 与 ORM)、AOP 部分、 Web 部分(JEE 与 Web),及 IoC 容器部分(Core)。Web 部分第一个就是 Spring Web MVC,其实 SpringMVC 是 Spring

2021-03-22 20:54:53 203 1

原创 Spring的事务管理

Spring 的事务管理事务原本是数据库中的概念,在 Dao 层。但一般情况下,需要将事务提升到业务层,即 Service 层。这样做是为了能够使用事务的特性来管理具体的业务。在 Spring 中通常可以通过以下三种方式来实现对事务的管理:使用 Spring 的事务代理工厂管理事务使用 Spring 的事务注解管理事务使用 AspectJ 的 AOP 配置管理事务Spring 事务管理APISpring 的事务管理,主要用到两个事务相关的接口。1. 事务管理器接口事务管理器是 Platf

2020-12-02 17:29:41 188

原创 Spring与JDBC模板

Spring 所使用的操作数据库的技术: JDBC 模板的使用和 Spring 对于事务的管理。JDBC 模板的使用,是 IoC 的应用,将 JDBC 模板对象注入给了 Dao 层的实现类。Spring 的事务管理, 是 AOP 的应用,将事务作为切面织入到了 Service 层的业务方法中。为了避免直接使用 JDBC 而带来的复杂且冗长的代码, Spring 提供了一个强有力的模板类——JdbcTemplate 来简化 JDBC 操作。并且,数据源 DataSource 对象与模板 JdbcT

2020-11-17 18:24:30 92

原创 Spring与AOP之AspectJ基于XML的实现

AspectJ 除了提供了基于注解的 AOP 的实现外,还提供了以 XML 方式的实现。切面就是一个 POJO 类,而用于增强的方法就是普通的方法。通过配置文件,将切面中的功能增强织入到了目标类的目标方法中。实现步骤(1) 定义业务接口与实现类//主业务接口public interface ISomeService { //主业务方法 void doFirst(); //主业务方法 String doSecond(); //主业务方法 void doThird();}//目标类

2020-11-04 18:45:48 164 1

原创 Spring与AOP之AspectJ对DAO的实现

对于 AOP 这种编程思想,很多框架都进行了实现。 Spring 就是其中之一, 可以完成面向切面编程。 然而, AspectJ 也实现了 AOP 的功能,且其实现方式更为简捷,使用更为方便,而且还支持注解式开发(在 Spring 中使用 AOP 开发时,一般使用 AspectJ 的实现方式)。AspectJ 简介AspectJ 是一个面向切面的框架,它扩展了 Java 语言。 AspectJ 定义了 AOP 语法,它有一个专门的编译器用来生成遵守 Java 字节编码规范的 Class 文件。——百度

2020-11-02 21:31:57 353

原创 Spring与AOP之自动代理生成器

ProxyFactoryBean 代理工具类存在着如下缺点:(1)一个代理对象只能代理一个 Bean,即如果有两个 Bean 同时都要织入同一个切面,这时,不仅要配置这两个 Bean,即两个目标对象,同时还要配置两个代理对象。(2)在客户类中获取 Bean 时,使用的是代理类的 id,而非我们定义的目标对象 Bean 的 id。我们真正想要执行的应该是目标对象。从形式上看,不符合正常的逻辑。Spring 提供了自动代理生成器,用于解决 ProxyFactoryBean 的问题。常用的自动代理生成器有两

2020-10-29 19:46:35 145

原创 Spring与AOP的顾问(Advisor)详解

顾问(Advisor)是 Spring 提供的另一种切面。其可以完成更为复杂的切面织入功能。PointcutAdvisor 是顾问的一种, 可以指定具体的切入点。 顾问将通知进行了包装,会根据不同的通知类型,在不同的时间点,将切面织入到不同的切入点。PointcutAdvisor 接口有两个较为常用的实现类:NameMatchMethodPointcutAdvisor 名称匹配方法切入点顾问RegexpMethodPointcutAdvisor 正则表达式匹配方法切入点顾问名称匹配方法切入点顾问

2020-10-24 17:26:29 816

原创 Spring与AOP的通知(Advice)详解

通知(Advice),切面的一种实现,可以完成简单织入功能(织入功能就是在这里完成的)。 常用通知有:前置通知、后置通知、环绕通知、异常处理通知。通知详解通知(Advice)是 Spring 提供的一种切面(Aspect)。但其功能过于简单:只能将切面织入到目标类的所有目标方法中, 无法完成将切面织入到指定目标方法中。前置通知定义前置通知,需要实现 MethodBeforeAdvice 接口。该接口中有一个方法 before(),会在目标方法执行之前执行。 前置通知的特点:在目标方法执行之前先执

2020-10-24 17:18:31 607

原创 Spring之AOP编程术语

AOP 简介AOP(Aspect Orient Programming),面向切面编程,是面向对象编程 OOP 的一种补充。面向对象编程是从静态角度考虑程序的结构,而面向切面编程是从动态角度考虑程序运行过程。AOP 底层采用两种动态代理模式实现: JDK 的动态代理与 CGLIB 的动态代理。AOP 编程术语1. 切面切面(Aspect)泛指交叉业务逻辑。上例中的事务处理、日志处理就可以理解为切面。常用的切面有通知与顾问。实际就是对主业务逻辑的一种增强。2. 织入织入(Weaving)是指将切

2020-10-17 18:59:45 112

原创 Spring与IoC之基于注解的DI

对于 DI 使用注解,将不再需要在 Spring 配置文件中声明 Bean 实例(底层使用AOP)。定义 Bean@Component需要在类上使用注解@Component,该注解的 value 属性用于指定该 bean 的 id 值。(1) 实体类// @Scope("prototype") // 默认也是singleton@Component("myStudent")public class Student { @Value("张三") private String name; @

2020-10-16 22:00:17 71

原创 Spring与IoC之基于XML的DI

注入分类Bean 实例在调用无参构造器创建了空值对象后,就要对 Bean 对象的属性进行初始化。初始化是由容器自动完成的, 称为注入。根据注入方式的不同, 常用的有两类: 设值注入、构造注入(接口注入几乎不用)。设值注入设值注入是指,通过 setter 方法传入被调用者的实例(底层通过调用 setter 方法将值注入)。这种注入方式简单、直观,因而在 Spring 的依赖注入中大量使用。(1) 定义实体类public class School { private String name;}

2020-10-15 20:28:07 83

原创 Spring与IoC之Bean的装配

Spring 与 IoC控制反转(IoC, Inversion of Control),是一个概念,是一种思想。指将传统上由程序代码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理。控制反转就是对对象控制权的转移,从程序代码本身反转到了外部容器。当前比较流行的 IoC 实现方式有两种:依赖注入和依赖查找。依赖查找: Dependency Lookup, DL,容器提供回调接口和上下文环境给组件,程序代码则需要提供具体的查找方式。比较典型的是依赖于 JNDI 系统的查找。依赖注入: Dep

2020-10-14 21:52:13 236

原创 快速了解Spring的体系结构与特点

Spring 是一个容器,用于降低代码间的耦合度,根据不同的代码(主业务逻辑、系统级服务)采用 IoC 和 AOP 两种进行的业务逻辑。根据功能的不同,可以将一个系统中的代码分为主业务逻辑与系统级业务逻辑两类。主业务逻辑与系统级业务逻辑的特点:主业务代码间逻辑联系紧密,有具体的专业业务应用场景,复用性相对较低;系统级业务相对功能独立,没有具体的专业业务应用场景,主要是为主业务提供系统级服务,如日志、安全、事务等,复用性强。降低耦合度的方式分为了两类: IoC 与 AOP。 IoC 使得主业务在相互调

2020-10-13 19:47:27 162

原创 MyBatis注解式开发

注解的基础知识MyBatis 的注解,主要是用于替换映射文件。而映射文件中无非存放着增、删、改、查的 SQL 映射标签。所以, MyBatis 注解,就是要替换映射文件中的 SQL 标签。MyBatis 官方文档中指出,若要真正想发挥 MyBatis 功能,还是要用映射文件。即 MyBatis 官方并不建议通过注解方式来使用 MyBatis。注解的基础语法注解后是没有分号的。注解首字母是大写的,因为注解与类、接口是同一级别的。一个注解,后台对应着。一个@interface 类。在同一语法单元

2020-08-25 20:03:26 272

原创 MyBatis查询缓存

查询缓存的使用,主要是为了提高查询访问速度。将用户对同一数据的重复查询过程简化,不再每次均从数据库查询获取结果数据,从而提高访问速度。MyBatis 的查询缓存机制,根据缓存区的作用域(生命周期) 可划分为两种: 一级查询缓存与二级查询缓存。一级查询缓存MyBatis 一级查询缓存是基于 org.apache.ibatis.cache.impl.PerpetualCache 类的 HashMap本地缓存,其作用域是 SqlSession。在同一个 SqlSession 中两次执行相同的 sql 查询

2020-08-15 00:10:44 178

原创 MyBatis延迟加载

延迟加载MyBatis 中的延迟加载,也称为懒加载,是指在进行关联查询时, 按照设置延迟规则推迟对关联对象的 select 查询。 延迟加载可以有效的减少数据库压力。注意:MyBatis 的延迟加载只是对关联对象的查询有迟延设置,对于主加载对象都是直接执行查询语句的。关联对象加载时机MyBatis 根据对关联对象查询的 select 语句的执行时机,分为三种类型:直接加载、侵入式延迟加载与深度延迟加载。直接加载: 执行完对主加载对象的 select 语句,马上执行对关联对象的 selec

2020-08-07 21:08:29 102

原创 MyBatis关联查询

关联查询当查询内容涉及到具有关联关系的多个表时, 就需要使用关联查询。根据表与表间的关联关系的不同,关联查询分为四种:(1)一对一关联查询(2)一对多关联查询(3)多对一关联查询(4)多对多关联查询日常工作中最常见的关联关系是一对多、多对一与多对多,一对一关联查询的解决方案与多对一解决方案是相同的。一对多关联查询这里的一对多关联查询是指,在查询一方对象的时候,同时将其所关联的多方对象也都查询出来。下面以国家 Country 与部长 Minister 间的一对多关系进行演示。(1) 定义

2020-08-01 20:55:18 158

原创 MyBatis的CURD操作(动态SQL)

动态SQL动态 SQL,主要用于解决查询条件不确定的情况:在程序运行期间,根据用户提交的查询条件进行查询。提交的查询条件不同,执行的 SQL 语句不同。若将每种可能的情况均逐一列出,对所有条件进行排列组合,将会出现大量的 SQL 语句。此时,可使用动态 SQL 来解决这样的问题。动态 SQL,即通过 MyBatis 提供的各种标签对条件作出判断以实现动态拼接 SQL 语句。这里的条件判断使用的表达式为 OGNL 表达式。 常用的动态 SQL 标签有<if/>、 <where/>、

2020-06-05 20:13:41 206

原创 MyBatis的CURD操作(Mapper动态代理)

在前面例子中 (Dao接口实现类) 自定义 Dao 接口实现类时发现一个问题: Dao 的实现类其实并没有干什么实质性的工作,它仅仅就是通过 SqlSession 的相关 API 定位到映射文件 mapper 中相应 id 的 SQL 语句,真正对 DB 进行操作的工作其实是由框架通过 mapper 中的 SQL 完成的。所以, MyBatis 框架就抛开了 Dao 的实现类,直接定位到映射文件 mapper 中的相应 SQL语句,对 DB 进行操作。这种对 Dao 的实现方式称为 Mapper 的动态代

2020-06-02 15:17:11 236

原创 MyBatis的CURD操作(Dao接口实现类)

CURD 操作,即指对数据库中实体对象的增 Create、改 Update、查 Read、删 Delete 操作。自定义 Dao 接口实现类项目实例(1)定义实体类public class Student { private Integer id; private String name; private int age; private double score;(2)定义 Dao 接口public interface IStudentDao { void insertStude

2020-05-26 12:56:17 477

原创 Web服务技术——Servlet

什么是 Servlet?其实就是一个 Java 程序,运行在我们的 Web 服务器上,用于接收和响应客户端的 HTTP 请求。更多的是配合动态资源来做。 当然静态资源也需要使用到 Servlet,只不过是Tomcat里面已经定义好了一个 DefaultServlet。Servlet 的执行过程第一步:类的定义 package com.huang.servlet; import java.io.IOException; import javax

2020-05-25 15:41:48 174 1

原创 MyBatis入门与实例

框架框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。可以说,一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提供上下文(Context)关系。——百度百科对于程序员来说...

2020-03-20 13:30:43 203

原创 MySQL数据库入门与实战

常见数据库关系型数据库常见的关系型数据库有 MySQL、Oracle、SQL Server、JDBC、DB2 等;主要是用来描述实体与实体之间的关系,实实在在存在的事物。例如:男生和女生、学生和班级、员工和部门。非关系型数据库常见的非关系型数据库有 Redis、MongoDB、NoSQL 等;非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等...

2020-03-16 17:04:11 397

原创 数据库连接技术——JDBC

JDBC(Java DataBase Connectivity)是 SUN 公司提供的一种数据库访问规则、规范, 由于数据库种类较多,并且 Java 语言使用比较广泛,SUN 公司就提供了一种规范,让其他的数据库提供商去实现底层的访问规则。 我们的 Java 程序只要使用 SUN 公司提供的 JDBC 驱动即可。使用 JDBC 的基本步骤注册驱动:DriverManager.regis...

2020-03-10 18:58:02 202

原创 MyBatis常用的设计模式

Builder 模式Builder 模式的定义是“将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。”,它属于创建类模式,一般来说,如果一个对象的构建比较复杂,超出了构造函数所能包含的范围,就可以使用工厂模式和 Builder 模式,相对于工厂模式会产出一个完整的产品,Builder 应用于更加复杂的对象的构建,甚至只会构建产品的一个部分。在 MyBatis环境的初...

2020-03-09 14:25:14 255

原创 Java常用的注解

注解本身没有功能的,就和 xml 一样。注解和 xml 都是一种元数据,元数据即解释数据的数据,这就是所谓配置。Spring 部分声明 bean 的注解@Component 组件,没有明确的角色,在类上使用注解@Component,该注解的 value 属性用于指定该 bean 的 id 值@Repository 用于对 DAO 实现类进行注解@Service 用于对...

2020-03-08 13:36:19 202

原创 Oracle入门教程与实战

前言Oracle 数据库系统是美国 Oracle 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器 (Client/Server) 或 B/S 体系结构的数据库之一,比如 SilverStream 就是基于数据库的一种中间件。 Oracle 数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系型数据库,...

2020-03-07 14:39:48 1826 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除