【评论【#简单的谈一下SpringMVC的工作流程
1、用户发送请求至前端控制器DispatcherServlet
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、DispatcherServlet调用HandlerAdapter处理器适配器
5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
6、Controller执行完成返回ModelAndView
7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、ViewReslover解析后返回具体View
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet响应用户
说出SpringMVC常用的5个注解?如何使用 SpringMVC完成JSON操作?:
常用的 5 个注解 @RequestMapping 、 @PathVariable 、 @RequestParam 、 @RequestBody 、@ResponseBody
如何使用 SpringMVC 完成 JSON 操作:
①. 配置 MappingJacksonHttpMessageConverter
②. 使用 @RequestBody 注解或 ResponseEntity 作为返回值
SpringMVC怎么样设定重定向和转发的?
在返回值前面加"forward:“就可以让结果转发,譬如"forward:user.do?name=method4” 在返回值前面加"redirect:“就可以让返回值重定向,譬如"redirect:http://www.baidu.com”
怎么样在方法里面得到Request,或者Session?
直接在方法的形参中声明request,SpringMvc就自动把request对象传入
讲下对MyBatis的缓存的理解?
MyBatis的缓存分为一级缓存和二级缓存,一级缓存放在session里面,默认就有,二级缓存放在它的命名空间里,默认是打开的,使用二级缓存属性类需要实现Serializable序列化接口(可用来保存对象的状态),可在它的映射文件中配置
- Mybatis首先去缓存中查询结果集,如果没有则查询数据库,如果有则从缓存取出返回结果集就不走数据库。Mybatis内部存储缓存使用一个HashMap,key为hashCode+sqlId+Sql语句。value为从查询出来映射生成的java对象
- Mybatis的二级缓存即查询缓存,它的作用域是一个mapper的namespace,即在同一个namespace中查询sql可以从缓存中获取数据。二级缓存是可以跨SqlSession的。
MyBatis编程步骤是什么样的?
① 创建SqlSessionFactory ② 通过SqlSessionFactory创建SqlSession ③ 通过sqlsession执行数据库操作 ④ 调用session.commit()提交事务 ⑤ 调用session.close()关闭会话
MyBatis实现一对多有几种方式?怎么操作的?
有联合查询和嵌套查询, 联合查询是几个表联合查询,只查询一次,通过在resultMap里面配置collection节点配置一对多的类就可以完成; 嵌套查询是先查一个表,根据这个表里面的结果的外键id,去再另外一个表里面查询数据,也是通过配置collection,但另外一个表的查询通过select节点配置
MyBatis实现一对一有几种方式?具体怎么操作的?
有联合查询和嵌套查询, 联合查询是几个表联合查询,只查询一次,通过在resultMap里面配置association节点配置一对一的类就可以完成; 嵌套查询是先查一个表,根据这个表里面的结果的外键id,去再另外一个表里面查询数据,也是通过association配置,但另外一个表的查询通过select属性配置
解释下MyBatis 中的动态SQL的理解?
对于一些复杂的查询,我们可能会指定多个查询条件,但是这些条件可能存在也可能不存在。MyBatis 中用于实现动态 SQL 的元素主要有:
if
choose / when / otherwise
trim
where
set
foreach
谈谈对mybatis中的sqlSession、sqlSessionFactoryBuild和sqlSessionFactory的理解。
sqlSession:封装了对数据 增删改查的方法 sqlSession是通过sqlSessionFactory创建的 sqlSessionFactory是通过sqlSessionFactoryBuild创建的
sqlSessionFactoryBuild 是创建sqlSessionFactory时使用的.一旦创建成功后就不需要sqlSessionFactoryBuild的,因为sqlSession是通过sqlSessionFactory创建的,可以可以当做工具类使用
sqlSessionFactory是一个接口, 类里重载了opensession的不同的方法使用范围是在整个运行范围内,一旦创建可以重复使用.可以当做单实例对象来管理
sqlSession是面向用户的一个操作数据库的接口 每个线程都应该有自己的sqlSession 并且sqlSession不可以共享. 线程是不安全的,打开一个sqlSession用完之后就要关闭
Spring框架的七大模块
- Spring Core 框架的最基础部分,提供 IoC 容器,对 bean 进行管理。
2.Spring Context 基于 bean,提供上下文信息,扩展出JNDI、EJB、电子邮件、国际化、校验和调度等功能。
3.Spring DAO 提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码,还提供了声明性事务管理方法。
4.Spring ORM 提供了常用的“对象/关系”映射APIs的集成层。 其中包括JPA、JDO、Hibernate、MyBatis 等。
5.Spring AOP 提供了符合AOP Alliance规范的面向方面的编程实现。
6.Spring Web 提供了基础的 Web 开发的上下文信息,可与其他 web 进行集成。
7.Spring Web MVC 提供了 Web 应用的 Model-View-Controller 全功能实现。