SSM由Spring+SpringMVC+MyBatis组合而成,简称SSM。
Spring是一个开源的轻量级控制反转和面向切面编程的容器框架。Spring核心主要是AOP+IOC,IOC控制反转,把对象的创建,属性设置,初始化,销毁等工作交给Spirng的IOC容器。对象被注册到Spring的IOC容器中,使用的时候从容器中获取即可,它可以通过依赖注入,将需要的外部资源注入到组件中,使用IOC使得对象之间的耦合度降低,容易管理资源;AOP面向切面编程,AOP是对OOP的一种补充,能够做到很多面向对象无法做到的事情,比如需要在所有方法执行前开启事务,打印日志,如果使用面向对象来编程,将会产生大量重复代码,而使用AOP,可以将那些与业务无关,横切逻辑代码封装起来使用AOP,在不改变原有业务逻辑的情况下,实现解耦合,避免横切逻辑代码重复,AOP的使用场景包括日志记录,性能统计,安全控制,事务处理,异常处理等等,它是基于动态代理实现的,JDK动态代理只支持实现了接口的类 ,CGLIB支持没有实现接口的类。Spring默认使用JDK动态代理,如果被代理类没有实现接口,会选择CGLIB动态代理。
springmvc是一个基于mvc的web框架, springmvc的执行原理:1.Http请求:客户端请求提交到DispatcherServlet-前端控制器2.寻找处理器:由DispatcherServlet调用HandlerMapping-处理器映射器,根据url找到对应的的Handler3.调用处理器:DispatcherServlet指定HandlerAdapter-处理器适配器去调用Handler4.调用业务处理和返回结果:Handler调用业务逻辑处理完成后,返回ModelAndView5.处理视图映射并返回模型: DispatcherServlet查询一个或多个ViewResoler-视图解析器,找到ModelAndView指定的视图6.Http响应:将结果显示到客户端
MyBatis是一个基于Java的持久层框架,只需要进行简单的配置就可以实现自动注册驱动、建立连接、释放连接等操作,完成数据库连接。mybatis支持自定义 SQL、存储过程以及高级映射,可以通过sql映射文件实现sql语句的编写,支持动态sql,用条件判断进行查询可以实现sql复用。
常用注解:
@Controller:用来标识一个类是控制器类
@RequestMapping:用来映射请求路径和参数
@ResponseBody:将返回值放到responsebody中,通常返回json或者xml格式数据
@RequestBody:将前台请求参数转换成对象
@PathVariable:接收路径参数,通常用在restful接口中
@RestController:@Controller和@ResponseBody的组合注解
@ControllerAdvice:运用aop的思想,对全局做一些处理 @ExceptionHandler做全局异常捕获