SSH与SSM

SSH 通常指的是 Struts2 做控制器(controller),spring 管理各层的组件,hibernate 负责持久化层。

SSM 则指的是 SpringMVC 做控制器(controller),Spring 管理各层的组件,MyBatis 负责持久化层。

共同点:1.Spring依赖注入DI来管理各层的组件。2.使用面向切面编程AOP管理事物、日志、权限等。

不同点:1.Struts2 和 SpringMVC 控制器(controller)控制视图和模型的交互机制的不同,

Struts2是Action类级别,SpringMVC是方法级别,更容易实现RESTful风格。

SSM和SSH不同主要在MVC实现方式,以及ORM持久化方面不同(Hiibernate与Mybatis)。SSM越来越轻量级配置,将注解开发发挥到极致,且ORM实现更加灵活,SQL优化更简便;而SSH较注重配置开发,其中的Hibernate对JDBC的完整封装更面向对象,对增删改查的数据维护更自动化,但SQL优化方面较弱,且入门门槛稍高。



Struts2的工作原理

1 客户端初始化指向Servlet容器的请求

2 这个请求经过一系列的过滤器(filter)

3 StrutsPrepareAndExecuteFilter被调用, 然后去询问ActionMapping 决定这个请求是否需要调用某个Action

4 如果ActionMapping 决定需要调用某个Action,StrutsPrepareAndExecuteFilter把这个请求的处理交给ActionProxy

5  ActionProxy通过ConfigurationManager询问配置文件找到需要的Action类

6 ActionProxy 创建一个ActionInvocation的实例

7 ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。

8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。


Struts2核心组件

ActionMapper :通过method 参数将请求发到具体的action

ActionProxy:是一个action的一个代理类,Action的调用时通过动态代理实现的,其实调用了ActionProxy.execute()方法,而该方法又调用了ActionInvocation。invoke()方法,最后调用的是DefaultActionInvocation().invokeAction()方法

ActionInvocation:Action的调用者,ActionInvocation在Action的执行过程中,负责 Interceptor丶Action丶Result等一系列元素的调度

Interceptor拦截器:是Struts 2的一个强有力的工具,有许多功能(feature)都是构建于它之上


SpringMVC 的工作原理

1 客户端请求提交到DispatcherServlet

2 DispatcherServlet 控制器查询一个或者多个handlerMapping,找到请求的contorller

3 DispatcherServlet 将请求交给contorller

4 contorller 调用业务层,返回 modelAndView

5 DispatcherServlet 查找到 一个或者多个modelAndView 视图解析器,找到modelAndView指定的视图

6 视图负责将结果显示在客户端

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容