zoukankan      html  css  js  c++  java
  • SSH整合方案2

    【案例3】SSH整合_方案2 ** 
    案例描述 
    两个知识点的演示 
    其一,SSH整合的第二个方案 
    其二,Spring+JDBC+Struts2 
    参考代码 
    31) 使用工程spring4 
    32) 修改ssh.xml 
    增加<bean name="loginAction"> 

    <bean id="myDataSource" 
    class="org.apache.commons.dbcp.BasicDataSource"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver"> 
    </property> 
    <property name="url" value="jdbc:mysql:///test"></property> 
    <property name="username" value="root"></property> 
    <property name="password" value="root"></property> 
    <property name="maxActive" value="10"></property> 
    <property name="initialSize" value="2"></property> 
    </bean> 
    <bean id="mySessionFactory" 
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="myDataSource"></property> 
    <property name="mappingResources"> 
    <list> 
    <value>tarena/mapping/User.hbm.xml</value> 
    </list> 
    </property> 
    <property name="hibernateProperties"> 
    <props> 
    <prop key="hibernate.dialect"> 
    org.hibernate.dialect.MySQL5Dialect</prop> 
    <prop key="hibernate.show_sql">true</prop> 
    <prop key="hibernate.format_sql">true</prop> 
    </props> 
    </property> 
    </bean> 
     <bean id="userDao" class="tarena.dao.impl.HibernateUserDAOImpl"> 
    <property name="sessionFactory" ref="mySessionFactory"> 
    </property> 
    </bean> 
    <bean id="userService" class="tarena.service.impl.UserServiceImpl"> 
    <property name="userDao" ref="userDao"></property> 
    </bean> 
    <bean id="loginAction" class="tarena.action.LoginAction"> 
    <property name="userService" ref="userService"></property> 
    </bean> 
    <!-- 声明式事务控制 --> 
    <bean id="txManager" 
    class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="mySessionFactory"> 
    </property> 
    </bean> 
    <tx:advice id="txAdvice" transaction-manager="txManager"> 
    <tx:attributes> 
    <tx:method name="save*" propagation="REQUIRED"/> 
    <tx:method name="update*" propagation="REQUIRED"/> 
    <tx:method name="delete*" propagation="REQUIRED"/> 
    <tx:method name="find*" read-only="true" 
    propagation="NOT_SUPPORTED"/> 
    <tx:method name="*" propagation="REQUIRED"/> 
    </tx:attributes> 
    </tx:advice> 
    <aop:config> 
    <aop:pointcut expression="within(tarena.service..*)" 
    id="servicePointcut"/> 
    <aop:advisor advice-ref="txAdvice" pointcut-ref="servicePointcut"/> 
    </aop:config> 
    </beans> 



    33) 修改struts.xml 
    不方案1相比,此处我们叧要调用Spring容器中管理的bean组件即可 

    <?xml version="1.0" encoding="UTF-8" ?> 
    <!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" 
    "http://struts.apache.org/dtds/struts-2.1.7.dtd"> 
    <struts> 
    <package name="ssh1-demo" extends="struts-default"> 
    <action name="login" class="loginAction"> 
    <result name="success">/ok.jsp</result> 
    <result name="login">/login.jsp</result> 
    </action> 
    </package> 
    </struts> 

    34) 测试(略) 
    如上,两种SSH整合的方案就结束了。 
    此时,我们再提新的需求,老板一句话“丌喜欢Hibernate,用JDBC”, 
    Spring整合JDBC、整合Struts2 
    还好使用Spring框架迚行了解耦,我们叧需要增加实现类JDBCUserDAOImpl,并且修改 
    配置文件ssh.xml即可 
    35) 新建JdbcUserDAOImpl 

    package tarena.dao.impl; 
    import java.util.List; 
    import org.springframework.jdbc.core.support.JdbcDaoSupport; 
    import tarena.dao.UserDAO; 
    import tarena.pojo.User; 
    import tarena.pojo.UserMapper; 
    public class JdbcUserDAOImpl 
    extends JdbcDaoSupport implements UserDAO { 
     public User findByEmail(String email) { 
    String sql = "select * from d_user where email=?"; 
    List<User> list = 
    this.getJdbcTemplate().query( 
    sql, new Object[]{email},new UserMapper()); 
    User user = null; 
    if(!list.isEmpty()){ 
    user = list.get(0); 
    } 
    return user; 
    } 
    } 

    36) 新建UserMapper 

    package tarena.pojo; 
    import java.sql.ResultSet; 
    import java.sql.SQLException; 
    import org.springframework.jdbc.core.RowMapper; 
    public class UserMapper implements RowMapper { 
    private static final String ID = "id"; 
    public Object mapRow(ResultSet rs, int index) 
    throws SQLException { 
    User user = new User(); 
    user.setId(rs.getInt(ID)); 
    user.setPassword(rs.getString("password")); 
    if(rs.getString("email") != null){ 
    user.setEmail(rs.getString("email")); 
    } 
    user.setNickname(rs.getString("nickname")); 
    if(rs.getString("is_email_verify").equals("Y")){ 
    user.setEmailVerify(true); 
    }else{ 
    user.setEmailVerify(false); 
    } 
    user.setEmailVerifyCode(rs.getString("email_verify_code")); 
     user.setLastLoginTime(rs.getLong("last_login_time")); 
    return user; 
    } 
    } 



    37) 修改ssh.xml 

    <?xml version="1.0" encoding="UTF-8"?> 
    <beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-2.5.xsd 
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop-2.5.xsd 
    http://www.springframework.org/schema/tx 
    http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 
    <bean id="myDataSource" 
    class="org.apache.commons.dbcp.BasicDataSource"> 
    <property name="driverClassName" 
    value="com.mysql.jdbc.Driver"></property> 
    <property name="url" value="jdbc:mysql:///test"></property> 
    <property name="username" value="root"></property> 
    <property name="password" value="root"></property> 
    <property name="maxActive" value="10"></property> 
    <property name="initialSize" value="2"></property> 
    </bean> 
    <!--注释掉Hibernate配置的bean SessionFactory--> 
    <!-- 
    <bean id="mySessionFactory" 
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="myDataSource"></property> 
    <property name="mappingResources"> 
    <list> 
    <value>tarena/mapping/User.hbm.xml</value> 
    </list> 
    </property> 
    <property name="hibernateProperties"> 
    <props> 
    <prop key="hibernate.dialect"> 
    org.hibernate.dialect.MySQL5Dialect</prop> 
    <prop key="hibernate.show_sql">true</prop> 
    <prop key="hibernate.format_sql">true</prop> 
    </props> 
    </property> 
    </bean> 
    <bean id="userDao" class="tarena.dao.impl.HibernateUserDAOImpl"> 
    <property name="sessionFactory" 
    ref="mySessionFactory"></property> 
    </bean> 
    <bean id="userService" class="tarena.service.impl.UserServiceImpl"> 
    <property name="userDao" ref="userDao"></property> 
    </bean> 
    --> 
    <bean id="jdbcUserDao" class="tarena.dao.impl.JdbcUserDAOImpl"> 
    <property name="dataSource" ref="myDataSource"></property> 
    </bean> 
    <bean id="userService" class="tarena.service.impl.UserServiceImpl"> 
    <property name="userDao" ref="jdbcUserDao"></property> 
    </bean> 
    <bean id="loginAction" class="tarena.action.LoginAction"> 
    <property name="userService" ref="userService"></property> 
    </bean> 
     <!-- 声明式事务控制 --> 
    <!-- 
    <bean id="txManager" 
    class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" 
    ref="mySessionFactory"></property> 
    </bean> 
    --> 
    <bean id="txManager" 
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
    <property name="dataSource" ref="myDataSource"></property> 
    </bean> 
    <tx:advice id="txAdvice" transaction-manager="txManager"> 
    <tx:attributes> 
    <tx:method name="save*" propagation="REQUIRED"/> 
    <tx:method name="update*" propagation="REQUIRED"/> 
    <tx:method name="delete*" propagation="REQUIRED"/> 
    <tx:method name="find*" read-only="true" 
    propagation="NOT_SUPPORTED"/> 
    <tx:method name="*" propagation="REQUIRED"/> 
    </tx:attributes> 
    </tx:advice> 
    <aop:config> 
    <aop:pointcut expression="within(tarena.service..*)" 
    id="servicePointcut"/> 
    <aop:advisor advice-ref="txAdvice" pointcut-ref="servicePointcut"/> 
    </aop:config> 
    </beans> 



    38) 测试(略) 
    在编写程序的过程中,会调试大量的Exception,使用System.out.println()是一种简便的方法。 
    另外,MyEclipse还提供了调试程序的Debug工具 
    Debug工具演示 
    假设,我们现在想跟踪JdbcUserDAOImpl中的实现方法findByEmail, 
    首先,设置调试断点, 
    在需要跟踪的代码处双击“序号前面”,将出现一个蓝色小点, 
    其次,设置tomcat为debug模式 
    开始调试 
    访问http://localhost:/8080/spring4/login.jsp 
    点击“登录”按钮 
    此时,MyEclipse工具将弹出对话框询问是否打开“Debug”视图,选择“Yes” 
    从“show view”中打开也一样 
     整个Debug视图由如下几部分组成 
    此时,程序停在了这里 
    点击“Run”选项,就有许多快捷键 
     使用说明 
    按键 
    快捷键 
    功能 
    Resume 
    F8 
    表示从当前断点处,继续向下执行,即放弃当前断点,直接向下执行(如果有多个断点,则停在下一个断点处) Step Over 
    F6 
    表示从当前设置断点处的代码向下,一行一行执行 Step Into 
    F5 
    如果当前设置断点代码处,调用了子方法, 
    比如String s = foo.findAll(); 
    当想迚入到该子方法findAll()当中去时,就可以点击F5 
    Step Return 
    F7 
    万一丌小心跳入到别的方法中,该快捷点可以再跳出来,回到上一级 
    一般情冴下,如果设置断点处,有自定义的方法,那么就可以按F5 Step Into跟迚, 
    如果是JDK戒者框架提供的方法,那就按F6,直接执行下一行代码即可。 
    当断点调试程序结束,如果想取消设置的断点,可以在断点的蓝色小点上再双击一下就取消了。 
    也可以打开BreakPoint视图, 
    将checkBox前的对勾去掉即可(如果设置了多个断点时,好用)



  • 相关阅读:
    java语言实现堆排序
    堆排序
    静态分派
    谈mysql优化
    Unity2017.1官方UGUI文档翻译——Canvas
    Unity2017.1官方UGUI文档翻译——Rect Transform
    Unity2017.1官方UGUI文档翻译——Rich Text
    Unity2017.1官方UGUI文档翻译——Auto Layout
    Unity2017.1官方UGUI文档翻译——Animation Integration
    Unity2017.1官方UGUI文档翻译——Interaction Components
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3315282.html
Copyright © 2011-2022 走看看