• 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="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="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/spring_db"/>
            <property name="username" value="root"/>
            <property name="password" value="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)部署测试
  • 相关阅读:
    心理学安全威胁
    设计模式是在运用构造定律
    分形理论
    构造定律
    [SOA]REST与SOA两种架构的异同比较
    加法是自然之道
    ES : 软件工程学的复杂度理论及物理学解释
    软件架构的灵活设计
    软件复杂度与结构:(影响复杂度的因素)
    socket 的通信过程
  • 原文地址:https://www.cnblogs.com/dreamzhiya/p/3992194.html
Copyright © 2020-2023  润新知