一些框架面试知识

1:谈谈对Spring的理解:

   以玩笑话来说Spring就是一家公司,在者还有很多非常好用的Spring系列的产品,Spring就是一个轻量级的开源框架也可说是一个集成框架,(像 SpringMVC,MyBatis,Hibernate,Struts,Shiro等框架就被Spring所集成),在Spring中有两个核心就是       IOC(控制反转)和 AOP(面向切面)

2:简述 IOC(控制反转):

   Java对象的创建交给了Spring管理,也就是说把控制权交给了第三方管理,这就叫控制反转

 列如:用JSPServlet来做的项目的话,每次登录都会new新的对象如果用Spring的Bean标签,从而节约了内存空间的占用,而且Spring IOC的底层就是单例模式,提高性能(只写一次,N多个人调用)

3:简述 AOP (面向切面):AOP的底层就是过滤器  主要体现在事务和日志上   (简化了大量的代码)

   日志:在做任何一个项目的时候有权限问题中就会使用到日志(通过过滤来实现日志)

   事务:在操作增删改的时候以前是需要手动开启或者关闭事务,但是AOP处理事务的好处就在于它能自动管理事务,因为AOP               的底层就是过滤器,然后是通知之后就是代理,使用动态代理自动检测增删改功能且自动提交和关闭事务

 AOP在底层的是通知,通知在底层就是代理而代理有分为静态代理和动态代理,默认是动态代理,灵活性高

4:SpringMVC 的工作流程

  (1):客户发送请求到Dispatcher Servlet

 (2):Dispatcher Servlet 收到请求并调用HandlerMapping处理器

(3):处理映射器找到具体的处理器,生成处理对象返回给Dispatcher Servlet

(4):Dispatcher Servlet调用HandlerAdapter处理器适配器

(5):HandlerAdapter经过适配调用具体的处理器Controller

(6):Controller进行业务处理后返回一个ModelAndView

(7):HandlerAdapter将Controller执行的结果ModelAndView返回给Dispatcher Servlet

(8):Dispatcher Servlet将ModelAndView返回给ViewResolver视图解析器

(9):ViewResolver解析返回给具体的View

(10):view进行渲染视图并响应给用户

5:SpringMVC是怎么防止SQL注入

  使用SpringMVC的拦截器实现SQL注入

6:SpringMVC和Struts的区别如下

(1):SpringMVC的核心处理入口是Servlet  Struts2的核心处理是过滤器(StrutsPrepareAndExecuteFilter)

(2):SpringMVC是基于方法直接访问   Struts2是基于类在基于方法,每发一次请求就会实例一个Action

(3):SpringMVC是非继承  Struts2可继承可不继承(侵入非侵入)

(4):SpringMVC通过注解   Struts2通过配置

7:Hibernate与 MyBatis的区别:

(1):Hibernate属于全自动的重量级框架,SQL语句经过了封装可以直接使用,无缝移植,开发效率高但是性能低

(2):Mybatis属于半自动化的轻量级的框架,SQL语句要自己手动完成,扩展性和移植性差但是性能高

(3):SQL语句优化Hibernate不如Mybatis

(4):都属于ORM框架,Hibernate的关系映射交给了Hibernate框架管理

8:一级缓存和二级缓存(默认是一级缓存)

一级缓存:又称是Session级别缓存,必须用同一个Session,多个会出现问题

二级缓存:又称SessionFactory级别的缓存,专门生成Session(通过配置文件开启二级缓存)

9:MyBatis中 #{} 与 ${}的区别:

#{}:#{}解析传过来参数带单引号   防止SQL注入(预编译,建议使用)

${} :${}解析穿过来的参数值不带单引号     存在SQL语句注入问题

10:Hibernate中的对象状态(三种):

(1)临时状态(新建状态):刚创建出来的对象还没使用,存在内存中一关就没了就是临时状态

  (2)  持久状态(又被称托管):把对象存放在数据库,数据库有Session里面就有(把新建状态转换成持久状态:session.Sava)

  (3)  游离状态  (又被称脱管):数据库里面有数据但是session里面的数据已经不在了

11:获取Session的两种方式:

(1)通过getSession() 打开Session但是多次访问会出现堵塞,需要手动关闭Session

  (2) 通过getCurrentSession()获取当前Session,不需要手动关闭Session
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值