1、说一下你对 SSM 框架的理解。
答:SSM( Spring +SpringMVC+ Mybatis )框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。
Spring
Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。
Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。
SpringMVC
SpringMVC在项目中拦截用户请求,它的核心Servlet即 DispatcherServlet 承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,
Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。
mybatis
mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sql session Factory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,
Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。
页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,
控制器再调用视图展现数据。
2、讲述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响应用户
3、SpringMVC与 Struts2 的主要区别?
①springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过虑器。
②springmvc是基于方法开发,传递参数是通过方法形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。
③Struts采用值栈存储请求和响应的数据,通过OGNL存取数据, springmvc通过参数解析器是将 request对象 内容进行解析成方法形参,将响应数据和页面封装成ModelAndView对象,
最后又将模型数据通过request对象传输到页面。 Jsp视图解析器默认使用jstl。
4、怎么样理解IOC和DI
答:在使用Spring框架的过程中、一定会用到控制反转、但是往往所需要的资源还需要其他资源的支持、个过程就需要依赖注入的支持
5、Spring的事务,事务的作用。
答:• 编程式事务管理:这意味你通过编程的方式管理事务,给你带来极大的灵活性,但是难维护。
• 声明式事务管理:这意味着你可以将业务代码和事务管理分离,你只需用注解和XML配置来管理事务。
6、说下Spring的注解
答:• @Controller
• @Service
• @Component
• @RequestMapping
• @Resource、@Autowired
• @ResponseBody
7、为什么要用Spring
答:• 降低对象耦合度,让代码更加清晰,提供一些常见的模版
8、SpringMvc中函数的返回值是什么
答:返回值可以有很多类型,有String, ModelAndView,List,Set等,一般用String比较好,如果是AJAX请求,返回的可以是一个集合
SpringMvc怎么处理返回值的
SpringMvc根据配置文件中InternalResourceViewResolver(内部资源视图解析器)的前缀和后缀,用前缀+返回值+后缀组成完整的返回值
9、SpringMVC怎么样设定重定向和转发的
答:在返回值前面加” forward :”就可以让结果转发,譬如”forward:user.do?name=method4″ 在返回值前面加”redirect:”就可以让返回值重定向,例如”redirect:”
10、SpringMvc中有个类把视图和数据都合并的一起的,叫什么
ModelAndView
11、怎么样把数据放入Session里面
可以声明一个request,或者session先拿到session,然后就可以放入数据,或者可以在类上面加上@SessionAttributes注解,里面包含的字符串就是要放入session里面的key
12、SpringMvc怎么和AJAX相互调用的
通过Jackson框架就可以把 Java 里面的对象直接转化成js可以识别的 Json 对象 具体步骤如下 :
1.加入Jackson.jar
2.在配置文件中配置json的映射
3.在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解
13、当一个方法向AJAX返回对象,譬如Object,List等,需要做什么处理
要加上@ResponseBody注解
14、讲下SpringMvc的执行流程
系统启动的时候根据配置文件创建spring的容器, 首先是发送http请求到核心控制器DispatcherServlet,spring容器通过映射器去寻找业务控制器,
使用适配器找到相应的业务类,在进业务类时进行数据封装,在封装前可能会涉及到类型转换,执行完业务类后使用ModelAndView进行视图转发,
数据放在model中,用map传递数据进行页面显示。
15、SpringMvc 的控制器是不是 单例模式 ,如果是,有什么问题,怎么解决?
答:单例模式,在多线程访问时有线程安全问题
解决方法:不要用同步,在控制器里面不能写字段
16、什么是Mybatis的接口绑定,有什么好处?
Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用起来变得更加省事和方便。