SSH搭建时的关键内容,困扰你我的关键点
### SSH搭建时的关键内容与配置解析 在软件开发过程中,SSH(Struts + Spring + Hibernate)框架因其良好的分层设计、强大的功能支持以及广泛的社区资源而受到开发者的青睐。本文将围绕“SSH搭建时的关键内容,困扰你我的关键点”这一主题展开讨论,通过解析几种SSH的搭配方式、配置细节及注意事项,帮助读者更好地理解和掌握SSH框架的搭建过程。 #### 一、SSH框架基础 SSH框架主要包括三个核心部分:Struts用于处理Web层的MVC模式,Spring作为业务逻辑层容器管理和控制业务流程,而Hibernate则负责数据持久化操作。这三者结合在一起可以实现一个完整的MVC架构,同时还能充分利用各组件的优势,达到高效、灵活的应用程序开发目的。 #### 二、几种SSH的搭配方式 1. **使用Struts + Spring的集成**: - **固定一种形式**:首先需要明确项目中的各个模块如何分工合作。例如,在Struts配置文件中定义Action类,并通过Spring管理这些Action的实例。 - **配置完后的检查**:完成基本配置之后,应该进行详尽的检查,确保所有配置项正确无误,避免出现遗漏或错误导致的问题。 - **事务配置详解**:Spring提供了丰富的事务管理机制,可以配置不同的传播行为(如`PROPAGATION_REQUIRED`等),来满足不同场景下的需求。 2. **使用Struts + Spring + Hibernate的集成**: - **配置Struts与Spring的集成**: - 使用`DelegatingActionProxy`来代理Struts的Action调用,这样可以将Action的创建、初始化等工作交给Spring容器管理。 - 在`struts-config.xml`中为每个Action指定类型,确保类型有效。 - 当Struts Action实例化时,会通过Spring去查找相应的Bean,然后由该Bean执行具体的业务逻辑和服务操作。 - 这种方式下,Spring不仅可以管理Action,还可以通过AOP提供横切关注点的支持。 - **配置Struts与Spring的自动化集成**: - 使用`AutowiringRequestProcessor`来自动装配Struts的Action。 - `struts-config.xml`中的Action元素不再指定type属性,而是依赖于Struts的默认配置机制。 - Struts会根据Action类名找到对应的Spring Bean,并进行自动装配。 - 如果使用Spring AOP特性,还需要添加必要的库文件(如asm系列的jar包),以确保AOP功能的正常运行。 #### 三、常见问题与解决方法 1. **ASM类库冲突问题**: - 在使用Spring AOP时可能会遇到与Hibernate的ASM类库版本冲突的问题,导致诸如`NoClassDefFoundError`等异常。 - 解决方法是统一版本号或者排除冲突的类库。 - 例如,如果使用了Hibernate 3,则需要移除其自带的`asm.jar`和`asm-attrs.jar`,避免与Spring所需的ASM类库版本不一致引发的错误。 2. **事务传播行为设置不当**: - 在Spring中,事务的传播行为非常重要,不同的设置会导致不同的结果。 - 比如,`PROPAGATION_REQUIRED`表示如果有现有事务,则加入该事务;如果没有,则创建新的事务。 - 而`PROPAGATION_SUPPORTS`表示如果有现有事务,则加入该事务;如果没有,则以非事务方式执行。 - 其他传播行为还包括`PROPAGATION_MANDATORY`、`PROPAGATION_REQUIRES_NEW`、`PROPAGATION_NOT_SUPPORTED`、`PROPAGATION_NEVER`和`PROPAGATION_NESTED`等,每种都有其特定的适用场景。 #### 四、总结 通过对SSH框架的基础概念、几种常见的搭配方式及其配置细节的深入探讨,我们可以看出SSH框架的强大之处在于其高度的灵活性和可扩展性。开发者可以根据项目的实际需求选择合适的集成方案,并通过细致的配置和调试,构建出稳定高效的Web应用程序。希望本文能够帮助大家更好地理解和掌握SSH框架的相关知识,为今后的实际应用打下坚实的基础。
1,使用plugin将struts与spring进行整合
2,给action指定代理类:DelegatingActionProxy
3,接收到对该action的请求后,由代理类到spring环境当中去寻找action的实例。从而将action当中所需要的service实例进行注入.
4,需在spring环境中声明action实例
ssh:动态请求处理器
1,使用controller标签注册DelegatingRequestProcessor处理器。
2,不需要在struts-config.xml中再对每一个的action定义type(不需要定义type,即属性无效)
3,接收到对该action的请求后,由处理器自动到spring环境当中去寻找action的实例。从而将action当中所需要的service实例进行注入.
4,需在spring环境中声明action实例
ssh:自动匹配请求处理器
1,使用controller标签注册AutowiringRequestProcessor处理器。
2,在struts-config.xml当中在action元素的type属性中,定义该action类的全名(与普通的struts用法一致)
3,接收到对该action的请求后,由struts得到action的实例,由处理器将该action类当中所有需要的service实例进行自动的注入。
4,不需要在spring环境中声明action实例
在使用Spring的AOP编程时,会用到这几个lib:
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar
Hibernate使用如果lib:
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Arduino和Python的实时歌曲信息液晶显示屏展示系统.zip
- (源码)基于C++和C混合模式的操作系统开发项目.zip
- (源码)基于Arduino的全球天气监控系统.zip
- OpenCVForUnity2.6.0.unitypackage
- (源码)基于SimPy和贝叶斯优化的流程仿真系统.zip
- (源码)基于Java Web的个人信息管理系统.zip
- (源码)基于C++和OTL4的PostgreSQL数据库连接系统.zip
- (源码)基于ESP32和AWS IoT Core的室内温湿度监测系统.zip
- (源码)基于Arduino的I2C协议交通灯模拟系统.zip
- coco.names 文件