日期:2014-05-16  浏览次数:20608 次

Struts+Hibernate/JDBC+ExtJS实现人力资源管理系统(一)
   前期利用毕业实习的时间开发人力资源系统,实现了基本的组织机构管理,包括部门、职务、岗位管理,时间关系没有实现人员信息的各种操作。前端利用ExtJS框架完成同一个页面的所有操作(完全利用JS代码实现),后台本来利用Spring和Hibernate,无奈Spring用的不够熟练且时间不允许,所以改为Struts了。考虑到一部分数据库访问操作逻辑较简单且频率较低,故利用JDBC处理,而其他的则有Hibernate来处理。
   以下为系统各部分主干代码,稍后会放出代码供下载:
   配置文件:
   struts-config.xml
  
...
<struts-config>
	<data-sources />
	<form-beans>
		<form-bean name="loginForm"
			type="com.idealab.struts.form.LoginForm" />
		<form-bean name="newCorpForm"
			type="com.idealab.struts.form.NewCorpForm" />
		<form-bean name="newUserForm"
			type="com.idealab.struts.form.NewUserForm">
		</form-bean>
	</form-beans>

	<global-exceptions />
	<global-forwards>
		<forward name="index" path="/index.jsp"></forward>
	</global-forwards>
	<action-mappings>
		<!-- 登录 -->
		<action attribute="loginForm" input="/login.jsp"
			name="loginForm" path="/logon" scope="request"
			type="com.idealab.struts.action.LoginAction" />

		<!-- 新建不同种类(部门,职务,岗位) -->
		<action path="/new" scope="request"
			type="com.idealab.struts.action.NewAction" />

		<!-- 系统初始化中新建用户 -->
		<action attribute="newUserForm" name="newUserForm"
			path="/newUser" scope="request"
			type="com.idealab.struts.action.NewUserAction" />

		<!-- 获得公司 -->
		<action path="/getCorp" scope="request"
			type="com.idealab.struts.action.GetCorpAction" />

		<!-- 加载各种类型的树节点 -->
		<action path="/getNodes"
			type="com.idealab.struts.action.GetNodesAction" />

		<!-- 根据树节点Id加载信息到表单中 -->
		<action path="/getById"
			type="com.idealab.struts.action.GetByIdAction" />

		<!-- 更新信息 -->
		<action path="/update"
			type="com.idealab.struts.action.UpdateAction" />
		<!-- 删除 -->
		<action path="/delete"
			type="com.idealab.struts.action.DeleteAction" />

	</action-mappings>
	<message-resources
		parameter="com.idealab.struts.ApplicationResources" />
</struts-config>
...

hibernate.cfg.xml
...
<session-factory>
		<property name="connection.username">root</property>
		<property name="connection.url">
			jdbc:mysql://localhost:3306/ehr
		</property>
		<property name="dialect">
			org.hibernate.dialect.MySQLDialect
		</property>
		<property name="myeclipse.connection.profile">
			MysqlDriver
		</property>
		<property name="connection.password">ideal</property>
		<property name="connection.driver_class">
			com.mysql.jdbc.Driver
		</property>
		<mapping resource="com/idealab/dao/Sysuser.hbm.xml" />
		<mapping resource="com/idealab/dao/Corp.hbm.xml" />
		<mapping resource="com/idealab/dao/Emp.hbm.xml" />
		<mapping resource="com/idealab/dao/Empdoc.hbm.xml" />
</session-factory>
...

   
前端主页面JS脚本:
Ext.ns('Ext.mypanels');
Ext.onReady(function() {
	Ext.QuickTips.init();
        Ext.form.Field.prototype.msgTarget = 'side';
	Ext.mypanels.contentPanel = new Ext.TabPanel({
		region : 'center',
		id : 'tabPanel',
		autoDestroy:false,/*处理页签关闭后无法再次打开的问题*/
		deferredRender : false,
		activeTab : 0,
		iconCls : 'tabs',
		items : {
			title : '主页',
			autoScroll : true,
			layout : 'table',
			layoutConfig : {
				columns : 1
			},
			items : [{
				title : '公告信息',
				html : '<img src="lib/images/arch_eHR.jpg" width=830 height=450/>'
			}]
		}
	});

	/* 导航栏面板定义 */
	var navPanel = new Ext.Panel({
				region : 'west',
				id : 'nav_panel',
				name : 'navPanel',
				title : '导航栏',
				split : true,
				b