Struts Spring Hibernate整合实践

1.基本概念:

·   StrutsStruts是一个基于Sun J2EE平台的MVC框架,主要是采用ServletJSP技术来

实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受

关注。StrutsServletJSP、自定义标签和信息资源(message resources)整合到一个统

一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时

间,所以说Struts是一个非常不错的应用框架。

·   Spring:Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理

业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基

础是基于使用JavaBean属性的Inversion of Control容器。然而,这仅仅是完整图景中的

一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二

的。Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率

并且减少了可能的错误。Spring的数据访问架构还集成了Hibernate和其他O/R mapping

决方案。Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA

JDBC事务提供一个一致的编程模型。Spring提供了一个用标准Java语言编写的AOP

架,它给POJOs提供了声明式的事务管理和其他企业事务--如果你需要--还能实现你自己的

aspects。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB

相关的关键服务。Spring还提供了可以和IoC容器集成的强大而灵活的MVC Web框架。

·   Hibernate:Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的

对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate

以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP

Web应用中使用,最具革命意义的是,Hibernate可以在应用EJBJ2EE架构中取代CMP,完

成数据持久化的重任。

2.整合:

1)SpringStruts整合

主要有3种方式:

通过Spring的ActionSupport类、通过Spring的DelegatingRequestProcessor类、通过Spring的DelegatingActionProxy类。

使用ActionSupport虽然很方便,但是Struts的Action与Spring耦合在一起,并且Struts的Action不在Spring的控制之中,这样如果更换别的框架,或想使用Spring的AOP都是比较困难的,而且如果是多个动作放在一个Action中,则这种方式就无能为力了。

使用DelegatingRequestProcessor虽然解决了第一种带来的问题,但是还是有缺点的,那就是开发人员可以自己定义RequestProcessor,这样如果没有使用Struts默认的RequestProcessor,则需要手工来整合Spring和Struts了。

三者中,使用Spring的DelegatingActionProxy类来整合Spring和Struts的方式最为强大和灵活。第一部分的例子中我们就是用的DelegatingActionProxy类来整合。 

我们结合上面的例子分析一下:

首先Struts中加载Spring context,需要在struts-config.xml文件中加入如下部分:

<plug-in

className="org.springframework.web.struts.ContextLoaderPlugIn">

<set-property property="contextConfigLocation"

value="/WEB-INF/applicationContext.xml" />

</plug-in>

 

 

 

 

 

 

 

 


通过Struts的plug-in在Struts和Spring之间提供了良好的结合点。通过plug-in我们实现了Spring context的加载,不过仅仅加载Spring context并没有什么实际的意义,还应该经过配置将Struts的Action交给Spring容器进行管理。

如下部分:

 

<action-mappings>

<action attribute="loginForm" input="/login.jsp"

name="loginForm" scope="request"

path="/login" validate="true"

type="org.springframework.web.struts.DelegatingActionProxy">

</action>

</action-mappings>

 

 

 

 

 

 

 

 


form bean这个节点上与传统的Struts配置没有什么区别,而在Action上面则发生了变化。在传统的action节点上type属性写入action类的完整类名,而和Spring结合后在这点上是使用了Spring提供的DelegatingActionProxy作为actiontype属性,DelegatingActionProxy同样是org.apache.struts.action.Action的一个子类,它将把调用请求转交给真正的Action实现。通过这样的方式,Spring获得了Action实例的管理权,它将对Action进行调度,并为Struts提供所需的Action实例。这样,就可以将Action看作是Spring的一个bean,它就可以享受Spring的所有服务,如依赖注入、实例管理、事务管理等。
    在applicationContext.xml中相应的配置如下的节点:

<bean name="/login" class="com.test.struts.action.LoginAction" singleton="false">

<property name="userDao">

<ref bean="userDao"/>

</property>

</bean>

 

 

 

 

 

 

 

 

 


最后这个bean的配置是关键,这个名为“/login”的bean与Struts中的
<action path="/login" ……>
……
</action>

节点相对应,这样,Spring Bean Name与Struts Action Path相关联,当Struts加载对应的Action时,DelegatingActionProxy就根据传入的path属性,在Spring Context寻找对应bean,并将其实例返回给Struts。与此同时,还可以看到,"/login" bean 中包含了一个userDAO 引用,Spring 在运行期将根据配置为其提供userDAO 实例,以及围绕userDAO 的事务管理服务。这样一来,对于Struts 开发而言,我们既可以延续Struts 的开发流程,也可以享受Spring 提供的事务管
理服务。而bean 的另外一个属性singleton="false",指明了Action 的实例获取方式为每次重新创建。这也解决了Struts中令人诟病的线程安全问题。
    至此,SS组合已经将Struts MVC以及Spring中的Bean管理、事务管理融为一体。

2)SpringHibernate整合

Spring中对Hibernate的支持是非常强大的,从上面的例子就看得出来,我们直接来分析例子。

首先需要配置数据源,通常我们有两种方式获得Connection,一是自己编写代码获得连接,二是从JNDI环境中得到DataSource,然后产生一个Connection,这里我们不做论述。无论怎样,既然是spring下面的对象,就应该注册到配置文件中。例子中我们需要一个连接mysql下面一个叫做meonline的数据库,手动方式的配置是:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

<property name="driverClassName">

<value>com.mysql.jdbc.Driver</value>

</property>

 

<property name="url">

<

以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值