JAVA面试知识总结

面试知识总结

框架

Spring框架

1.我对spring框架的理解
主要理解IOC和AOP容器
IOC容器:简单的来说就是把创建对象的控制权转移到spring IOC容器中也就是控制反转,容器根据配置文件去创建和管理各个实例之间的依赖关系
IOC容器中存放着Spring的Bean对象,也就是IOC管理的java类,生命周期也是容器管理
AOP容器:关键在于代理模式(静态代理,动态代理),每次运行时都会生成一个AOP代理对象,在特定的切点实现方法的增强并回调原对象的方法,来实现事务控制以及日志的输出
2.spring框架的设计模式
工厂模式:就是不会在对外暴露创建对象的逻辑,只给一个接口调用
单例模式:在spring的配置文件中设置bean为默认的单例模式,也就是

SpringMVC

1.我对SpringMVC的理解
MVC就是三个单词的缩写
mode:模型(处理业务,封装实体service+dao+entity)
view:视图( 做界面的展示 jsp,html……)
controller:控制器(接受请求,调用模型,返回视图)
简单的来说就是spring的增强,可以支持各种视图技术,明确的分工以及各代码的职责更加明确
2.springMVC的运行原理
在这里插入图片描述
第一步:用户发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求处理器映射器(HandlerMappering)去查找处理器(Handle):通过xml配置或者注解进行查找
第三步:找到以后处理器映射器(HandlerMappering)像前端控制器返回执行链(HandlerExecutionChain)
第四步:前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器(Handler)
第五步:处理器适配器去执行Handler
第六步:Handler执行完给处理器适配器返回ModelAndView
第七步:处理器适配器向前端控制器返回ModelAndView
第八步:前端控制器请求视图解析器(ViewResolver)去进行视图解析
第九步:视图解析器像前端控制器返回View
第十步:前端控制器对视图进行渲染
第十一步:前端控制器向用户响应结果

3.关于springMVC常见的面试题总结
(1),为什么要使用springMVC?
可以支持各种视图技术,更清楚的分区,使代码功能更明确
(2),springMVC怎么设定重定向和请求转发?
重定向:在返回值前面加"redirect"
请求转发:在返回值前面加"forWord"
(3),SpringMVC怎么和AJAX相互调用的?
导入Jackson.jar的jar包,在配置文件中配置json的映射,如果想要直接返回Object,list,方法上要加@ResponseBody注解
(4),SpringMVC的控制器是不是单利模式,如果是,有什么问题,怎么解决?
是单利模式,所以在多线程访问的时候会有安全问题,不要用同步,会影响性能,解决方案是在控制器里面不能写字段
(5),SpringMVC常用的注解有哪些?
@RequestMapping:用于处理请求URL映射的注解,可以用于类或方法上
@RequestBody:注解实现http请求的json数据,将json转换为java对象
@ResponseBody:注解将实现controller方法返回对象转换为json对象响应给客户;
@RequestParam:将请求的阐述绑定到方法中的参数上,
@PathVariable:用于对应restful风格URL中的参数
(6),怎么样在方法中得到Request或者session?
直接在方法的形参中声明request,SpringMVC就自动把request对象传入
(7),如何解决get和post乱码问题?
post乱码:配置过滤器为UTF-8
get请求乱码:修改Tomcat配置文件添加编码与工程编码一致

Mybatis 框架

1,什么是Mybatis框架
(1),是一个半ORM(对象关系映射)框架,每部封装了JDBC,程序员只需要关注SQL语句本身
(2),可以使用xml或者注解来配置和映射原生信息,
(3),通过xml文件或注解的方式将要执行的statement配置起来,并通过java对象和statement中的SQL的动态参数进行映射生成最终的SQL语句,最后由mybatis框架执行SQL并将结果映射为java对象并返回
2,#{}和KaTeX parse error: Expected 'EOF', got '#' at position 13: {}的区别是什么? #̲{}是预编译处理,{}是字符串的替换
Mybatis在处理#{}时,会将SQL中的#{}替换为?号,调用PreparedStatementolk,的set方法来赋值
Mybatis在处理 时 , 就 是 把 {}时,就是把 ,{}替换成变量的值
使用#{}可以有效地防止SQL注入,提高系统的安全性
3,为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?
Hibernate属于全自动ORM映射工具,使用Hibernate查询关联对象时,可以根据对象关系模型获取,所以他是全自动的,而mybatis在查询关联对象或关联集合对象时,需要手动编写SQL来完成,所以称mybatis为半自动ORM映射工具
4,Mybatis框架的作用?
就是以面向对象的方式来操作数据库
5,什么是SQL注入问题?
可以绕过应用程序用恶意的SQL语句对数据库进行操作

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值