SSH整合配置关键点解析
"SSH整合配置注意点" SSH整合是将Spring、Struts和Hibernate三个开源框架集成在一起,以实现更高效、灵活的Web应用开发。在进行SSH整合时,需要注意以下关键点: 1) 依赖冲突处理:SSH整合时可能会遇到类库版本不兼容的问题。例如,在使用Spring 2.0与AOP库时,可能需要移除或更新特定版本的asm-2.2.3.jar,以避免版本冲突导致的问题。确保所有依赖库都是兼容的,并且遵循最佳实践,如使用Maven或Gradle管理依赖,可以避免这类问题。 2) Spring的依赖注入:在SSH整合中,应避免直接实例化DAO对象,如`new UserDAO()`。这样做可能导致对象没有被Spring容器管理,从而在调用方法时抛出`NullPointerException`。正确做法是使用setter方法进行依赖注入,并在Spring配置文件中定义对应的bean,如`<bean id="userManager" class="com.usc.manager.userManagerImpl"> <property name="dao" ref="UserDAO"/> </bean>`。这样,Spring会自动管理对象的生命周期和依赖关系。 3) Struts的Cancel按钮处理:当在Struts应用中使用Cancel按钮时,如果没有正确处理,可能会引发`org.apache.struts.action.InvalidCancelException`异常。解决这个问题通常有两种方式:一是删除Cancel按钮,二是将Cancel按钮的类型改为reset,这将清除表单数据,但不会提交请求。确保在Struts配置文件中为每个action设置cancellable属性,如`<action ... cancellable="true">`。 4) Spring事务管理:在整合Spring时,需要配置事务管理器,如SessionFactory,以便Spring能够管理Hibernate的事务。在Spring配置文件中定义`sessionFactory` bean,并在需要的地方声明事务边界。例如: ```xml <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> <!-- Hibernate配置 --> </bean> <tx:annotation-driven transaction-manager="transactionManager" /> <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> ``` 5) Struts与Spring的集成:在Struts的配置文件(struts-config.xml)中,需要将action的type属性设置为Spring的代理类,如`type="org.springframework.web.struts.DelegatingActionProxy"`。这样,Struts会委托给Spring来创建和管理action实例。 6) Web应用上下文配置:在web.xml中,需要配置Spring的应用上下文加载路径,例如: ```xml <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:applicationContext-*.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> ``` 这样,Spring会自动加载所有的`applicationContext-*.xml`配置文件。 以上就是SSH整合配置的一些关键注意点,它们涵盖了依赖管理、依赖注入、用户交互逻辑、事务处理以及框架间的集成。理解并正确实施这些要点,可以确保SSH整合的顺利进行。
2)由于本程序要用到DAO,在用户管理类中我一开始使用
UserDAO dao = new UserDAO();
public void addUser(User user)
{
dao.save(user);
}
后面一直会报一个空指针异常的错误(java.lang.NullPointerException),后来也是在网上找了好久,才发现一个我不小心的地方,就是我已经使用了Spring进行依赖注入,不过上面的语句根本就没有注入,所以会报空指针异常的错误,改为下面的语句,使用Spring进行注入,也就是使用set方法就行注入即可(初学者经常犯的错误吧)。
private UserDAO dao;
public void setDao(UserDAO dao)
{
this.dao = dao;
}
public void addUser(User user)
{
dao.save(user);
}
<bean id="userManager" class="com.usc.manager.userManagerImpl">
<property name="dao" ref="UserDAO"/>
</bean>
3)用Struts生成jsp文件的时候,会出现一个Cancel按钮,如果不处理的话,单击会报org.apache.struts.action.InvalidCancelException异常,网上说的话:Cancel按钮的机制和submit机制是一样的,没有处理,如果要解决的话,在Struts配置文件中的每个action里面加上cancellable="true",虽然这样能够解决异常,但是治标不治本,此时如果点击Cancel按钮会当一个submit按钮来进行提交,我觉得真有点违背常理,所以我的解决方案就是1.删除cancel按钮,2.修改为reset按钮(我觉得是最好的解决方案)
下载后可阅读完整内容,剩余3页未读,立即下载
- 粉丝: 565
- 资源: 14
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 51单片机驱动DS1302时钟与LCD1602液晶屏万年历设计
- React 0.14.6版本源码分析与组件实践
- ChatGPT技术解读与应用分析白皮书
- 米-10直升机3D模型图纸下载-3DM格式
- Tsd Music Box v3.02:全面技术项目源码资源包
- 图像隐写技术:小波变换与SVD数字水印的Matlab实现
- PHP图片上传类源码教程及资源下载
- 掌握图像压缩技术:Matlab实现奇异值分解SVD
- Matlab万用表识别数字仪表教程及源码分享
- 三栏科技博客WordPress模板及丰富技术项目源码资源下载
- 【Matlab】图像隐写技术的改进LSB方法源码教程
- 响应式网站模板系列:右侧多级滑动式HTML5模板
- POCS算法超分辨率图像重建Matlab源码教程
- 基于Proteus的51单片机PWM波频率与占空比调整
- 易捷域名查询系统源码分享与学习交流平台
- 图像隐写术:Matlab实现SVD数字水印技术及其源码