• 框架高频面试题


    【评论【#简单的谈一下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框架的七大模块

    1. 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 全功能实现。

  • 相关阅读:
    linux ssh免密
    flink WaterMark之TumblingEventWindow
    flink 并行计数器实现
    VSCode删除重复的空行
    Gnome添加Open with Code菜单
    Linux下设置VSCode为默认的文本编辑器
    Jupyter Notebook添加Ruby支持
    Linux下无法运行Color picker
    oh-my-zsh: bracketed-paste-magic:zle:47: not enough arguments for -U
    Vim auto-pairs设置选项
  • 原文地址:https://www.cnblogs.com/kylinxxx/p/13930193.html
Copyright © 2020-2023  润新知