1:SpringMVC的工作流程:
①. SpringMVC将所有的请求都提交给DispatcherServlet
②. DispatcherServlet收到请求调用HandlerMapping处理映射器
③. 处理映射器找到具体的处理器,生成处理器对象返回给DispatcherServlet
④. DispatcherServlet调用HandlerAdapter处理器适配器
⑤. HandlerAdapter经过适配调用具体的处理器Controller
⑥. Controller进行业务逻辑处理后,会返回一个ModelAndView
⑦. HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet
⑧. DispatcherServlet将ModelAndView传给ViewResolver视图解析器
⑨. ViewResolver解析后返回具体的View
⑩. DispatcherServlet根据View进行渲染视图并响应用户
2:SpringMVC怎么防止SQL注入:
使用SpringMVC的拦截器实现防止SQL注入
详细了解请看这篇https://blog.youkuaiyun.com/jiang1245764446/article/details/73379727
(附带一张SpringMVC工作流程图)
3:mybatis中#{}和${}区别是什么:
#{}:参数占位符,Mybatis会将sql中的#{}替换为?
${}:变量占位符,也可以理解为取值符
4:讲一下mybatis的缓存机制:
MyBatis提供了查询缓存来缓存数据,以提高查询的性能,MyBatis的缓存分为一级缓存和二级缓存。
一级缓存:SqlSession级别的缓存,基于HashMap本地缓存,当同一个sqlSession执行两次相同的SQL语句时,第一次执行完后会将数据库中查询到的结果写到缓存,第二次查询时直接从缓冲中读取不经过数据库了。一级缓存默认时开启的
二级缓存:mapper级别的缓存,也是基于hashmap本地缓存,不同的sqlSession两次执行相同的namespace下的sql语句,第二次查询就不会进行数据库了。