《Web应用技术》期末复习,更新中...

Web应用技术期末复习

    • 一、MVC
      • MVC概述:
    • 二、Spring:
      • Spring概述:
      • (1)依赖注入(Dependency Injection):
      • (2)控制反转(Inversion of Control):
      • (3)面向切面编程(Aspect-Oriented Programming):
        • 目标对象:
        • 通知:
        • 代理对象:
        • 运行效果:
    • 三、SpringMVC:
      • (1)对how2j运行原理图理解:
      • (2)自绘SpringMVC工作原理流程图:
    • 四、Maven:
      • Maven概述:
    • 五、Mybatis:
      • Mybatis概述:
    • 六、SSM:
      • (1)对how2j的运行原理图的理解:
      • (2)自绘SSM工作原理流程图:
    • 七、SpringBoot:
      • (1)SpringBoot概述:
      • (2)SpringBoot如何启动:
    • 八、SSM:
      • (1)SSM概述:
      • (2)SSM运行原理图:
      • (3)自绘制SSM工作原理流程图:
    • 九、基于SSM的CRUD:

一、MVC

MVC概述:

《Web应用技术》期末复习,更新中..._第1张图片

点击获取清晰思维导图
更多内容可查看:

  • Web应用技术(第八周/第一次练习/0.5h)
  • Web应用技术(第八周/第二次练习/4h)

二、Spring:

Spring概述:

《Web应用技术》期末复习,更新中..._第2张图片

点击获取清晰思维导图

(1)依赖注入(Dependency Injection):

依赖注入(Dependency Injection,DI)是一种实现控制反转(Inversion of Control,IoC)的方式,它是Spring框架的核心功能之一。
简单来说,依赖注入指的是要实例化的对象的相关配置已经写好,我们只是通过某些手段(见依赖注入的两种方式)将其注入到相应的属性或在方法中,而不需要再重新new了。

可参考控制反转的示例进行理解。

(2)控制反转(Inversion of Control):

控制反转(Inversion of Control,IoC)是Spring框架的一个核心概念,指的是将对象的创建组装管理等控制权从应用程序代码中转移到框架或容器中,从而实现松耦合、可扩展和可维护的设计。
在传统的应用程序设计中,应用程序代码通常会负责创建和管理对象,这样会导致应用程序代码和对象之间的紧耦合,难以进行单元测试和代码重构。而控制反转则是将这些控制权转移到框架或容器中,让它们来负责对象的创建和管理,从而实现应用程序代码和对象之间的解耦和灵活性。

举一个简单的例子:

// OrderDAO类
public class OrderDAO {
    // 数据访问实现
}

// OrderService类
public class OrderService {
    private OrderDAO orderDAO;  // 依赖注入的对象

    public void setOrderDAO(OrderDAO orderDAO) {  // Setter方法注入
        this.orderDAO = orderDAO;
    }

    // 其他业务方法
}

// Spring配置文件
<bean id="orderService" class="com.example.OrderService">  <!-- 定义OrderService对象 -->
    <property name="orderDAO" ref="orderDAO" />  <!-- 通过依赖注入方式使用OrderDAO对象 -->

上述的例子中,假设有一个订单服务类OrderService,它需要依赖一个订单数据访问对象OrderDAO来实现订单数据的持久化。在传统的设计中,OrderService需要自己创建和管理OrderDAO对象,这样会导致OrderService和OrderDAO之间的紧耦合,难以进行单元测试和代码重构。而在使用Spring框架的控制反转功能后,可以将OrderDAO的创建和管理交给Spring容器来完成,然后在OrderService中通过依赖注入的方式来使用OrderDAO对象,从而实现了松耦合和可测试的设计。

(3)面向切面编程(Aspect-Oriented Programming):

Spring AOP 是 Spring 框架的一个模块,它提供了面向切面编程的支持。Spring AOP可以让我们将应用程序中的关注点(如日志记录、事务管理、安全控制等)从业务逻辑中分离出来,然后通过特定的技术将这些关注点模块化,最终将其组合成一个完整的应用程序。

Spring AOP相关术语:

  • 切面(Aspect):切面是一个模块化的关注点,它可以横向切割应用程序,将不同的关注点分离出来,比如日志记录、事务管理、安全控制等。可类比于一个瑞士军刀,每个刀片都是不同的关注点,可以单独使用,也可以组合使用。
  • 连接点(Join Point):连接点是程序执行过程中可以插入切面的点,比如方法的调用、异常的抛出等。可类比于电路中的插头,连接点就是插头的位置。
  • 通知(Advice):通知是在连接点上执行的操作,它可以在连接点的前、后、或者抛出异常时执行。比如在方法执行前记录日志、在方法执行后进行事务提交等。可类比于电器的开关,通知就是开关的操作。
  • 切入点(Pointcut):切入点是连接点的集合,它定义了哪些连接点需要被切入切面。比如对所有的 Service 层方法进行事务管理。可类比于筛子,切点就是筛子的孔。
  • 目标对象(Target):所有被通知的对象(也可以理解为被代理的对象)都是目标对象,目标对象及其属性改变、行为调用和方法传参的变化被AOP所关注。
  • 织入(Weaving):织入是指将切面与目标对象结合起来,创建一个新的代理对象的过程。
  • 引入(Introduction):引入是为类添加新的方法或属性等。比如为一个类添加一个新的接口。可类比于人的学习能力,引入就是学习新技能。

目标对象:

Target.java:

package com.mr.target;

public class Target {
    //程序执行的方法
    public void execute(String name){
        System.out.println("执行execute()方法:" + name);//输出信息
    }
}

通知:

LoggerExcute.java:

package com.mr.log;

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;

public class LoggerExecute implements MethodInterceptor {
    // 实现 MethodInterceptor 接口,该接口提供了拦截方法调用的方法
    public Object invoke(MethodInvocation invocation) throws Throwable {
        before();  // 执行前置通知
        invocation.proceed();  // 执行原始方法
        return null;  // 返回 null
    }
    // 前置通知方法
    private void before() {
        System.out.println("程序开始执行!");
    }
}

代理对象:

Manager.java:

package com.mr.main;

import org.springframework.aop.framework.ProxyFactory;   //导入Spring AOP的ProxyFactory类

import com.mr.log.LoggerExecute;                        //导入日志记录的Advice类
import com.mr.target.Target;                            //导入目标类

public class Manager {
    //创建代理
    public static void main(String[] args) {
        Target target = new Target();                 //创建目标对象
        ProxyFactory di=new ProxyFactory();            //创建ProxyFactory对象
        di.addAdvice(new LoggerExecute());             //添加Advice对象
        di.setTarget(target);                          //设置目标对象
        Target proxy=(Target)di.getProxy();            //获取代理对象
        proxy.execute("AOP的简单实现");               //代理执行execute()方法
    } 
}

当我们运行主类Manager时,首先会创建一个目标对象,我们所要实现的核心功能包含在这个目标对象中,接着实例化一个工厂类 ProxyFactory,即di我们可以通过它来设置目标对象、添加 Advice 对象等来创建代理对象,在这里,我们通过 di.setTarget(target) 方法设置了目标对象,通过 di.addAdvice(new LoggerExecute()) 方法添加了一个 Advice 对象,最后通过 di.getProxy() 方法获取代理对象,即一个“四肢健全”的程序,有核心部分,有细枝末节,最后调用代理对象的excute()方法,实现一次输出。代理对象是目标对象的扩展,所以它仍然具备目标对象的方法。

运行效果:

更多内容可查看:

  • Web应用技术(第十四周/END)

三、SpringMVC:

(1)对how2j运行原理图理解:

(2)自绘SpringMVC工作原理流程图:

四、Maven:

Maven概述:

五、Mybatis:

Mybatis概述:

六、SSM:

(1)对how2j的运行原理图的理解:

(2)自绘SSM工作原理流程图:

七、SpringBoot:

(1)SpringBoot概述:

(2)SpringBoot如何启动:

八、SSM:

(1)SSM概述:

(2)SSM运行原理图:

(3)自绘制SSM工作原理流程图:

九、基于SSM的CRUD:

本博客主要整理期末考试的考点,更多具体内容可参考每部分后所附的博客链接。

你可能感兴趣的:(Web应用技术学习,前端,java,spring)