总结一下整合Struts2+Hibernate3+Spring4开发Java Web应用过程

本文档总结了使用Struts2作为控制器、Hibernate3作为持久层框架、Spring4作为服务层管理的Java Web应用程序的整合过程。主要配置包括Struts2的过滤器设置,通过<filter>和<filter-mapping>标签来指定Struts2的核心过滤器及其参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-
--------------------------------------------------------------------------------------------------------------------------------------------------------------
开发实例:用户管理系统
实现功能:系统与本地数据库连接,支持在网页上用户的登陆,注册,与查询用户信息。
开发流程
SSH整合开发--用户管理系统
 --0.环境的搭建
  ---a.spring和hibernate的整合
  ---b.spring和Struts的整合
  ---c.配置文件的配置
      --1.数据库的实现
      ---a.建表:id,name,password,type
      --2.Hibernate持久层的设计
      ---a.编写持久化类
      ---b.编写映射文件
      --3.Dao层设计
      ---a.编写Dao层接口
      ---b.编写Dao层接口实现类
      --4.业务逻辑层的设计
      ---a.编写service层接口
      ---b.编写service层接口的实现类
      ---c.配置spring的配置文件,为service的实现类注入dao组件
      --5.完成用户登录的设计--表现层Struts2
      ---a.编写用户登录action类
      ---b.编写用户登录login界面jsp文件
      ---c.配置spring配置文件和web.xml和 struts.xml
----------------------------------------------------------------------------------------------------------------------------------------------------------------
开发中遇到的问题

Q1:Spring和Hibernate整合后当通过Spring中的this.getHibernateTemplate.find()调用find方法时,出现错误
user is not mapped [from user]
解决:
原错误代码:
public  List<User> findAll() {
           String hql = "from user";
            return (List<User>)this.getHibernateTemplate().find( hql);
     }
表名是user,会出现user is not mapped [from user]这个语法错误
原因:Hibernate是对类查询的,原hql语句“from user”中user是数据表,
而持久化类是User,所以将hql语句改成“from User”即可解决错误。
----------------------------------------------------------------------------------------
Q2:Sturts层Action类中的属性service是Serivce层中的对象(通过Spring注入Action类),但当Action被实例化调用该属性service时发现为null,没有注入成功.
解决:
a.有可能在struts.xml中配置action时class值设了action类名,没有用Spring中Actionbean的id值作class值(即是不通过Spring容器拿到Action实例,而是自己用类名实例化);
b.有可能在struts.xml配置文件中没有设置属性
<constant name="struts.objectFactory" value="spring">中value没有设值为Spring的值
----------------------------------------------------------------------------------------
Q3:错误Caused by: Cannot locate the chosen ObjectFactory implementation: spring - [unknown location]
解决:
1.添加struts2-spring-plugin jar包 
2.添加下述配置文件xml

<!-- Struts2配置 --> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> <init-param> <param-name>config</param-name> <param-value>struts-default.xml,struts-plugin.xml,struts.xml</param-value> </init-param> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

----------------------------------------------------------------------------------------
Q4:Spring整合Hibernate出错,异常 'sessionFactory' or 'hibernateTemplate' is required的解决方法
解决:第一步:在继承HibernateDaoSupport类的DaoImp类中中增加如下方法,使用@Autowired: 
Java代码  
  1. @Autowired  
  2.     public void setSessionFactoryOverride(SessionFactory sessionFactory)  
  3.     {  
  4.   
  5.         super.setSessionFactory(sessionFactory);  
  6.     }  
第二步:在spring配置文件中配置DaoImp类的bean元素时加入设值注入。
<property name"sessionFactory">
                <ref bean ="sessionFactory" />
  </property>
----------------------------------------------------------------------------------------
Q5报错java.lang.NoClassDefFoundError: javax/transaction/TransactionManager
 解决: google了一下,原来是少了hibernate包中的jta.jar。
----------------------------------------------------------------------------------------
Q6:报错Caused by: java.lang.NoClassDefFoundError:javax/persistence/EntityListeners
解决:这个是hibernate3.6版本的;所以还缺少JPA jar 包;还需要导入jar包。可以在Hibernate 3.6 distro: hibernate-distribution-3.6.0.Final/lib/jpa/hibernate-jpa-2.0-api-1.0.0.Final.jar找到之后导入就可以了。
----------------------------------------------------------------------------------------
Q7:Struts2中出现  严重: Dispatcher initialization failed错误
解决:拦截器初始化失败,一般是缺少了struts2相关的jar包





     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值