精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-01
最后修改:2009-04-01
以下为系统各部分主干代码,稍后会放出代码供下载: 配置文件: 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); } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-04-01
今天没法上传附件,待明天再来上传。
|
|
返回顶楼 | |
发表时间:2009-04-01
最后修改: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 系统实现图: |
|
返回顶楼 | |
发表时间:2009-04-20
最后修改:2009-04-20
加油!ui好像很nice!
怎么博客的回复跑到论坛来了??? |
|
返回顶楼 | |
发表时间:2009-04-20
C_J 写道 加油!ui好像很nice! 用ExtJS做开发的初衷就是它可以让后台开发人员不必弄那些烦人的美工活!当然,Ajax的优势也是考虑因素之一。 |
|
返回顶楼 | |
发表时间:2009-05-21
我想问一下,你的程序是怎样跳到后台去获取数据的?
|
|
返回顶楼 | |
发表时间:2009-05-22
最后修改: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 } }); |
|
返回顶楼 | |
发表时间:2009-06-02
嗯,学习了,光看贴出来的代码就很不错,比如动态载入JS什么的。
|
|
返回顶楼 | |
发表时间:2009-06-02
bigeyex 写道 嗯,学习了,光看贴出来的代码就很不错,比如动态载入JS什么的。 多谢关注,共同学习~ |
|
返回顶楼 | |
发表时间:2009-06-04
very nice!!!!!学习了 ,加油
|
|
返回顶楼 | |