java面试--基础6(框架)

SpringMVC

Spring MVC处理请求流程

用户发起请求--进入前端控制器(进入springmvc的入口也是一个Servlet)
前端控制器会根据用户请求的不同调用对应的页面控制器(Servlet)
页面控制器调用biz,dao之后会得到一个数据model
将model和view视图(仅仅只是名字)统一打包之后返回前端控制器
将数据Model渲染到view视图中
最终将带有数据的页面返回给用户

@RequestMapping的Ant和占位符

*任意字符

在这里插入图片描述
http://localhost:9090/SpringMvc2/ant/bbbbb/ant1.html

**任意多层字符

在这里插入图片描述
http://localhost:9090/SpringMvc2/ant/a/b/c/d/e/ant2.html

?一个问号是一个字符,允许多个问号

在这里插入图片描述
http://localhost:9090/SpringMvc2/ant/ant3a.html
http://localhost:9090/SpringMvc2/ant/ant4aa.html

{xxx}占位符,多级路径

在这里插入图片描述
http://localhost:9090/SpringMvc2/abc/123/ant.html

Springmvc中获取Servlet的原生对象

request和session

在这里插入图片描述

response

在这里插入图片描述

Cookie获取和设置

在这里插入图片描述

SpringMVC中的转发和重定向

SpringMVC默认的跳转方式是转发
在这里插入图片描述

SpringMVC支持Ajax

在这里插入图片描述

@controller和@restcontroller有什么区别

@RestController注解相当于@ResponseBody + @Controller合在一起的作用

拦截器、过滤器、AOP

过滤器

Filter:过滤的是全部的请求,不能细致到方法
在这里插入图片描述

拦截器

Interceptor:过滤可以细致到某个类的中的某个方法,必须是进入springmvc控制层的才能过滤。
在这里插入图片描述
在这里插入图片描述

AOP

AOP:可以过滤全部请求的全部方法,细致到任意层。

Rest风格

在这里插入图片描述
在这里插入图片描述

Mybatis

mybatis的工作原理

MyBatis先创建SqlSessionFactory,SqlSessionFactory在根据配置,配置来源于两个地方,一处是配置文件,一处是Java代码的注解,获取一个SqlSession。SqlSession包含了执行sql所需要的所有方法,可以通过SqlSession实例直接运行映射的sql语句,完成对数据的增删改查和事务提交等,用完之后关闭SqlSession。

JDBC、Mybatis、Hibernate的区别

JDBC:创建数据库,创建表,创建字段,开启,关闭数据库,SQL语句,
	查询rs.next(rs.getxx)获取每个字段属性
Mybatis:创建数据库,创建表,创建字段  SQL语句   
Hibernate:创建数据库,调用提供的方法add update delete query,

瞬时状态,持久状态,托管状态

瞬时状态(new出来还没有关联到数据库的),每次启动执行完这个对象就销毁了
持久状态(关联到数据库),实体对象和数据库同步
托管状态:实体对象和数据库中有关联,但是session关闭了。
	只有重新获取session变回持久状态

外键

在这里插入图片描述

集合

在这里插入图片描述

SqlSessionFactory、SqlSession

SqlSessionFactory:单例设计模式,从项目运行期间只有一个
	(项目和数据库创建链接)
SqlSession:每次HTTP请求都创建一个新的链接,每次使用完毕都要关闭。
	(一次CRUD操作)

缓存

一级缓存

一级缓存:存储作用域为Session,当Session flush 或 close之后,该Session中的所有 Cache 就将清空。或者如果就算不close只要有进行其他的commit操作,session依然会失效。(几乎不用)

二级缓存

二级缓存与一级缓存其机制相同,不同在于其存储作用域为Mapper(Namespace)就是一个配置文件

缓存的作用

提高效率不需要每次都进行查询,证券股票(实时查询不适合使用缓存),缓存必须支持脏数据

Mybatics中map映射的两种方式

注解方式;xml的方式
*两种有什么区别?
---复杂的用xml;简单的用注解方式直接写sql语句

动态SQL

if

在这里插入图片描述

choose、when、otherwise

在这里插入图片描述

trim、where、set

在这里插入图片描述
在这里插入图片描述

foreach

在这里插入图片描述

bind

在这里插入图片描述

Spring

IOC和DI的区别

IOC:控制反转:dao  biz不在类中进行创建和维护,
	交给外部容器进行创建。统一管理做到单例模式
DI: 依赖注入:dao  biz 不在类内部进行new,外部容器创建之后必须注入进来,
	由于是私有的属性,所以可以通过构造方法也可以通过set方式注入
区别:
1.它们是spring核心思想的不同方面的描述。
2.依赖注入和控制反转描述的角度不同。
	依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:
	应用程序依赖容器创建并注入它所需要的外部资源;
	
 	控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,
	由容器反向的向应用程序注入应用程序所需要的外部资源。

依赖注入的两种方式

构造方法注入
Set方式注入

@Autowired 与@Resource的区别

Spring默认支持的是@Autowired,@Autowired默认是根据类型进行查找的
@Resource装配顺序
  1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行
  装配,找不到则抛出异常
  2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不
  到则抛出异常
  3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到
  或者找到多个,都会抛出异常
  4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装
  配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配

AOP

面向横切的思想,思考入手点是横向的,各个模块都需要使用到的功能,
统一出来编写,不需要模块知道具体共同部分的细节,通过外部配置织入

AOP能干什么,也是AOP带来的好处
1:降低模块的耦合度
2:使系统容易扩展

懒加载

bean默认启动服务器就全部创建,设置为懒加载后就是第一次使用该bean的时候才创建

Spring中的bean有几种配置方式

传统的XML配置方式
基于注解的配置
基于类的Java Config

Bean的作用域有几个

单例(默认),每次创建,request ,session  application

Spring的配置文件有哪些内容

 开启事务注解驱动
 事务管理器
 开启注解功能,并配置扫描包
 配置数据源
 配置SQL会话工厂、别名、映射文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值