首页 > 代码库 > SSH六部曲

SSH六部曲

<strong>一共有6步(文章底部附有源码下载地址,刚学完ssh的可以借鉴)</strong>1 写一个Hibernate应用,完成用户的增加    1) User实体    2)UserDao接口        save(User u)    3)UserDaoImpl实现UserDao        save(User u){            //用hibernate api        }        2 让spring注入SessionFactory    1)在上一个应用中导入Spring的jar包        除了基础的6个包,还得导入2个jar包        org.springframework.jdbc-3.0.5.RELEASE.jar        org.springframework.orm-3.0.5.RELEASE.jar        org.springframework.transaction-3.0.5.RELEASE.jar                    2) 增加配置文件beans.xml        <bean id="sessionFactory"            class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">                <property name="configLocation"  value="http://www.mamicode.com/classpath:hibernate.cfg.xml"/>        </bean>                        <bean id="userDao" class="包名.UserDaoImpl">            <property name="sessionFactory" ref="sessionFactory">        </bean>            3) 在测试方法中,获得userDao,然后测试save()                UserDao userDao= (UserDao)cxt.getBean("userDao");            3 添加数据源,并注入到SessionFactory        1) 需要导入2个包            commons-dbcp.jar            commons-pool.jar            注:数据源的第3方实现有非常多,现我们用其中一种,commons-dbcp        2) 配置Datasource    <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">        <property name="driverClassName" value="http://www.mamicode.com/com.mysql.jdbc.Driver"/>        <property name="url" value="http://www.mamicode.com/jdbc:mysql://localhost:3306/spring_db"/>        <property name="username" value="http://www.mamicode.com/root"/>        <property name="password" value="http://www.mamicode.com/123456"/>    </bean>        3)在SessionFactory Bean中注入dataSource        <bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">        <!-- 注入DataSource Bean-->        <property name="dataSource" ref="myDataSource"/>                <property name="mappingResources">            <list>                <value>com/toceansoft/entity/User.hbm.xml</value>            </list>        </property>                <property name="hibernateProperties">            <value>                hibernate.dialect=org.hibernate.dialect.MySQLDialect                hibernate.hbm2ddl.auto=update                hibernate.show_sql=true            </value>        </property>    </bean>        4) 测试结果    4 使用spring提供的HibernateTemplate    1) 在Dao中添加    private HibernateTemplate hibernateTemplate;    public void setSessionFactory(SessionFactory sessionFactory) {        this.hibernateTemplate = new HibernateTemplate(sessionFactory);    }        2)修改方法,改成使用hibernateTemplate        save(o)            hibernateTemplate.save(o);            5 使用spring在业务层切入事务    1)在业务层写一个接口UserService        public void add(User u);    2) 写一个实现类UserServiceImpl实现接口UserService        public void add(User u){}    3)实现类UserServiceImpl提供userDao的get/set方法        4)在beans.xml中配置UserServiceImpl 的Bean,并注入userDao        5)配置事务管理器Bean    <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">        <property name="sessionFactory" ref="sessionFactory"/>    </bean>    6) 配置事务通知    <tx:advice id="txAdvice" transaction-manager="txManager">        <!-- 包括隔离级别,事务传播属性。。。 -->        <tx:attributes>            <tx:method name="add*" propagation="REQUIRED"/>            <tx:method name="*" propagation="SUPPORTS" read-only="true"/>        </tx:attributes>    </tx:advice>    7)配置aop切面    <aop:config>        <aop:pointcut id="serviceMethods"            expression="execution(* com.toceansoft.service.impl.*.*(..))"/>        <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods"/>    </aop:config>    8)测试结果    9)在add方法内抛出异常,再测试观察结果        throw new RuntimeException();        6 整合Spring与Struts    1)在把上面的java 应用变成web应用            --把上面应用Src下的所有东东复制到web应用的src                2)导入struts2开发的基础jar包,还需要一个特殊包        struts-spring-plugin.jar                导入与struts2整合的spring相应的包        org.springframework.web.struts-3.0.5.RELEASE.jar        org.springframework.web-3.0.5.RELEASE.jar            3) 把beans.xml 复制到WEB-INF,并且改名为applicationContext.xml(可选的)        4) 在web.xml中配置spring启动的监听器    <context-param>    <param-name>contextConfigLocation</param-name>    <param-value>/WEB-INF/applicationContext.xml,classpath*:applicationContext2.xml</param-value>    </context-param>    <listener>    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    </listener>        5)在web.xml配置Struts2的启动    <filter>        <filter-name>struts2</filter-name>        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>        <!--  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>-->    </filter>        <filter-mapping>        <filter-name>struts2</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>        6)在Web包下写UserAction,并且提供业务层UserSerivce的set方法        7)在appplicationContext.xml中配置UserAction bean    <bean id="userAction" class="com.toceansoft.web.action.UserAction" scope="prototype">        <property name="userService" ref="userService" />    </bean>    注:scope="prototype"        8) 在struts.xml中配置UserAction    <!-- 跳转到添加产品页面 -->        <action name="User_toAdd" >            <result>/User_add.jsp</result>        </action>                <!-- 添加产品 -->        <!-- 关键点:这里的class设置action bean在spring配置文件中bean的id -->        <action name="User_add" class="userAction" method="add">            <result name="success">/grobal_message.jsp</result>        </action>            9) 写2个页面    User_add.jsp    grobal_message.jsp        10)部署测试

 

SSH六部曲