当前位置: 首页 > news >正文

在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映射工作完成。下一节将介绍页面层技术,包括国际化方案。 

相关文章:

  • 2003活动目录之域重命名
  • 小黑颠覆之作 ThinkPad Edge 13真机试用
  • 年前要做的事
  • alskdfj
  • 思科中文技术社区
  • tcp wrapper网络服务的搭建和配置
  • Extjs写的后台框架
  • ‘打不开’的文件夹
  • Cisco ap配置手册
  • 软件包管理
  • 我眼里的Exchange 2010 之:1—DAG
  • 现在的小孩,怎么得了!!!!
  • WAP 站点 必读
  • 网管试题合集
  • .NET学习全景图
  • Elasticsearch 参考指南(升级前重新索引)
  • express + mock 让前后台并行开发
  • js中forEach回调同异步问题
  • Leetcode 27 Remove Element
  • Magento 1.x 中文订单打印乱码
  • PHP CLI应用的调试原理
  • React Native移动开发实战-3-实现页面间的数据传递
  • Redis 中的布隆过滤器
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • windows下使用nginx调试简介
  • 搭建gitbook 和 访问权限认证
  • 给github项目添加CI badge
  • 聊聊sentinel的DegradeSlot
  • 你不可错过的前端面试题(一)
  • 什么是Javascript函数节流?
  • 实现简单的正则表达式引擎
  • 我看到的前端
  • raise 与 raise ... from 的区别
  • 整理一些计算机基础知识!
  • ​ssh免密码登录设置及问题总结
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • #大学#套接字
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • $.ajax()
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (C++17) std算法之执行策略 execution
  • (C语言)fgets与fputs函数详解
  • (TOJ2804)Even? Odd?
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (三)elasticsearch 源码之启动流程分析
  • (数据结构)顺序表的定义
  • (五)关系数据库标准语言SQL
  • (转)Google的Objective-C编码规范
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .Net MVC4 上传大文件,并保存表单
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • @开发者,一文搞懂什么是 C# 计时器!
  • []我的函数库