【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(六)
来源:互联网 发布:openresty java web 编辑:程序博客网 时间:2024/04/30 20:04
【前言】别人都在你看不到的地方暗自努力,在你看得到的地方,他们也和你一样显得游手好闲,和你一样会抱怨,而只有你自己相信这些都是真的,最后,也只有你一个人继续不思进取 ……
【下载】个人结合诸多资料,总结的一些JavaEE常见面试题,主要针对初/中级程序员。想要word完整版下载的,评论里留言留下你的邮箱!
62.谈一谈你对Mybatis的理解?
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。
MyBatis是一个优秀的持久层框架,它对使用jdbc操作数据库的过程进行封装,使开发者只需要关注SQL本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
程序员只需要关注sqlsession,即可完成mybatis的编程。
1、 mybatis配置文件
a) SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。
b) Mapper.xml,此文件作为mybatis的sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载。
2、 通过mybatis环境等配置信息构造SqlSessionFactory,即会话工厂。
3、 通过会话工厂创建sqlSession即会话,程序员通过sqlsession会话接口对数据库进行增删改查操作。
4、 mybatis底层自定义了Executor执行器接口来具体操作数据库,Executor接口有两个实现,一个是基本执行器(默认)、一个是缓存执行器,sqlsession底层是通过executor接口操作数据库的。
5、 Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个select\insert\update\delete标签对应一个Mapped Statement对象,select\insert\update\delete标签的id即是Mapped statement的id。
a) Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。
Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。
62.SpringMVC的执行过程?
1、用户发送请求至前端控制器DispatcherServlet
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
5、HandlerAdapter执行处理器(handler,也叫后端控制器)。
6、Controller执行完成返回ModelAndView
7、HandlerAdapter将handler执行结果ModelAndView返回给DispatcherServlet
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、ViewReslover解析后返回具体View对象
10、DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet响应用户
63.SpringMVC与Strus2的区别
1、Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC就容易实现restful风格。
2、由上边原因,SpringMVC的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架,方法之间不共享变量,而Struts2其所有Action变量是共享的,每次请求都会创建一个新的Action,一个Action对象对应一个request上下文。
3、由于Struts2需要针对每个request进行封装,把request,session等servlet生命周期的变量封装成一个一个Map,供给每个Action使用,并保证线程安全,所以在原则上,是比较耗费内存的。
4、拦截器实现机制上,Struts2有以自己的interceptor机制,SpringMVC用的是独立的AOP方式,这样导致Struts2的配置文件量还是比SpringMVC大。
5、SpringMVC的入口是servlet,而Struts2是filter。
6、SpringMVC集成了Ajax,使用非常方便,只需一个注解@ResponseBody就可以实现,然后直接返回响应文本即可,而Struts2拦截器集成了Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去,使用起来也相对不方便。
- 【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(六)
- 【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(一)
- 【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(二)
- 【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(三)
- 【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(四)
- 【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(五)
- 【JAVA秒会技术之秒杀面试官】JavaSE常见面试题(一)
- 【JAVA秒会技术之秒杀面试官】JavaSE常见面试题(二)
- 【JAVA秒会技术之秒杀面试官】JavaSE常见面试题(三)
- 【JAVA秒会技术之秒杀面试官】JavaSE常见面试题(四)
- 【JAVA秒会技术之秒杀面试官】秒杀Java面试官——集合篇(一)
- 【JAVA秒会技术之秒杀面试官】集合篇(二)
- 【JAVA秒会技术之玩转PDF】IText转PDF秒会
- 【JAVA秒会技术之ActiveMQ】ActiveMQ的快速入门
- 【JAVA秒会技术之玩转SQL】MySQL优化技术(一)
- 【JAVA秒会技术之玩转SQL】MySQL优化技术(二)
- 【JAVA秒会技术之秒懂HTTPS】白话图解HTTPS原理
- 【JAVA秒会技术之JVM】JVM独家剖析(一)
- Windows下安装-MongoDB-并设置MongoDB随机启动服务~
- SAX解析XML例子
- user Itext to marge pdf model
- 黑屏问题
- android webview将网页内容导出为图片和PDF方法
- 【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(六)
- Dungeon Master(bfs)
- Http状态码详解
- HTML&CSS&JavaScript思维导图
- iOS适配后台打电话和qq微信视频语音通话
- OKHTTP
- 关于web标准的一些理解
- 面向对象的使用
- 如何合理地估算线程池大小