SSH框架的整合---xml方式

来源:互联网 发布:mac打开文件夹命令 编辑:程序博客网 时间:2024/05/30 02:25

SSH框架的整合—xml方式

一,导入jar包

Struts2 框架需要 jar 包

Asm 是关于字节码操作
Commons-fileupload 关于文件上传
Commons-io 关于 io 流操作工具
Commons-lang 也是一个工具,包含了关于数据与字符串操作
Freemaker 标签库模板文件
Javassist 它也是关于字节码操作,动态代理可以使用它实现(类似于 cglib)
Log4j 关于日志
Ognl 关于 ognl 表达式
Struts2-core xwork-cor struts2 框架底层是使用 xwork


Struts2 与 spring 整合还需要这个包
如果需要使用 struts2 提供的 json 处理


Hibernate 框架需要的 jar 包


Antlr 语法解析包
Dom4j 解析 xml
Geronimo-jta apache geronimo它是一个开源javaEE服务器 Geronimo-jta是这个开源项目提
供 jar 包,在 hibernate 中是关于 jta 事务相关
Hibernate-commoins-annotations
这个包是我们在 hibernate 下来使用 jpa 相关的注解,这样它不依赖于 hibernate
Hibernate-core 开发 hibernate 必须
Hibernate-jpa 它是关于 hibernate 对 jpa 的支持
Jandex 用于索引 annotation
Javassist 关于字节码操作(注意:strtus2 中也引入这个 jar 包了,用到是对比一下版本,一般情况下选择高的版本,根据自己需求)
Jboss-logging 它是关于 jboss 统一日志处理
如果使用关于 jpa 相关操作需要导入 jpa 依赖 jar 包

C3p0 连接池

还需要数据库相关的驱动 jar 包

还需要静态日志处理

Spring 框架需要的 jar 包


AOP 开发


Spring jdbc

Spring 事务管理需要 tx
Spring 整合 hibernate


Spring 整合 web 开发




 . Spring 整合 hibernate(基本原理:就是由 spring 来管理 hibernate 的 SessionFactory)

<!-- 配置连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>

<!-- 加载properties文件 -->
<context:property-placeholder location="classpath:db.properties" /> 
(properties文件配置如下)
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///sshtest
jdbc.username=root
jdbc.password=***

创建 LocalSessionFactoryBean 来完成 spring 管理 hibernate 中的 SessionFactory

<bean id="sessionFactory"
class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<!-- 加载连接池 -->
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<!-- <props> <prop key="hibernate.show_sql">true</prop>
  <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
<prop key="hibernate.hbm2ddl.auto">update</prop>
  <prop key="hibernate.format_sql">true</prop> 
</props> -->
<!-- 上述的配置可以简写成以下 -->
<value>
hibernate.show_sql=true
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.hbm2ddl.auto=update
hibernate.format_sql=true
</value>
</property>


<!-- 加载hibernate的Xxx.hbm.xml配置文件 -->
<property name="mappingResources">
<list>
<value>cn/itcast/domain/User.hbm.xml</value>
</list>
</property>
</bean>



<!-- 声明dao -->
<bean id="userDao" class="cn.itcast.dao.UserDAOImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>


<!-- 声明service -->
<bean id="userService" class="cn.itcast.service.UserServiceImpl">
<property name="userDao" ref="userDao" />
</bean>


<!-- 声明式事务管理 -->
<!-- 事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> 
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="find*" read-only="true"/>
<tx:method name="add"/>
<tx:method name="update"/>
<tx:method name="del"/>
</tx:attributes>
</tx:advice>
<!-- 切面 -->
<aop:config>
<aop:pointcut expression="execution(* cn.itcast.service.*..*(..))" id="mypointcut"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="mypointcut"/>
</aop:config>

到此spring整合hibernate已经完成,下面整合struts2,其实说白了,在struts2框架中默认是使用
strtus2 自己 bean 初化操作,而我们要使用spring整合struts2就是要将struts2创建bean的权利交给spring来管理,由spring来帮助struts2来创建bean

spring 整合 struts2 框架必须导入一个 jar 包
struts2-spring-plugin.jar

当我们导入这个包的时候,bean的创建就由spring来管理

注意:在 applicationContext.xml 文件中配置

<!-- 配置action -->
<bean id="userAction" class="cn.itcast.action.UserAction" scope="prototype">
<property name="userService" ref="userService"/>
</bean>

在 action 类中提供IUserService的set方法,用来注入
private IUserService userService;
    public void setUserService(IUserService userService){
this.userService = userService;
}

在 struts.xml 文件中的配置
<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">


<struts>


<constant name="struts.objectFactory.spring.autoWire" value="type"/>


<package name="default" namespace="/" extends="struts-default">


<action name="user_*" class="UserAction"
method="{1}">
<result name="success">/success.jsp</result>
</action>
</package>

</struts>



注意:struts.xml 配置文件中,class="UserAction",UserAction必须与ApplicationContext.xml中的id名称一致,
注意:applicationContext.xml配置文件中,

<bean id="userAction" class="cn.itcast.action.UserAction" scope="prototype">
<property name="userService" ref="userService"/>
</bean>
id对应你的action类,name对应action类中你要注入的servicr,ref对应的是上面的声明service的id

到此SSH框架整合完毕,



声明:如果此文章能帮助到你,我很荣幸,如果给您带来不变请谅解



原创粉丝点击