Java复习笔记-------spring,springboot,springmvc,mybatis

24 篇文章 0 订阅

SpringMvc 框架:
1.它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是java组件.并且和Spring提供的其他基础结构紧密集成.
2.不依赖于Servlet API(目标虽是如此,但是在实现的时候确实是依赖于Servlet的)
3.可以任意使用各种视图技术,而不仅仅局限于JSP
4.支持各种请求资源的映射策略
5.它应是易于扩展的
SpringMVC的工作流程?
DispatcherServlet:前端控制器 ModelAndView:视图和模型
HandlerMapping:处理器映射器 ViewReslover:视图解析器
HandlerAdapter:处理器适配器
流程:用户发送请求至前端控制器,前端控制器收到请求调用处理器映射器;
处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给前端控制器;前端控制器通过处理器适配器调用处理器;然后执行控制器, 控制器执行完成返回视图和模型;处理器适配器将控制器执行结果视图和模型返回给前端控制器;前端控制器将视图和模型传给视图解析器,视图解析器解析后返回具体视图;前端控制器对视图进行渲染视图(即将模型数据填充至视图中), 前端控制器响应给用户。
简单介绍下你对springMVC的理解
springmvc的入口是一个servlet即前端控制器;
springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例);
什么是cookie?Session和cookie有什么区别?
Cookie是会话技术,将用户的信息保存到浏览器的对象.
Session也是会话技术,将Session的信息保存到服务器的对象.Session是基于Cookie的 利用Cookie向浏览器回写JSessionID.
Spring  
它是一个轻量级的开源的框架,创建性能好、易于测试、可重用的代码;它基于IoC(Inversion of Control,反向控制)和AOP的构架多层j2ee系统的框架。
spring优点:
a. Spring能有效地组织你的中间层对象,不管你是否选择使用了EJB。
b. Spring能消除在许多工程中常见的对Singleton单例模式的过多使用,它降低了系统的可测试性和面向对象的程度。
c. Spring能消除各种各样自定义格式的属性文件的需要,易于单元测试;
d. 把对接口编程而不是对类编程的代码几乎减少到没有,养成好的编程习惯。
e. 使用它创建的应用尽可能少的依赖于他的(APIs)编程接口。
spring的理解
1、它的核心之一IoC,降低了我们程序的耦合度,使我们可以把项目设计成为一个可插拔的组件式工程。
2、它的另一大核心AOP,使我们在开发过程中,精力得到释放,可以更专注的去理解客户的需求。并且在后期维护时,可以只维护很少的一部分。
2、它提供的事务管理机制,采用声明的方式来配置事务,从而在维护时无需改动源码,解决了程序硬编码的弊端。
4、它提供的DAO模板使我们的持久层开发又多了一种途径。
5、它可以整合其他时下流行的框架,使我们在管理项目时,更加清晰,明确。
你知道依赖注入么?简单介绍一下
  首先,明确依赖注入是实现控制反转的一种思想(另一种是依赖查找)。
  其次,在开发过程中,我们需要某个类的实例时,是由使用者为我们提供该类的实例。而不是自己去获取。
 最后,实现依赖注入的方式可以是使用构造方法注入或者set方法注入两种方式。
在spring中注入的方式就有很多了,比如constructor-arg元素,property元素,p名称空间等等。
你知道控制反转么?简单介绍一下
        它是spring的核心之一。或者说是spring的基础核心,spring的其余核心功能都必须有IoC的支持。
        控制反转指的是,我们在获取对象的时候,由之前的主动出击,变成了被动接收。也就是说,在编写某个类时,只需要提供一个接口类型的类成员,并不需要关系具体的实现类,而是由使用者在使用时提供。这就降低了类和类之间的耦合度。
spring管理事务有几种方式
   有两种方式:
     1、编程式事务,在代码中硬编码。(不推荐使用)
     2、声明式事务,在配置文件中配置(推荐使用)
        声明式事务又分为两种:a、基于XML的声明式事务 b、基于注解的声明式事务;
Mybatis介绍  
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
MyBatis 的工作原理

1)读取 MyBatis 配置文件:mybatis-config.xml 为 MyBatis 的全局配置文件,配置了 MyBatis 的运行环境等信息,例如数据库连接信息。
2)加载映射文件。映射文件即 SQL 映射文件,该文件中配置了操作数据库的 SQL 语句,需要在 MyBatis 配置文件 mybatis-config.xml 中加载。mybatis-config.xml 文件可以加载多个映射文件,每个文件对应数据库中的一张表。
3)构造会话工厂:通过 MyBatis 的环境等配置信息构建会话工厂 SqlSessionFactory。
4)创建会话对象:由会话工厂创建 SqlSession 对象,该对象中包含了执行 SQL 语句的所有方法。
5)Executor 执行器:MyBatis 底层定义了一个 Executor 接口来操作数据库,它将根据 SqlSession 传递的参数动态地生成需要执行的 SQL 语句,同时负责查询缓存的维护。
6)MappedStatement 对象:在 Executor 接口的执行方法中有一个 MappedStatement 类型的参数,该参数是对映射信息的封装,用于存储要映射的 SQL 语句的 id、参数等信息。
7)输入参数映射:输入参数类型可以是 Map、List 等集合类型,也可以是基本数据类型和 POJO 类型。输入参数映射过程类似于 JDBC 对 preparedStatement 对象设置参数的过程。
8)输出结果映射:输出结果类型可以是 Map、 List 等集合类型,也可以是基本数据类型和 POJO 类型。输出结果映射过程类似于 JDBC 对结果集的解析过程
Spring Boot
由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。 该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
Spring Boot组件
1.Spring Boot自动配置: Spring启动能够检测某些框架的可用性,例如Spring Data JPA,Spring Batch,Hibernate和JDBC。一旦检测到框架,它将自动配置它。
2.Spring Boot Core:是其他Spring模型的基础。它提供了某些功能,可以通过验证自行完成。
3.Spring Boot Starters:帮助启动项目,它会自动添加启动项目和依赖项。
Spring Boot特点
1.用来实现微服务;
2.自动配置
3.自定义配置
4.模块化
5.独立打包 直接运行
6.内嵌服务器
7.Spring cloud的基础

Thymeleaf模板引擎
Thymeleaf是一款用于渲染XML/XHTML/HTML5内容的模板引擎,类似JSP,Velocity,FreeMaker等,它也可以轻易的与Spring MVC等Web框架进行集成作为Web应用的模板引擎。
Thymeleaf最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个Web应用,但是总是看到说其效率有点低。
Spring Security安全框架
Spring Security是一个强大的和高度可定制的身份验证和访问控制框架。 它是保证基于spring的应用程序安全的实际标准。
Spring Security的两个目标。“认证”,是建立一个他声称的主体的过程(一个“主体”一般是指用户,设备或一些可以在你的应用程序中执行动作的其他系统)。“授权”指确定一个主体是否允许在你的应用程序执行一个动作的过程。为了抵达需要授权的点,主体的身份已经有认证过程建立。这个概念是通用的而不只在Spring Security中。
Spring Security的主要功能
认证:验证用户名和密码是否合法(是否系统中用户)
授权:是系统用户不代表你能使用某些功能,因为你可能没有权限
防御会话固定,点击劫持,跨站点请求伪造等攻击
Servlet API集成
与Spring Web MVC的可选集成
Java 多线程编程
多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。
多线程首先是属于一种并发手段。
Java 提供了三种创建线程的方法:
通过实现 Runnable 接口;
通过继承 Thread 类本身;
通过 Callable 和 Future 创建线程。
一个线程的生命周期
新建状态: 使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态。它保持这个状态直到程序 start() 这个线程。
就绪状态: 当线程对象调用了start()方法之后,该线程就进入就绪状态。就绪状态的线程处于就绪队列中,要等待JVM里线程调度器的调度。
运行状态: 如果就绪状态的线程获取 CPU 资源,就可以执行 run(),此时线程便处于运行状态。处于运行状态的线程最为复杂,它可以变为阻塞状态、就绪状态和死亡状态。
阻塞状态: 如果一个线程执行了sleep(睡眠)、suspend(挂起)等方法,失去所占用资源之后,该线程就从运行状态进入阻塞状态。在睡眠时间已到或获得设备资源后可以重新进入就绪状态。
可以分为三种:
等待阻塞:运行状态中的线程执行 wait() 方法,使线程进入到等待阻塞状态。
同步阻塞:线程在获取 synchronized 同步锁失败(因为同步锁被其他线程占用)。
其他阻塞:通过调用线程的 sleep() 或 join() 发出了 I/O 请求时,线程就会进入到阻塞状态。当sleep() 状态超时,join() 等待线程终止或超时,或者 I/O 处理完毕,线程重新转入就绪状态。
死亡状态: 一个运行状态的线程完成任务或者其他终止条件发生时,该线程就切换到终止状态
线程的几个主要概念
在多线程编程时,你需要了解以下几个概念:
1,线程同步;
2,线程间通信;
3,线程死锁;
4,线程控制:挂起、停止和恢复;
例子
1。单进程单线程:一个人在一个桌子上吃菜。
2。单进程多线程:多个人在同一个桌子上一起吃菜。
3。多进程单线程:多个人每个人在自己的桌子上吃菜。
乐观锁持乐观态度,就是假设我的数据不会被意外修改,如果修改了,就放弃,从头再来。
悲观锁持悲观态度,就是假设我的数据一定会被意外修改,那干脆直接加锁得了。
Java集合类简介:
Collection接口的三个子接口Set,List,Queue。
Java集合大致可以分为Set、List、Queue和Map四种体系。
Set代表无序、不可重复的集合;
List代表有序、重复的集合;实现List接口的常用类有LinkedList、ArrayList、Vector和Stack。
而Map则代表具有映射关系的集合,
Java 5 又增加了Queue体系集合,代表一种队列集合实现。
Java集合就像一种容器,可以把多个对象(实际上是对象的引用,但习惯上都称对象)“丢进”该容器中。从Java 5 增加了泛型以后,Java集合可以记住容器中对象的数据类型,使得编码更加简洁、健壮。
Java集合和数组的区别:
1.数组长度在初始化时指定,意味着只能保存定长的数据。而集合可以保存数量不确定的数据。同时可以保存具有映射关系的数据(即关联数组,键值对 key-value)。
2.数组元素即可以是基本类型的值,也可以是对象。集合里只能保存对象(实际上只是保存对象的引用变量),基本数据类型的变量要转换成对应的包装类才能放入集合类中。
Java集合类之间的继承关系:
Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口。
Map实现类用于保存具有映射关系的数据。Map保存的每项数据都是key-value对,也就是由key和value两个值组成。Map里的key是不可重复的,key用户标识集合里的每项数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小坏蛋至尊宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值