天天看点

SSH总结

其实在这个三个框架中最为重量级的就是Spring,它将Struts的action当作bean整合,将hibernate的cfg,hbm整合,还有事务管理,下面一一整合到项目当中去,

例如:创建个用户管理系统(暂时只提供查询功能和删除功能)

一丶先设计Dao层

用户:User类

private String username;
private String password;
private String realname;
           

生成hibearnate-mapping文件

<hibernate-mapping>
    <class name="bean.User" table="user">

         <id name="id" type="java.lang.Integer">
        <column name="id" ></column>
         <generator class="native" />
        </id>

        <property name="username" type="java.lang.String">
        <column name="username"></column>
        </property>

        <property name="password" type="java.lang.String">
        <column name="password"></column>
        </property>

        <property name="realname" type="java.lang.String">
        <column name="realname"></column>
        </property>

        </class>

</hibernate-mapping>
           

设计Dao接口

1.查询单个用户

2.查询全部用户

3.删除单个用户

4.删除全部用户

整合hibernate和spring:

思路分析:

在Dao层用到SessionFactory,需要在spring文件dao层依赖注入sessionfactory

而sessionFactory需要datasource,cfg,hbm

具体实施:

1.在applicationContext.xml

因为读取Property文件所以加入该行代码

<context:property-placeholder location="classpath:db.properties"/>
           
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>

<property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
<property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>

</bean>
           
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocations" value="classpath:hibernate.cfg.xml"></property>
<property name="mappingResources">
<list>
<value>bean/User.hbm.xml</value>
</list>
</property>
</bean>
           

——————Dao层设计完毕——————–

二丶设计Service层

分析

无非就是事务属性的增强

首先定义一个事务属性

然而需要个事务管理器

所以

首先定义事务管理器,然后,定义事务属性,最后,aop操作。

<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
           
<tx:advice transaction-manager="transactionManager" id="txadvice1">
<tx:attributes>
<tx:method name="get*" read-only="true"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
           
<aop:config>

<aop:pointcut expression="execution (*  service.*.*(..))" id="pointcut1"/>

<aop:advisor advice-ref="txadvice1" pointcut-ref="pointcut1"/>

</aop:config>
           

—–Service配置完毕——

三丶配置Controll层

思路:

Controll的配置无非就是配置Action,配置Bean,在Struts配置Action

我们之前说过Spring就是管理Action 所以将Action的位置交友spring

然后将struts与spring建立链接就行了。

设计:

<bean id="useraction" class="action.UserAction" scope="prototype">

            <property name="userservice" ref="userservice"></property>

    </bean>
           
<struts>
 <constant name="struts.enable.DynamicMethodInvocation" value="false" />

    <constant name="struts.devMode" value="true" /> 

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

<action name="userAction_*" class="useraction" method="{1}">
<result name="list">/show.jsp</result>
<result name="delete" type="redirectAction">/userAction_findAll.action</result>
</action>
</package>

</struts>
           

继续阅读