关于SSM框架整理
1.创建maven项目
这是一个综合了spring+springmvc+mybatis的maven项目。
(1) spring运用在:spring是管理bean生命周期轻量级的容器,创建对象实例和依赖注入都交给了spring容器来处理。我们不需要new对象和给对象赋值。
(2)mybatis运用在:它是orm框架,对象关系映射.它把dao层分成了2部分,接口和xml。在接口里声明了所拥有的方法及其方法传递的参数,每个方法都在xml中对应id名相同的执行sql语句的操作。由于id不能重复所以导致接口内的方法也不能重载。在xml中可以编写各个方法对应的增删查改的操作外,还可以编写对象关系映射和动态sql语句。
(3)springmvc运用在:如果没有MVC设计模式。程序间的各层之间依赖非常强,耦合度高。严重违背了高内聚低耦合的设计原则。而WebMVC将控制逻辑和功能处理,模型和视图进行了分离,降低耦合。
2.src/main/java.建包
(1)controller 控制层
(2)dto
(3)mapper dao层用于执行sql语句
(4)pojo 所有的java Bean
(5)service 服务层
(6)utils 工具层
(7)intercepter
3.src/main/resources创建配置文件
(1)myBatisConfig.xml主配置文件
<!-- 配置MyBatis参数 -->
(2)jdbc.properties连接数据库
(3) applicationContext-spring-mvc.xml
<!-- 扫描持久化层、服务层、控制层的包下的注解 -->
<!-- 使@Controller注解和对应@RequestMapper注解生效 -->
<!-- 视图解析器,主要解析访问的视图 -->
<!-- 上传文件解析器 -->
<!-- 开启对控制器类代理 -->
<!-- 配置Shiro注解生效 -->
(4)applicationContext-spring-mapper.xml
<!-- 先导入属性文件 -->
<!-- 配置数据库,数据源配置 C3p0 Driud(阿里巴巴) -->
<!-- 配置会话工厂 -->
<!-- 扫描Mapper文件和Mapper接口 -->
(5)applicationContext-spring-service.xml
<!-- 扫描service层注解 -->
<!-- 配置Spring事务 AOP 实现,通过事务管理器管理事务 -->
<!-- 通知 使用Spring内部的通知,引入tx命名空间引用事务管理器-->
<!-- 顾问 = 切入点 + 通知 -->
(6)applicationContext-spring-shiro.xml
<!-- 定义hash凭证匹配器 散列 -->
<!-- 自定义Realm -->
<!-- 配置SercurityManager -->
<!-- 过滤器Bean,用于过滤所有配置的请求地址,由shiro中过滤器来过滤 -->
4.src/main/webapp视图层
静态资源和jsp页面
web.xml
<!-- 添加前端控制器 一般会加载MVC相关的bean配置管理
<!-- spring容器监听器,用于加载除了MVC之外的其他的 bean 比如: Log, Service, Dao, PropertiesLoader,
DataSource Bean -->
<!-- 编码过滤器 -->
<!-- 设置true由servlet容器控制Shiro filter的生命周期 -->
5.pom.xml依赖库
(1)依赖:
持久化层:Mybatis MySql 连接池
服务层:Spring 事务管理器(spring-jdbc)声明式配置事务 分页处理 -mybatis中进行分页
控制层:springmvc处理 JSP相关 文件上传组件 Jackson Json处理 单元测试(junit)Shiro
测试:
(2)插件:
6.控制层中的spring mvc的使用
什么是MVC ?mvc在b/s下的应用:
mode : dao和service等模型层+业务层+持久层,会导致JavaBean组件类庞大
view : jsp,html,ftl等
controller : 控制器
SpringMvc整个的执行流程:
1、发起请求到前端控制器(DispatcherServlet )
2、前端控制器请求HandlerMapping查找Handler(可以根据xml、注解进行查找)
3、处理器映射器HandlerMapping向前端控制器DispatcherServlet 返回Handler
4、前端控制器DispatcherServlet 调用处理器适配器HandlerAdapter 执行Handler
5、处理器适配器HandlerAdapter 执行Handler
6、Handler执行完给处理器适配器返回ModelAndView
7、处理器适配器向前端控制器返回ModelAndView (ModelAndView 是SpringMvc的底层对象 包括model和view)
8、前端控制器请求视图解析器去解析视图
根据逻辑视图名解析成真正的视图(jsp)
9、视图解析器向前端控制器返回view
10、前端控制器进行视图渲染
视图渲染将模型数据(模型数据在ModelAndView对象中)填充到request域
11、前端控制器向用户响应结果
简洁版:
(1)客户端发送请求到DispathcherServlet;最终调用doDispatch()方法
(2)前端控制器调用处理器映射器查找Handler;调用getHandler()方法;也就是通过HandlerMapping来获取到HandlerExecutionChain;其中包含执行控制器Controller
(3)通过HandlerExecutionChain调用处理器适配器【调用getHandlerAdatpter()方法】来获取HandlerAdatpter
(4)再通过HandlerAdatpter来调用invoke方法,来调用控制器方法,会得到一个ModelAndView对象
(5)解析视图,通过视图解析器解析视图,调用ViewResolver方法生成View对象,View对象中包含要渲染视图的地址
(6)渲染视图: 把模型中数据添加到请求作用域,跳转到视图页面【用View调用render()方法】;最后响应给客户端
最简化:
首先请求发送request请求到C(control 接收用户请求响应用户) 然后控制器到M模型(pojo、action、service、dao)层处理 处理结果完了返回控制器 控制器要经过视图渲染 最后返回终端(response)。