zoukankan      html  css  js  c++  java
  • 在Netbeans中使用Struts2.0+Spring2.5+Hibernate框架(一)

    Netbeans 6.1中加入了Spring 2.5StrutsHibernate的支持,可以满足现在大部分企业应用SSH框架的开发需求。本文将用一个简单的登陆例子来介绍如何在Netbeans6.1中使用SSH框架进行企业级开发。本节介绍示例的准备工作、OR映射以及相关配置的方法。下一节则介绍页面层和框架整合的关键技术。

    软件需求:

    1、1、JDK1.6
    2、Netbeans 6.1下载并安装Struts 2.0插件Hibernate 3.5支持以及库文件的插件
    3、MySQL 5数据库及JDBC驱动
    4、Struts+Spring整合方案库  JDBC驱动和整合库在这里

    实验步骤:

    1、1、MySQL中建立数据库sshdemo,执行以下脚本:
    SET FOREIGN_KEY_CHECKS=0;
    -- ----------------------------
    -- Table structure for user
    -- ----------------------------
    CREATE TABLE `user` (
     `userId` bigint(20) NOT NULL auto_increment,
     `userName` varchar(20) NOT NULL,
     `password` varchar(30) NOT NULL,
     PRIMARY KEY (`userId`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

    -- ----------------------------
    -- Records
    -- ----------------------------
    INSERT INTO `user` VALUES ('1', 'mg', '123');

    2、2、Netbeans6.1中建立Web工程,在选择框架时选择Spring Web MVC2.5Struts2.0Hibernate,命名为SSHDemo,如下图所示:

     

    点击工程右键-属性-库-添加Jar文件,加入ssh_lib.zip包中的两个包。

    3、3、在源包中新建包podaoserviceaction四个包,分别用来放置ORM映射、数据库操作、业务逻辑以及StrutsAction

    4、4、建立Model,在po包中新建类User,代码如下:

    public class User {
       private String name;
       private long id;
       private String password;
    }

    单击右键,选择“重构”-“封装字段”,选择所有字段进行封装,生成getset方法。

    5、5、建立Model和数据库的映射。生成在源包中右键单击po包,新建-其他-Hibernate-Hibernate Configuration File,如下图所示:

     

    点击下一步,命名为hibernate1.cfg,点击下一步,在database connection中把下拉框拉到最下面,点击“新建数据库连接”,如下图所示:

     

    注意用户名和密码可以自己指定。最后点击完成,在源包的缺省包中就会生成hibernate1.cfg.xmlHibernate配置文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
     <session-factory name="session1">
       <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
       <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
       <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/sshdemo</property>
       <property name="hibernate.connection.username">root</property>
       <property name="hibernate.connection.password">root</property>
     </session-factory>
    </hibernate-configuration>

    po包中点击右键,选择新建-其他-Hibernate-Hibernate Mapping File,命名为user.hbm,如下配置:

     

    点击完成,生成user.hbm.xml,加入映射关系如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
       <class dynamic-insert="false" dynamic-update="false" mutable="true" name="po.User" optimistic-lock="version" polymorphism="implicit" select-before-update="false" table="user">
           <id column="userId" name="id">
               <generator class="identity"/>
           </id>
           <property column="userName" name="name" type="string"/>
           <property column="admin" name="admin" type="integer"/>
           <property column="password" name="password" type="string"/>
       </class>
    </hibernate-mapping>

    6、6、Spring IoC容器中定义HibernateSessionFactory。打开Web- WEB-INF – applicationContext.xml,首先加入数据源的定义:

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
          <!--指定连接数据库的驱动-->
           <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
          <!--指定连接数据库的URL -->
           <property name="url" value="jdbc:mysql://localhost:3306/sshdemo"/>
          <!--指定连接数据库的用户名-->
           <property name="username" value="root"/>
          <!--指定连接数据库的密码-->
           <property name="password" value="root"/>
       
    </bean>

      然后加入HibernateSessionFactory的定义:
        <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
           <property name="dataSource" ref="dataSource"/>
           <property name="mappingResources">
               <list>
                   <value>po/user.hbm.xml</value>
               </list>
           </property>
           <property name="hibernateProperties">
               <value>hibernate.dialect=org.hibernate.dialect.MySQLDialect</value>
           </property>
       </bean>

    Spring的配置文件有强大的提示功能:
       

    7、7、建立Dao接口及实现。在dao包中建立接口UserDao,代码如下:

    public interface UserDao {
       void save(User user) throws Exception;
       User getUser(long userId);
       User getUser(String userName);
    }

    建立实现类UserDaoImp,代码如下:

    package dao;
    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
    import po.User;

    /**
     *
     * @author Administrator
     */

    public class UserDaoImpl extends HibernateDaoSupport implements UserDao{
       public void save(User user) throws Exception
       {
           try
           {
               getHibernateTemplate().save(user);
           }
           catch(Exception err)
           {
               throw err;
           }

       }   

       public User getUser(long userId)
       {
           return (User)getHibernateTemplate().get(User.class, userId);
       } 

       public User getUser(String userName) {
           return (User)getHibernateTemplate().find("from User as u where u.name = ?", userName).get(0);
       }

    }

    该类继承于org.springframework.orm.hibernate3.support.HibernateDaoSupport,以方便地使用getHibernateTemplate()获得Hibernate支持。如getUser方法,可以用getHibernateTemplate()方法获得工厂对象sessionFactory,调用find方法可以通过HQL语句来查找对象,而不必再编写复杂的SQL语句。对实体的其他操作入插入操作则只需调用save方法。由于Dao类必须调用sessionFactory,因此必须通过Spring IoC容器为Dao类注入sessionFactory。在applicationContext.xml中添加以下配置:

    <bean id="userDao" class="dao.UserDaoImpl">
           <property name="sessionFactory">
               <ref bean="sessionFactory"></ref>
           </property>
       
    </bean> 
    至此,OR映射工作完成。下一节将介绍页面层技术,包括国际化方案。 

  • 相关阅读:
    (BFS 二叉树) leetcode 515. Find Largest Value in Each Tree Row
    (二叉树 BFS) leetcode513. Find Bottom Left Tree Value
    (二叉树 BFS DFS) leetcode 104. Maximum Depth of Binary Tree
    (二叉树 BFS DFS) leetcode 111. Minimum Depth of Binary Tree
    (BFS) leetcode 690. Employee Importance
    (BFS/DFS) leetcode 200. Number of Islands
    (最长回文子串 线性DP) 51nod 1088 最长回文子串
    (链表 importance) leetcode 2. Add Two Numbers
    (链表 set) leetcode 817. Linked List Components
    (链表 双指针) leetcode 142. Linked List Cycle II
  • 原文地址:https://www.cnblogs.com/hannover/p/1637678.html
Copyright © 2011-2022 走看看