`
idealab
  • 浏览: 198154 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Struts+Hibernate/JDBC+ExtJS实现人力资源管理系统(一)

    博客分类:
  • Ajax
阅读更多
   前期利用毕业实习的时间开发人力资源系统,实现了基本的组织机构管理,包括部门、职务、岗位管理,时间关系没有实现人员信息的各种操作。前端利用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,
				border : true,
				collapsible : false,
				width : 170,
				minSize : 170,
				maxSize : 170,
				layout : 'accordion',
				layoutConfig : {
					animate : true,
					fill : true,
					autoWidth : true
				},
				items : [{
							title : '系统管理',
							items : [Ext.mypanels.tree.navAdminTree]
						}, {
							title : '自助操作',
							items : [Ext.mypanels.tree.navSelfinfoTree]
						}]
			});
	Ext.mypanels.tree.navAdminTree.on('click', onClickTreeNode);
	Ext.mypanels.tree.navSelfinfoTree.on('click', onClickTreeNode);

	/* 主面板 */
	var viewport = new Ext.Viewport({
				layout : 'border',
				items : [{
							region : 'north',
							contentEl : 'header',
							split : true, // 可改变框体大小
							border : true,
							collapsible : true, // 可收缩
							height : 72,
							minSize : 72,
							maxSize : 72
						}, {
							region : 'south',
							contentEl : 'footer',
							split : true,
							border : true,
							collapsible : true,
							height : 35,
							minSize : 30,
							maxSize : 30
						}, navPanel, Ext.mypanels.contentPanel]
			});
});
/*动态导入js文件*/
function importJS(src) {
	/*
	 * fpath = fpath.replace(/\./g,'\/'); document.write('<script
	 * type="text/javascript" src="'+ fpath + '.js"></script>');
	 */
	src=src.replace(/\./g,'\/');
	jpath=src+'.js';
	var headerDom = document.getElementsByTagName('head').item(0);
	var jsDom = document.createElement('script');
	jsDom.type = 'text/javascript';
	jsDom.src = jpath;
	headerDom.appendChild(jsDom);
}

function onClickTreeNode(node) {
	if (node.getDepth() > 1) {
		importJS('lib.main.'+node.id);
		var n = Ext.mypanels.contentPanel.getComponent(node.id);
		if (!n) { // 判断是否已经打开该面板
			n = Ext.mypanels.contentPanel.add({
						'id' : node.id,
						'title' : node.text,
						contentEl : 'tab_'+node.id,/*各个模块分别在nav_*.js中定义,且每个模块相应的显示在tab_*区域中*/
						closable : true,
						iconCls : 'tabs'
						/*
						 * autoLoad : { url : 'nodes.jsp?url='+node.id, scope :
						 * this, scripts : true } //
						 * 通过autoLoad属性载入目标页,如果要用到脚本,必须加上scripts属性
						 */});
		}
		Ext.mypanels.contentPanel.setActiveTab(n);
	}
}

分享到:
评论
19 楼 jamix 2009-07-02  
没有演示地址么???哎...想看下界面都看不了了...
18 楼 songjingjing520 2009-07-02  
2009-7-2 16:02:11 org.apache.catalina.core.ApplicationContext log
信息: java.lang.NullPointerException
com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:980)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2253)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:718)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:298)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at com.idealab.util.JdbcUtil.openConn(JdbcUtil.java:20)
at com.idealab.struts.action.NewAction.execute(NewAction.java:35)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.idealab.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:22)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:910)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3923)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1273)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2181)
... 28 more
数据库连接失败!
17 楼 songjingjing520 2009-07-02  
com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
16 楼 hemin108 2009-07-02  
呵呵  很好 lz真的很好,我刚学struts 很想用ext写前台,我想可能会遇到很多问题,到时向楼主多多请教,谢谢 分享 
15 楼 chaofee 2009-07-02  
login.jsp中动态加载 js是如何放到<div id=main>中
14 楼 softherk 2009-06-30  
启动tomcat时报下面的错误:严重: Exception starting filter setcharacterencodingfilter
java.lang.NoClassDefFoundError: Filter
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1817)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1325)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:249)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3693)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4340)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.lang.ClassNotFoundException: Filter
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 34 more
2009-6-30 15:36:52 org.apache.catalina.core.StandardContext start
严重: Error filterStart
2009-6-30 15:36:52 org.apache.catalina.core.StandardContext start
严重: Context [/eHR] startup failed due to previous errors
2009-6-30 15:36:52 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2009-6-30 15:36:53 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:8009
2009-6-30 15:36:53 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/94  config=null
2009-6-30 15:36:53 org.apache.catalina.startup.Catalina start
信息: Server startup in 2572 ms
13 楼 softherk 2009-06-30  
为什么我部署后老是显示404错误啊。我访问的网址不对吗?下面是我的访问路径 http://localhost:8080/eHR/login.jsp
12 楼 youjianbo_han_87 2009-06-30  
不错,学习。。。。。。。。。。。
11 楼 bingliang008 2009-06-30  
我也正在学习EXTJS,在跟数据库连接上困惑了很长时间
10 楼 lbflyseed 2009-06-28  
部署应用后,登陆不进去啊。用户名good,密码1,
9 楼 beyondme121 2009-06-04  
very nice!!!!!学习了 ,加油
8 楼 idealab 2009-06-02  
bigeyex 写道
嗯,学习了,光看贴出来的代码就很不错,比如动态载入JS什么的。

多谢关注,共同学习~
7 楼 bigeyex 2009-06-02  
嗯,学习了,光看贴出来的代码就很不错,比如动态载入JS什么的。
6 楼 idealab 2009-05-22  
逍遥郎 写道
我想问一下,你的程序是怎样跳到后台去获取数据的?

ExtJS提供后台数据请求控件,如JsonStore,通过配置url和method来对后台发送请求,后台将JSON格式的数据响应给前台。也可以利用请求函数做请求,给出系统中的一段代码:
Ext.Ajax.request({
	url : 'delete.do?type=dept&id=' + pk_dept,
	method : 'GET',
	success : function() {
		Ext.Msg.alert('info', '删除成功');
		deptTree.root.children = false;
		deptTree.root.reload();
	},
	failure : function() {
                //do something
	}
});
5 楼 逍遥郎 2009-05-21  
我想问一下,你的程序是怎样跳到后台去获取数据的?
4 楼 idealab 2009-04-20  
C_J 写道
加油!ui好像很nice!

用ExtJS做开发的初衷就是它可以让后台开发人员不必弄那些烦人的美工活!当然,Ajax的优势也是考虑因素之一。
3 楼 C_J 2009-04-20  
加油!ui好像很nice!

怎么博客的回复跑到论坛来了???
2 楼 idealab 2009-04-01  
根据信息类型和id查询不同类型信息(如部门、职务、岗位等):
ps:其中用到了Hibernate和JDBC以对数据库进行访问,处理结果格式化为JSON回传至页面端
public class GetByIdAction extends Action {
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		// TODO Auto-generated method stub
		response.setContentType("text/html;charset=UTF-8");
		response.setCharacterEncoding("UTF-8");
		PrintWriter writer = response.getWriter();
		String getType = request.getParameter("type");
		String id = request.getParameter("id");
		
		JdbcUtil jdbc = new JdbcUtil();
		JSONArray jsonInner = new JSONArray();

		if (getType.equals("dept")) {// 获得部门信息
			jdbc.openConn();
			if (id == null) {// 若id为空,则查询全部数据,返回数据供comboBox使用
				String sql = "select * from dept";
				ResultSet rs = jdbc.executeQuery(sql);
				while (rs.next()) {
					JSONObject jsonObj = new JSONObject();
					jsonObj.put("id", rs.getString("pk_dept"));
					jsonObj.put("deptname", rs.getString("deptname"));
					jsonInner.add(jsonObj);
				}
				rs.close();
				jdbc.closeConn();

			} else {
				String sql = "select * from dept where pk_dept =" + id;
				ResultSet rs = jdbc.executeQuery(sql);
				Map map = new HashMap();
				if (rs.first()) {
					map.put("deptname", rs.getString("deptname"));
					map.put("depttype", rs.getString("depttype"));
					map.put("deptduty", rs.getString("deptduty"));
					map.put("addr", rs.getString("addr"));
					map.put("tel", rs.getString("tel"));
				}
				jsonInner = JSONArray.fromObject(map);
				rs.close();
				jdbc.closeConn();
				System.out.println("JsonInner is:"+jsonInner.toString());
			}

		} else if (getType.equals("post")) {// 获得职务信息
			jdbc.openConn();
			if (id == null) {// 若id为空,则查询全部数据
				String sql = "select * from post";
				ResultSet rs = jdbc.executeQuery(sql);
				while (rs.next()) {
					JSONObject jsonObj = new JSONObject();
					jsonObj.put("id", rs.getString("pk_post"));
					jsonObj.put("postname", rs.getString("postname"));
					jsonInner.add(jsonObj);
					System.out.println("pk_post=" + rs.getString("pk_post")
							+ "\t" + rs.getString("postname"));
				}
				rs.close();
				jdbc.closeConn();

			} else {
				String sql = "select * from post where pk_post =" + id;
				ResultSet rs = jdbc.executeQuery(sql);
				Map map = new HashMap();
				if (rs.first()) {
					map.put("postname", rs.getString("postname"));
					map.put("posttype", rs.getString("posttype"));
					map.put("postdesc", rs.getString("postdesc"));
					map.put("postgoal", rs.getString("postgoal"));
					map.put("postduty", rs.getString("postduty"));
				}
				rs.close();
				jdbc.closeConn();
				jsonInner = JSONArray.fromObject(map);
			}
		} else if (getType.equals("job")) {// 获得岗位信息
			jdbc.openConn();
			if (id == null) {
				String sql = "select * from job";
				ResultSet rs = jdbc.executeQuery(sql);
				while (rs.next()) {
					JSONObject jsonObj = new JSONObject();
					jsonObj.put("id", rs.getInt("pk_outer_post"));
					jsonObj.put("jobname", rs.getString("jobname"));
					jsonInner.add(jsonObj);
				}
				rs.close();
				jdbc.closeConn();
				
			} else {
				// Note:此时的id为部门主键,此查询响应部门树点击事件
				String sql = "select * from job where pk_dept=" + id;
				ResultSet rs = jdbc.executeQuery(sql);

				while (rs.next()) {
					JSONObject jsonObj = new JSONObject();

					jsonObj.put("jobcode", rs.getString("jobcode"));
					jsonObj.put("jobname", rs.getString("jobname"));
					jsonObj.put("pk_outer_post", rs.getInt("pk_outer_post"));
					jsonObj.put("jobtype", rs.getString("jobtype"));
					jsonObj.put("jobdesc", rs.getString("jobdesc"));
					jsonInner.add(jsonObj);
				}
				rs.close();
				jdbc.closeConn();
				
			}

		} else if (getType.equals("emptype")) {// 获得人员类别信息
			jdbc.openConn();
			if (id == null) {
				String sql = "select * from emptype";
				ResultSet rs = jdbc.executeQuery(sql);
				while (rs.next()) {
					JSONObject jsonObj = new JSONObject();
					jsonObj.put("id", rs.getString("pk_emptype"));
					jsonObj.put("typename", rs.getString("typename"));
					jsonInner.add(jsonObj);
				}
				rs.close();
				jdbc.closeConn();
				
			} else {
				String sql = "select * from emptype where pk_emptype=" + id;
				ResultSet rs = jdbc.executeQuery(sql);
				if (rs.first()) {
					JSONObject jsonObj = new JSONObject();
					jsonObj.put("typecode", rs.getString("typecode"));
					jsonObj.put("typename", rs.getString("typename"));
					jsonObj.put("typedesc", rs.getString("typedesc"));
					jsonInner.add(jsonObj);
				}
				rs.close();
				jdbc.closeConn();
				
			}
		} else if (getType.equals("emp")) {// 根据部门查询
			if (id == null) {
				// TODO
				EmpDAO dao = new EmpDAO();
				List<Emp> list = dao.findAll();
				Iterator iterator = list.iterator();
				while (iterator.hasNext()) {
					JSONObject jsonObj = new JSONObject();
					Emp emp = (Emp) iterator.next();
					jsonObj.put("pk_emp", emp.getPkEmp());
					jsonObj.put("empname", emp.getName());
					jsonInner.add(jsonObj);
				}
				
			} else {
				EmpdocDAO dao = new EmpdocDAO();
				List<Empdoc> list = dao.findByPkOuterDept(Integer.valueOf(id));
				jsonInner.fromObject(list);
			}
		}
		JSONObject json = new JSONObject();
		json.put("success", true);
		json.put("data", jsonInner);
		writer.write(json.toString());
		return null;
	}
}

JDBC工具类:
public class JdbcUtil {
	private final String driver = "com.mysql.jdbc.Driver";
	private final String url="jdbc:mysql://localhost:3306/ehr?autoReconnect=true&useUnicode=true&characterEncoding=utf-8";
	private final String user = "root";
	private final String pwd = "ideal";
	private Connection conn = null;
	private Statement st = null;

	public void openConn(){
		try{
			Class.forName(driver);
			conn = DriverManager.getConnection(url,user,pwd);
			conn.setAutoCommit(true);
		}catch(SQLException e){
			e.printStackTrace();
			System.out.println("数据库连接失败!");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	public boolean executeUpdate(String sql)throws SQLException{ 
        try {
            /*判断必需的属性是否为空*/  
        	if(conn==null || sql == null||sql.equals("")){   
                return true;   
            }
        	st = conn.createStatement();
            int i = st.executeUpdate(sql); 
            System.out.println(i+"行受影响");
            return true;
        } catch (SQLException e) { 
            e.printStackTrace();
            System.out.println("更新失败!");
            return false;
        } 
    } 

    public ResultSet executeQuery(String sql){ 
    	ResultSet rs = null;
        try { 
        	st = conn.createStatement();
            rs = st.executeQuery(sql);
        } catch (SQLException e) { 
            e.printStackTrace(); 
            System.out.println("查询数据失败.未获得ResultSet!");
        }
        return rs;
    } 

    public void closeConn() { 
        try { 
            st.close(); 
            conn.close(); 
        } catch (Exception e) { 
            e.printStackTrace(); 
            System.out.println("关闭数据库连接失败!");
        } 
    } 
}

ps:系统环境:Tomcat5.0.28+MySQL5,开发工具:MyEclipse6.5
系统实现图:


1 楼 idealab 2009-04-01  
今天没法上传附件,待明天再来上传。

相关推荐

    J2EE最新精品项目源码Struts2.0+Hibernate+Spring+ExtJS

    这个压缩包文件包含了一个基于J2EE架构的高级项目源码,主要采用了Struts2.0、Hibernate、Spring和ExtJS这四大核心技术。...同时,这也是提升Java EE开发技能,特别是分布式系统设计和实现能力的一个宝贵资源。

    Hibernate+Spring+Struts2+ExtJS整合开发实例

    "Hibernate+Spring+Struts2+ExtJS整合开发实例"就是一个典型的Java Web应用程序开发案例,它将四个关键组件结合在一起,以实现高效、模块化的后端和前端功能。 **Hibernate** 是一个流行的Java对象关系映射(ORM)...

    Struts+Spring+Hibernate+ExtJs

    Struts、Spring、Hibernate和ExtJS是Java Web开发中的四大框架,它们各自专注于应用程序的不同层面,共同构建出高效、模块化的应用系统。 Struts是Apache软件基金会的一个开源项目,主要负责MVC(Model-View-...

    Struts2+Spring+Hibernate+ExtJS开发实例.pdf

    在企业级应用开发中,采用MVC架构的项目常常会使用到多种框架来实现不同的业务需求,其中Struts2、Spring、Hibernate以及ExtJS是常见的组合之一。这些框架各司其职,Struts2负责处理Web请求和视图展示,Spring作为...

    struts2+spring+hibernate实验设备管理系统

    总的来说,"struts2+spring+hibernate实验设备管理系统"是一个综合运用了三大主流Java框架的实例,它展示了如何通过这些工具构建一个完整的、具备权限管理功能的管理系统。对这个系统的学习和研究,不仅可以加深对...

    Struts2+Spring+Hibernate+ExtJs

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责不同的职责,共同构建了一个强大的企业级应用体系。而ExtJs则是一款流行的JavaScript库,用于构建富客户端的Web应用。现在,我们将深入探讨这四...

    Extjs3.1+struts2+spring2.5+hibernate3.5环境

    "Extjs3.1+struts2+spring2.5+hibernate3.5环境"是一个经典的Java Web开发组合,每个组件都有其特定的角色和功能。以下是这些技术的详细说明: 1. **ExtJS 3.1**: ExtJS是一款基于JavaScript的前端用户界面(UI)...

    Struts2+Spring+Jpa+ExtJS开发实例

    5. **MySQL**:MySQL是一款开源的关系型数据库管理系统,广泛应用于Web应用中。它提供了高效、稳定的数据存储和查询能力。在这个实例中,MySQL作为数据存储层,JPA通过连接池与MySQL进行通信,执行SQL语句来完成CRUD...

    ext+struts2+spring+hibernate 树型菜单

    "ext+Struts2+Spring+Hibernate 树型菜单"是一个典型的Java Web开发框架组合,用于创建具有树状结构的用户界面,通常用于数据的层级展示,比如部门结构、文件目录等。下面将详细解释这些技术和如何协同工作。 **...

    Struts2 Spring Hibernate Extjs案例

    Struts2、Spring、Hibernate 和 ExtJS 是Java Web开发中常用的四大框架,它们结合使用能够构建出高效、灵活的企业级应用。在这个“物资管理系统”案例中,这些技术被整合在一起,实现了对物资信息的全面管理。 **...

    struts2.1.8+spring2.5+hibernate3.2+ext3.0框架整合笔记(三)

    Struts2、Spring2.5和Hibernate3.2是经典的Java Web开发框架组合,被称为SSH。这个整合笔记的第三部分可能涵盖了如何将这三个组件无缝集成到一个项目中的详细步骤。Struts2作为MVC框架负责控制流程,Spring2.5提供...

    Struts2,Hiberante,Spring,Extjs,OA办公系统,完整包

    在OA系统中,Spring可以实现服务层的管理,比如通过Spring AOP实现权限拦截,通过Spring JDBC或JPA处理数据库操作,以及通过Spring MVC与Struts2集成,提供更强大的MVC支持。 **ExtJS** 是一个JavaScript库,用于...

    一个SSH+ExtJs实现的简单文章管理系统

    这个"一个SSH+ExtJs实现的简单文章管理系统"结合了后端的SSH框架和前端的ExtJs,利用Struts处理HTTP请求,Spring管理应用上下文,Hibernate操作数据库,ExtJs构建交互性强的用户界面,并可能借助Ajax技术优化页面...

    struts2+ExtJS(带分页效果)

    综上所述,"struts2+ExtJS(带分页效果)"项目结合了后端的Struts2框架和前端的ExtJS库,实现了数据管理功能,并且通过分页增强了用户体验。开发者可以通过学习这两个技术,提升Web应用的开发效率和用户体验。

    Struts2+DAO+ExtJs做的一个简单登录程序

    - **实现类**:DAO接口的实现类会具体执行SQL语句,如使用JDBC或者ORM框架如Hibernate、MyBatis来操作数据库。 - **事务管理**:登录操作涉及数据库读写,可能需要事务控制以确保数据的一致性。 3. **ExtJS**: ...

    ExtJs制作新闻管理系统

    【标题】"ExtJs制作新闻管理系统"涉及到的关键技术点主要集中在前端开发框架ExtJs的使用上,这是一种基于JavaScript的富互联网应用(RIA)框架。它提供了丰富的组件库,用于构建功能强大、用户界面友好的Web应用程序...

    java程序员校招简历模板.pdf

    + 技术实现:Struts+Hibernate+Spring + 项目描述:整个项目开发周期为 40 人/月,20 万行代码量,小组分模块协同开发 + 责任描述:参与该系统详细设计工作,并负责其中的数据提取模块、资费管理模块、用户管理...

    Extjs4---combobox省市区三级联动+struts2

    在这个特定的项目“Extjs4---combobox省市区三级联动+struts2”中,我们将探讨如何利用ExtJS 4的ComboBox组件实现省市区的三级联动效果,并结合Struts2框架进行数据交互。 首先,`ComboBox`是ExtJS中的一个组件,它...

    用Extjs做到学生管理系统

    在“用Extjs做到学生管理系统”这个项目中,我们将探讨如何利用ExtJS与Java后端(例如JSP)结合,实现一个高效的学生信息管理系统。 1. **ExtJS框架介绍** - ExtJS的核心是MVC(Model-View-Controller)架构,帮助...

    java-Struts-Hibernatelib.zip_extjs4

    【标题】"java-Struts-Hibernate-lib.zip_extjs4" 涉及的是一个Java Web开发中的集成框架,其中包括了Struts、Hibernate和Spring这三个核心组件,以及ExtJS4前端框架,配合Jbpm4流程引擎和Oracle10g数据库的实践项目...

Global site tag (gtag.js) - Google Analytics