您的位置:首页 > 编程语言 > Java开发

Spring+struts+hibernate 集成方案

2011-11-16 22:00 323 查看

Spring+struts集成方案(一)

u 配置struts框架
1.拷贝struts的jar包到项目/WEB-INF/lib
2.拷贝struts-config.xml,web.xml配置文件到/WEB-INF中
3.拷贝资源文件到类路径下/WEB-INF/classes
u 集成Spring框架
1.拷贝spring.jar到项目/WEB-INF/lib
2.拷贝log4j.jar,common-logging.jar到项目/WEB-INF/lib
3.拷贝aop支持包spring_install\lib\aspectj\*.jar
4.拷贝spring配置文件及log4j的属性文件到src目录下
5.集成消除版本冲突的包,除去低版本的包

6.拷贝struts.jar到lib目录下

u 在web.xml配置监听器

<!-- spring Bean上下文监听器使用以下context-param获得spring配置文件的路径集合 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext*.xml</param-value>
</context-param>
<!--spring Bean上下文监听器,用于加载beanfactory实例到ServletContext -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

u 在spring中配置数据源及事务的管理特性

<!-- 配置数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/info</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>java</value>
</property>
</bean>

<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref local="dataSource"/>
</property>
</bean>
<!-- 配置事务的管理特性(隔离级别,传播特性) -->
<tx:advice id="transAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="find*" read-only="true"/>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>

<!-- 配置切面,把事务 管理advice和切入点织入到一起-->
<aop:config>
<aop:advisor advice-ref="transAdvice"
pointcut ="execution(* com.xasxt.manager..*.*(..))"/>
</aop:config>

u 在action中做如下处理

//耦和性小,第一种集成,它的实现类继承自JdbcDaoSupport
BeanFactory bf = WebApplicationContextUtils.getRequiredWebApplicationContext(
request.getSession().getServletContext());
RegManager rm = (RegManager) bf.getBean("regManager");
rm.add(reg);

Spring+struts集成方案(二)

u 在一种方案的基础上做如下操作:

6.拷贝spring-webmvc-struts.jar到lib目录下
7.在spring配置文件中配置action,并把属性id改为name,值使用struts action配置中的path属性
8.在struts-config.xml配置文件中把请求Action的type属性值改为:
org.springframework.web.struts.DelegatingActionProxy
也就是由以上代理获得spring创建的Action的引用,把请求转发给spring
框架所创建的Action,从而可以利用Spring的ioc

具体操作如下:

Ø 重新建立一个spring配置文件,专门放action的配置

<bean name="/reg" class="com.xasxt.web.struts.action.RegAction">
<property name="regManager">
<ref bean="regManager"/>
</property>
</bean>

Ø 修改struts配置文件,用代理模式

<action-mappings>
<action path="/reg"
type="org.springframework.web.struts.DelegatingActionProxy"
name="regForm"
parameter="method"
validate="false"
>
<forward name="success" path="/success.jsp"></forward>
</action>

Ø 在action中,用接口作为属性,注入spring容器中。

它的实现类同样继承自JdbcDaoSupport

RegManager regManager = null;

public RegManager getRegManager() {
return regManager;
}

public void setRegManager(RegManager regManager) {
this.regManager = regManager;
}

在调用方法时:直接RegForm rf = (RegForm) form;

Reg reg = new Reg();

BeanUtils.copyProperties(reg, rf);
regManager.add(reg);

Spring+struts+hibernate集成方案

u 同样在以上的基础上做如下操作:

集成hibernate框架

1. 拷贝hibernate.jar核心包到项目/WEB-INF/lib中

2. 拷贝hibernate_INSTALL\lib\*.jar到项目/WEB-INF/lib中

3. 创建hibernate.cfg.xml配置文件配置数据库连接,创建到类路径下

4. 集成清除版本冲突的jar包

5. 配置spring配置文件中事务

6. 在web.xml文件配置CharacterEncodingFilter及OpenSessionInViewFilter

<!-- 配置OpenSessionInView过滤器 -->

<filter>

<filter-name>OpenSessionInViewFilter</filter-name>

<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>OpenSessionInViewFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

<!-- 配置字符集过滤器 -->

<filter>

<filter-name>CharacterEncodingFilter</filter-name>

<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>CharacterEncodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

u 现在可以把数据源配置到hibernate中,在spring中配置sessionFactory工厂

<!-- 配置SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>

<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>

这个实现类继承自HibernateDaoSupport
<bean id="regManager" class="com.xasxt.manager.impl.RegManagerImpl">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>

u 增删改查的代码通过框架的集成,最后结果如下,很简单。

public void add(Reg reg) {
getHibernateTemplate().save(reg);
}
public void del(int id) {
getHibernateTemplate().delete(findById(id));
}
public List<Reg> findAll() {
return getHibernateTemplate().find("from Reg");

}
public Reg findById(int id) {
return (Reg) getHibernateTemplate().load(Reg.class, id);
}
public void update(Reg reg) {
getHibernateTemplate().update(reg);
}

u 注册器的实现

public class DateConvert implements Converter {

public Object convert(Class c, Object value) {
if(value instanceof Date){
return value;
}
Date d = null;
if(value instanceof String){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
d = sdf.parse(value.toString());
} catch (ParseException e) {
e.printStackTrace();
}
}
return d;
}

}

Ø 在写一个插件,继承自PlugIn

ConvertUtils.register(new DateConvert(), Date.class);

Ø 在struts配置文件中注册

<plug-in className="com.xasxt.common.plugIn.RegPlugIn"></plug-in>

Spring+dwr集成方案

u 配置dwr框架

l 拷贝dwr.jar文件及dwr.xml到工程目录下。

<allow>
<create creator="spring" javascript="Intro">
<param name="beanName" value="hello"/>
</create>
</allow>

l
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: