From 0f0670cfac82ab4cc89a283c33d0d989cde2daf7 Mon Sep 17 00:00:00 2001 From: Hackergeek <1224085894@qq.com> Date: Fri, 3 Jun 2016 00:30:01 +0800 Subject: [PATCH 1/3] update --- HRMS/.classpath | 27 ++ HRMS/.project | 46 ++ HRMS/.settings/.jsdtscope | 12 + HRMS/.settings/org.eclipse.jdt.core.prefs | 7 + .../org.eclipse.wst.common.component | 9 + ....eclipse.wst.common.project.facet.core.xml | 11 + ...rg.eclipse.wst.jsdt.ui.superType.container | 1 + .../org.eclipse.wst.jsdt.ui.superType.name | 1 + HRMS/WebRoot/META-INF/MANIFEST.MF | 3 + .../classes/action/ContractAction.class | Bin 0 -> 2723 bytes .../WEB-INF/classes/action/EmployAction.class | Bin 0 -> 2924 bytes .../WEB-INF/classes/action/SuperAction.class | Bin 0 -> 1331 bytes .../WEB-INF/classes/action/TrainAction.class | Bin 0 -> 2566 bytes .../WEB-INF/classes/action/UserAction.class | Bin 0 -> 2100 bytes .../db/MyHibernateSessionFactory.class | Bin 0 -> 1145 bytes .../WEB-INF/classes/entity/Contract.class | Bin 0 -> 1929 bytes .../WEB-INF/classes/entity/Contract.hbm.xml | 24 + .../WEB-INF/classes/entity/Employ.class | Bin 0 -> 2305 bytes .../WEB-INF/classes/entity/Employ.hbm.xml | 25 + .../WEB-INF/classes/entity/Staff.class | Bin 0 -> 3489 bytes .../WEB-INF/classes/entity/Staff.hbm.xml | 27 ++ .../WEB-INF/classes/entity/TestDatabase.class | Bin 0 -> 1842 bytes .../WEB-INF/classes/entity/Train.class | Bin 0 -> 1880 bytes .../WEB-INF/classes/entity/Train.hbm.xml | 21 + .../WebRoot/WEB-INF/classes/entity/User.class | Bin 0 -> 1916 bytes .../WEB-INF/classes/entity/User.hbm.xml | 24 + .../WebRoot/WEB-INF/classes/hibernate.cfg.xml | 26 ++ .../WEB-INF/classes/service/ContractDao.class | Bin 0 -> 407 bytes .../WEB-INF/classes/service/EmployDao.class | Bin 0 -> 387 bytes .../WEB-INF/classes/service/TrainDao.class | Bin 0 -> 377 bytes .../WEB-INF/classes/service/UserDao.class | Bin 0 -> 142 bytes .../service/impl/ContractDaoImpl.class | Bin 0 -> 3848 bytes .../classes/service/impl/EmployDaoImpl.class | Bin 0 -> 3810 bytes .../service/impl/TestContractDaoImpl.class | Bin 0 -> 2102 bytes .../service/impl/TestEmployDaoImpl.class | Bin 0 -> 1921 bytes .../service/impl/TestTrainDaoImpl.class | Bin 0 -> 1828 bytes .../service/impl/TestUserDaoImpl.class | Bin 0 -> 852 bytes .../classes/service/impl/TrainDaoImpl.class | Bin 0 -> 3797 bytes .../classes/service/impl/UserDaoImpl.class | Bin 0 -> 1865 bytes HRMS/WebRoot/WEB-INF/classes/struts.xml | 51 +++ HRMS/WebRoot/WEB-INF/classes/util/Util.class | Bin 0 -> 2695 bytes HRMS/WebRoot/WEB-INF/web.xml | 15 + HRMS/WebRoot/components/dtree/dtree.css | 33 ++ HRMS/WebRoot/components/dtree/dtree.js | 347 ++++++++++++++ HRMS/WebRoot/components/dtree/img/base.gif | Bin 0 -> 621 bytes HRMS/WebRoot/components/dtree/img/cd.gif | Bin 0 -> 239 bytes HRMS/WebRoot/components/dtree/img/empty.gif | Bin 0 -> 62 bytes HRMS/WebRoot/components/dtree/img/folder.gif | Bin 0 -> 372 bytes .../components/dtree/img/folderopen.gif | Bin 0 -> 376 bytes HRMS/WebRoot/components/dtree/img/globe.gif | Bin 0 -> 1095 bytes .../components/dtree/img/imgfolder.gif | Bin 0 -> 622 bytes HRMS/WebRoot/components/dtree/img/join.gif | Bin 0 -> 69 bytes .../components/dtree/img/joinbottom.gif | Bin 0 -> 66 bytes HRMS/WebRoot/components/dtree/img/line.gif | Bin 0 -> 66 bytes HRMS/WebRoot/components/dtree/img/minus.gif | Bin 0 -> 86 bytes .../components/dtree/img/minusbottom.gif | Bin 0 -> 85 bytes .../components/dtree/img/musicfolder.gif | Bin 0 -> 633 bytes .../components/dtree/img/nolines_minus.gif | Bin 0 -> 861 bytes .../components/dtree/img/nolines_plus.gif | Bin 0 -> 870 bytes HRMS/WebRoot/components/dtree/img/page.gif | Bin 0 -> 582 bytes HRMS/WebRoot/components/dtree/img/plus.gif | Bin 0 -> 89 bytes .../components/dtree/img/plusbottom.gif | Bin 0 -> 88 bytes .../WebRoot/components/dtree/img/question.gif | Bin 0 -> 1044 bytes HRMS/WebRoot/components/dtree/img/trash.gif | Bin 0 -> 1051 bytes HRMS/WebRoot/contract/Contract_add.jsp | 121 +++++ .../WebRoot/contract/Contract_add_success.jsp | 94 ++++ HRMS/WebRoot/contract/Contract_modify.jsp | 125 +++++ .../contract/Contract_modify_success.jsp | 94 ++++ .../contract/Contract_query_success.jsp | 127 +++++ HRMS/WebRoot/css/default.css | 433 ++++++++++++++++++ HRMS/WebRoot/css/index.css | 176 +++++++ HRMS/WebRoot/employ/Employ_add.jsp | 129 ++++++ HRMS/WebRoot/employ/Employ_add_success.jsp | 94 ++++ HRMS/WebRoot/employ/Employ_modify.jsp | 133 ++++++ HRMS/WebRoot/employ/Employ_modify_success.jsp | 94 ++++ HRMS/WebRoot/employ/Employ_query_success.jsp | 130 ++++++ HRMS/WebRoot/images/admin.png | Bin 0 -> 49047 bytes HRMS/WebRoot/images/arror.gif | Bin 0 -> 56 bytes HRMS/WebRoot/images/icon_default.gif | Bin 0 -> 621 bytes HRMS/WebRoot/images/main_bg.jpg | Bin 0 -> 79064 bytes HRMS/WebRoot/images/welcome.jpg | Bin 0 -> 31314 bytes HRMS/WebRoot/index.jsp | 6 + HRMS/WebRoot/js/Calendar3.js | 374 +++++++++++++++ HRMS/WebRoot/train/Train_add.jsp | 121 +++++ HRMS/WebRoot/train/Train_add_success.jsp | 94 ++++ HRMS/WebRoot/train/Train_modify.jsp | 125 +++++ HRMS/WebRoot/train/Train_modify_success.jsp | 94 ++++ HRMS/WebRoot/train/Train_query_success.jsp | 127 +++++ HRMS/WebRoot/tree.jsp | 107 +++++ HRMS/WebRoot/user/User_login.jsp | 278 +++++++++++ HRMS/WebRoot/user/User_login_main.jsp | 90 ++++ HRMS/WebRoot/user/User_login_success.jsp | 45 ++ HRMS/src/action/ContractAction.java | 64 +++ HRMS/src/action/EmployAction.java | 69 +++ HRMS/src/action/SuperAction.java | 40 ++ HRMS/src/action/TrainAction.java | 65 +++ HRMS/src/action/UserAction.java | 59 +++ HRMS/src/db/MyHibernateSessionFactory.java | 25 + HRMS/src/entity/Contract.hbm.xml | 24 + HRMS/src/entity/Contract.java | 73 +++ HRMS/src/entity/Employ.hbm.xml | 25 + HRMS/src/entity/Employ.java | 87 ++++ HRMS/src/entity/Staff.hbm.xml | 27 ++ HRMS/src/entity/Staff.java | 146 ++++++ HRMS/src/entity/Train.hbm.xml | 21 + HRMS/src/entity/Train.java | 74 +++ HRMS/src/entity/User.hbm.xml | 24 + HRMS/src/entity/User.java | 74 +++ HRMS/src/hibernate.cfg.xml | 26 ++ HRMS/src/service/ContractDao.java | 22 + HRMS/src/service/EmployDao.java | 22 + HRMS/src/service/TrainDao.java | 22 + HRMS/src/service/UserDao.java | 9 + HRMS/src/service/impl/ContractDaoImpl.java | 130 ++++++ HRMS/src/service/impl/EmployDaoImpl.java | 129 ++++++ HRMS/src/service/impl/TrainDaoImpl.java | 129 ++++++ HRMS/src/service/impl/UserDaoImpl.java | 44 ++ HRMS/src/struts.xml | 51 +++ HRMS/src/util/Util.java | 51 +++ HRMS/test/entity/TestDatabase.java | 62 +++ .../service/impl/TestContractDaoImpl.java | 55 +++ HRMS/test/service/impl/TestEmployDaoImpl.java | 39 ++ HRMS/test/service/impl/TestTrainDaoImpl.java | 38 ++ HRMS/test/service/impl/TestUserDaoImpl.java | 17 + student/.classpath | 28 ++ student/.project | 46 ++ student/.settings/.jsdtscope | 12 + .../org.eclipse.core.resources.prefs | 2 + student/.settings/org.eclipse.jdt.core.prefs | 7 + .../org.eclipse.wst.common.component | 9 + ....eclipse.wst.common.project.facet.core.xml | 11 + ...rg.eclipse.wst.jsdt.ui.superType.container | 1 + .../org.eclipse.wst.jsdt.ui.superType.name | 1 + student/WebRoot/META-INF/MANIFEST.MF | 3 + .../classes/action/StudentAction.class | Bin 0 -> 2775 bytes .../WEB-INF/classes/action/SuperAction.class | Bin 0 -> 1331 bytes .../WEB-INF/classes/action/UserAction.class | Bin 0 -> 2100 bytes .../db/MyHibernateSessionFactory.class | Bin 0 -> 1145 bytes .../WEB-INF/classes/entity/Student.class | Bin 0 -> 2001 bytes .../WEB-INF/classes/entity/Student.hbm.xml | 21 + .../WEB-INF/classes/entity/TestDatabase.class | Bin 0 -> 2729 bytes .../WebRoot/WEB-INF/classes/entity/User.class | Bin 0 -> 1410 bytes .../WEB-INF/classes/entity/User.hbm.xml | 22 + .../WebRoot/WEB-INF/classes/hibernate.cfg.xml | 23 + .../WEB-INF/classes/service/StudentDao.class | Bin 0 -> 397 bytes .../WEB-INF/classes/service/UserDao.class | Bin 0 -> 142 bytes .../classes/service/impl/StudentDaoImpl.class | Bin 0 -> 4981 bytes .../service/impl/TestStudentDaoImpl.class | Bin 0 -> 1803 bytes .../service/impl/TestUserDaoImpl.class | Bin 0 -> 798 bytes .../classes/service/impl/UserDaoImpl.class | Bin 0 -> 1865 bytes student/WebRoot/WEB-INF/classes/struts.xml | 56 +++ student/WebRoot/WEB-INF/web.xml | 15 + student/WebRoot/components/dtree/dtree.css | 33 ++ student/WebRoot/components/dtree/dtree.js | 347 ++++++++++++++ student/WebRoot/components/dtree/img/base.gif | Bin 0 -> 621 bytes student/WebRoot/components/dtree/img/cd.gif | Bin 0 -> 239 bytes .../WebRoot/components/dtree/img/empty.gif | Bin 0 -> 62 bytes .../WebRoot/components/dtree/img/folder.gif | Bin 0 -> 372 bytes .../components/dtree/img/folderopen.gif | Bin 0 -> 376 bytes .../WebRoot/components/dtree/img/globe.gif | Bin 0 -> 1095 bytes .../components/dtree/img/imgfolder.gif | Bin 0 -> 622 bytes student/WebRoot/components/dtree/img/join.gif | Bin 0 -> 69 bytes .../components/dtree/img/joinbottom.gif | Bin 0 -> 66 bytes student/WebRoot/components/dtree/img/line.gif | Bin 0 -> 66 bytes .../WebRoot/components/dtree/img/minus.gif | Bin 0 -> 86 bytes .../components/dtree/img/minusbottom.gif | Bin 0 -> 85 bytes .../components/dtree/img/musicfolder.gif | Bin 0 -> 633 bytes .../components/dtree/img/nolines_minus.gif | Bin 0 -> 861 bytes .../components/dtree/img/nolines_plus.gif | Bin 0 -> 870 bytes student/WebRoot/components/dtree/img/page.gif | Bin 0 -> 582 bytes student/WebRoot/components/dtree/img/plus.gif | Bin 0 -> 89 bytes .../components/dtree/img/plusbottom.gif | Bin 0 -> 88 bytes .../WebRoot/components/dtree/img/question.gif | Bin 0 -> 1044 bytes .../WebRoot/components/dtree/img/trash.gif | Bin 0 -> 1051 bytes student/WebRoot/css/default.css | 433 ++++++++++++++++++ student/WebRoot/css/index.css | 176 +++++++ student/WebRoot/images/admin.png | Bin 0 -> 49047 bytes student/WebRoot/images/arror.gif | Bin 0 -> 56 bytes student/WebRoot/images/icon_default.gif | Bin 0 -> 621 bytes student/WebRoot/images/welcome.jpg | Bin 0 -> 31314 bytes student/WebRoot/index.jsp | 6 + student/WebRoot/js/Calendar3.js | 374 +++++++++++++++ student/WebRoot/student/Student_add.jsp | 123 +++++ .../WebRoot/student/Student_add_success.jsp | 94 ++++ student/WebRoot/student/Student_modify.jsp | 139 ++++++ .../student/Student_modify_success.jsp | 94 ++++ .../WebRoot/student/Student_query_success.jsp | 130 ++++++ student/WebRoot/tree.jsp | 104 +++++ student/WebRoot/user/User_login.jsp | 278 +++++++++++ student/WebRoot/user/User_login_main.jsp | 90 ++++ student/WebRoot/user/User_login_success.jsp | 57 +++ student/src/action/StudentAction.java | 76 +++ student/src/action/SuperAction.java | 40 ++ student/src/action/UserAction.java | 59 +++ student/src/db/MyHibernateSessionFactory.java | 25 + student/src/entity/Student.hbm.xml | 21 + student/src/entity/Student.java | 71 +++ student/src/entity/User.hbm.xml | 22 + student/src/entity/User.java | 47 ++ student/src/hibernate.cfg.xml | 23 + student/src/service/StudentDao.java | 24 + student/src/service/UserDao.java | 9 + student/src/service/impl/StudentDaoImpl.java | 172 +++++++ student/src/service/impl/UserDaoImpl.java | 44 ++ student/src/struts.xml | 56 +++ student/test/entity/TestDatabase.java | 64 +++ .../test/service/impl/TestStudentDaoImpl.java | 37 ++ .../test/service/impl/TestUserDaoImpl.java | 17 + 208 files changed, 9206 insertions(+) create mode 100644 HRMS/.classpath create mode 100644 HRMS/.project create mode 100644 HRMS/.settings/.jsdtscope create mode 100644 HRMS/.settings/org.eclipse.jdt.core.prefs create mode 100644 HRMS/.settings/org.eclipse.wst.common.component create mode 100644 HRMS/.settings/org.eclipse.wst.common.project.facet.core.xml create mode 100644 HRMS/.settings/org.eclipse.wst.jsdt.ui.superType.container create mode 100644 HRMS/.settings/org.eclipse.wst.jsdt.ui.superType.name create mode 100644 HRMS/WebRoot/META-INF/MANIFEST.MF create mode 100644 HRMS/WebRoot/WEB-INF/classes/action/ContractAction.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/action/EmployAction.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/action/SuperAction.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/action/TrainAction.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/action/UserAction.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/db/MyHibernateSessionFactory.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/entity/Contract.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/entity/Contract.hbm.xml create mode 100644 HRMS/WebRoot/WEB-INF/classes/entity/Employ.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/entity/Employ.hbm.xml create mode 100644 HRMS/WebRoot/WEB-INF/classes/entity/Staff.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/entity/Staff.hbm.xml create mode 100644 HRMS/WebRoot/WEB-INF/classes/entity/TestDatabase.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/entity/Train.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/entity/Train.hbm.xml create mode 100644 HRMS/WebRoot/WEB-INF/classes/entity/User.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/entity/User.hbm.xml create mode 100644 HRMS/WebRoot/WEB-INF/classes/hibernate.cfg.xml create mode 100644 HRMS/WebRoot/WEB-INF/classes/service/ContractDao.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/service/EmployDao.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/service/TrainDao.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/service/UserDao.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/service/impl/ContractDaoImpl.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/service/impl/EmployDaoImpl.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/service/impl/TestContractDaoImpl.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/service/impl/TestEmployDaoImpl.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/service/impl/TestTrainDaoImpl.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/service/impl/TestUserDaoImpl.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/service/impl/TrainDaoImpl.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/service/impl/UserDaoImpl.class create mode 100644 HRMS/WebRoot/WEB-INF/classes/struts.xml create mode 100644 HRMS/WebRoot/WEB-INF/classes/util/Util.class create mode 100644 HRMS/WebRoot/WEB-INF/web.xml create mode 100644 HRMS/WebRoot/components/dtree/dtree.css create mode 100644 HRMS/WebRoot/components/dtree/dtree.js create mode 100644 HRMS/WebRoot/components/dtree/img/base.gif create mode 100644 HRMS/WebRoot/components/dtree/img/cd.gif create mode 100644 HRMS/WebRoot/components/dtree/img/empty.gif create mode 100644 HRMS/WebRoot/components/dtree/img/folder.gif create mode 100644 HRMS/WebRoot/components/dtree/img/folderopen.gif create mode 100644 HRMS/WebRoot/components/dtree/img/globe.gif create mode 100644 HRMS/WebRoot/components/dtree/img/imgfolder.gif create mode 100644 HRMS/WebRoot/components/dtree/img/join.gif create mode 100644 HRMS/WebRoot/components/dtree/img/joinbottom.gif create mode 100644 HRMS/WebRoot/components/dtree/img/line.gif create mode 100644 HRMS/WebRoot/components/dtree/img/minus.gif create mode 100644 HRMS/WebRoot/components/dtree/img/minusbottom.gif create mode 100644 HRMS/WebRoot/components/dtree/img/musicfolder.gif create mode 100644 HRMS/WebRoot/components/dtree/img/nolines_minus.gif create mode 100644 HRMS/WebRoot/components/dtree/img/nolines_plus.gif create mode 100644 HRMS/WebRoot/components/dtree/img/page.gif create mode 100644 HRMS/WebRoot/components/dtree/img/plus.gif create mode 100644 HRMS/WebRoot/components/dtree/img/plusbottom.gif create mode 100644 HRMS/WebRoot/components/dtree/img/question.gif create mode 100644 HRMS/WebRoot/components/dtree/img/trash.gif create mode 100644 HRMS/WebRoot/contract/Contract_add.jsp create mode 100644 HRMS/WebRoot/contract/Contract_add_success.jsp create mode 100644 HRMS/WebRoot/contract/Contract_modify.jsp create mode 100644 HRMS/WebRoot/contract/Contract_modify_success.jsp create mode 100644 HRMS/WebRoot/contract/Contract_query_success.jsp create mode 100644 HRMS/WebRoot/css/default.css create mode 100644 HRMS/WebRoot/css/index.css create mode 100644 HRMS/WebRoot/employ/Employ_add.jsp create mode 100644 HRMS/WebRoot/employ/Employ_add_success.jsp create mode 100644 HRMS/WebRoot/employ/Employ_modify.jsp create mode 100644 HRMS/WebRoot/employ/Employ_modify_success.jsp create mode 100644 HRMS/WebRoot/employ/Employ_query_success.jsp create mode 100644 HRMS/WebRoot/images/admin.png create mode 100644 HRMS/WebRoot/images/arror.gif create mode 100644 HRMS/WebRoot/images/icon_default.gif create mode 100644 HRMS/WebRoot/images/main_bg.jpg create mode 100644 HRMS/WebRoot/images/welcome.jpg create mode 100644 HRMS/WebRoot/index.jsp create mode 100644 HRMS/WebRoot/js/Calendar3.js create mode 100644 HRMS/WebRoot/train/Train_add.jsp create mode 100644 HRMS/WebRoot/train/Train_add_success.jsp create mode 100644 HRMS/WebRoot/train/Train_modify.jsp create mode 100644 HRMS/WebRoot/train/Train_modify_success.jsp create mode 100644 HRMS/WebRoot/train/Train_query_success.jsp create mode 100644 HRMS/WebRoot/tree.jsp create mode 100644 HRMS/WebRoot/user/User_login.jsp create mode 100644 HRMS/WebRoot/user/User_login_main.jsp create mode 100644 HRMS/WebRoot/user/User_login_success.jsp create mode 100644 HRMS/src/action/ContractAction.java create mode 100644 HRMS/src/action/EmployAction.java create mode 100644 HRMS/src/action/SuperAction.java create mode 100644 HRMS/src/action/TrainAction.java create mode 100644 HRMS/src/action/UserAction.java create mode 100644 HRMS/src/db/MyHibernateSessionFactory.java create mode 100644 HRMS/src/entity/Contract.hbm.xml create mode 100644 HRMS/src/entity/Contract.java create mode 100644 HRMS/src/entity/Employ.hbm.xml create mode 100644 HRMS/src/entity/Employ.java create mode 100644 HRMS/src/entity/Staff.hbm.xml create mode 100644 HRMS/src/entity/Staff.java create mode 100644 HRMS/src/entity/Train.hbm.xml create mode 100644 HRMS/src/entity/Train.java create mode 100644 HRMS/src/entity/User.hbm.xml create mode 100644 HRMS/src/entity/User.java create mode 100644 HRMS/src/hibernate.cfg.xml create mode 100644 HRMS/src/service/ContractDao.java create mode 100644 HRMS/src/service/EmployDao.java create mode 100644 HRMS/src/service/TrainDao.java create mode 100644 HRMS/src/service/UserDao.java create mode 100644 HRMS/src/service/impl/ContractDaoImpl.java create mode 100644 HRMS/src/service/impl/EmployDaoImpl.java create mode 100644 HRMS/src/service/impl/TrainDaoImpl.java create mode 100644 HRMS/src/service/impl/UserDaoImpl.java create mode 100644 HRMS/src/struts.xml create mode 100644 HRMS/src/util/Util.java create mode 100644 HRMS/test/entity/TestDatabase.java create mode 100644 HRMS/test/service/impl/TestContractDaoImpl.java create mode 100644 HRMS/test/service/impl/TestEmployDaoImpl.java create mode 100644 HRMS/test/service/impl/TestTrainDaoImpl.java create mode 100644 HRMS/test/service/impl/TestUserDaoImpl.java create mode 100644 student/.classpath create mode 100644 student/.project create mode 100644 student/.settings/.jsdtscope create mode 100644 student/.settings/org.eclipse.core.resources.prefs create mode 100644 student/.settings/org.eclipse.jdt.core.prefs create mode 100644 student/.settings/org.eclipse.wst.common.component create mode 100644 student/.settings/org.eclipse.wst.common.project.facet.core.xml create mode 100644 student/.settings/org.eclipse.wst.jsdt.ui.superType.container create mode 100644 student/.settings/org.eclipse.wst.jsdt.ui.superType.name create mode 100644 student/WebRoot/META-INF/MANIFEST.MF create mode 100644 student/WebRoot/WEB-INF/classes/action/StudentAction.class create mode 100644 student/WebRoot/WEB-INF/classes/action/SuperAction.class create mode 100644 student/WebRoot/WEB-INF/classes/action/UserAction.class create mode 100644 student/WebRoot/WEB-INF/classes/db/MyHibernateSessionFactory.class create mode 100644 student/WebRoot/WEB-INF/classes/entity/Student.class create mode 100644 student/WebRoot/WEB-INF/classes/entity/Student.hbm.xml create mode 100644 student/WebRoot/WEB-INF/classes/entity/TestDatabase.class create mode 100644 student/WebRoot/WEB-INF/classes/entity/User.class create mode 100644 student/WebRoot/WEB-INF/classes/entity/User.hbm.xml create mode 100644 student/WebRoot/WEB-INF/classes/hibernate.cfg.xml create mode 100644 student/WebRoot/WEB-INF/classes/service/StudentDao.class create mode 100644 student/WebRoot/WEB-INF/classes/service/UserDao.class create mode 100644 student/WebRoot/WEB-INF/classes/service/impl/StudentDaoImpl.class create mode 100644 student/WebRoot/WEB-INF/classes/service/impl/TestStudentDaoImpl.class create mode 100644 student/WebRoot/WEB-INF/classes/service/impl/TestUserDaoImpl.class create mode 100644 student/WebRoot/WEB-INF/classes/service/impl/UserDaoImpl.class create mode 100644 student/WebRoot/WEB-INF/classes/struts.xml create mode 100644 student/WebRoot/WEB-INF/web.xml create mode 100644 student/WebRoot/components/dtree/dtree.css create mode 100644 student/WebRoot/components/dtree/dtree.js create mode 100644 student/WebRoot/components/dtree/img/base.gif create mode 100644 student/WebRoot/components/dtree/img/cd.gif create mode 100644 student/WebRoot/components/dtree/img/empty.gif create mode 100644 student/WebRoot/components/dtree/img/folder.gif create mode 100644 student/WebRoot/components/dtree/img/folderopen.gif create mode 100644 student/WebRoot/components/dtree/img/globe.gif create mode 100644 student/WebRoot/components/dtree/img/imgfolder.gif create mode 100644 student/WebRoot/components/dtree/img/join.gif create mode 100644 student/WebRoot/components/dtree/img/joinbottom.gif create mode 100644 student/WebRoot/components/dtree/img/line.gif create mode 100644 student/WebRoot/components/dtree/img/minus.gif create mode 100644 student/WebRoot/components/dtree/img/minusbottom.gif create mode 100644 student/WebRoot/components/dtree/img/musicfolder.gif create mode 100644 student/WebRoot/components/dtree/img/nolines_minus.gif create mode 100644 student/WebRoot/components/dtree/img/nolines_plus.gif create mode 100644 student/WebRoot/components/dtree/img/page.gif create mode 100644 student/WebRoot/components/dtree/img/plus.gif create mode 100644 student/WebRoot/components/dtree/img/plusbottom.gif create mode 100644 student/WebRoot/components/dtree/img/question.gif create mode 100644 student/WebRoot/components/dtree/img/trash.gif create mode 100644 student/WebRoot/css/default.css create mode 100644 student/WebRoot/css/index.css create mode 100644 student/WebRoot/images/admin.png create mode 100644 student/WebRoot/images/arror.gif create mode 100644 student/WebRoot/images/icon_default.gif create mode 100644 student/WebRoot/images/welcome.jpg create mode 100644 student/WebRoot/index.jsp create mode 100644 student/WebRoot/js/Calendar3.js create mode 100644 student/WebRoot/student/Student_add.jsp create mode 100644 student/WebRoot/student/Student_add_success.jsp create mode 100644 student/WebRoot/student/Student_modify.jsp create mode 100644 student/WebRoot/student/Student_modify_success.jsp create mode 100644 student/WebRoot/student/Student_query_success.jsp create mode 100644 student/WebRoot/tree.jsp create mode 100644 student/WebRoot/user/User_login.jsp create mode 100644 student/WebRoot/user/User_login_main.jsp create mode 100644 student/WebRoot/user/User_login_success.jsp create mode 100644 student/src/action/StudentAction.java create mode 100644 student/src/action/SuperAction.java create mode 100644 student/src/action/UserAction.java create mode 100644 student/src/db/MyHibernateSessionFactory.java create mode 100644 student/src/entity/Student.hbm.xml create mode 100644 student/src/entity/Student.java create mode 100644 student/src/entity/User.hbm.xml create mode 100644 student/src/entity/User.java create mode 100644 student/src/hibernate.cfg.xml create mode 100644 student/src/service/StudentDao.java create mode 100644 student/src/service/UserDao.java create mode 100644 student/src/service/impl/StudentDaoImpl.java create mode 100644 student/src/service/impl/UserDaoImpl.java create mode 100644 student/src/struts.xml create mode 100644 student/test/entity/TestDatabase.java create mode 100644 student/test/service/impl/TestStudentDaoImpl.java create mode 100644 student/test/service/impl/TestUserDaoImpl.java diff --git a/HRMS/.classpath b/HRMS/.classpath new file mode 100644 index 0000000..2771403 --- /dev/null +++ b/HRMS/.classpath @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/HRMS/.project b/HRMS/.project new file mode 100644 index 0000000..1c565a5 --- /dev/null +++ b/HRMS/.project @@ -0,0 +1,46 @@ + + + HRMS + + + + + + org.eclipse.wst.jsdt.core.javascriptValidator + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + com.genuitec.eclipse.j2eedt.core.DeploymentDescriptorValidator + + + + + com.genuitec.eclipse.ast.deploy.core.DeploymentBuilder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.jdt.core.javanature + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/HRMS/.settings/.jsdtscope b/HRMS/.settings/.jsdtscope new file mode 100644 index 0000000..2fc9dba --- /dev/null +++ b/HRMS/.settings/.jsdtscope @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/HRMS/.settings/org.eclipse.jdt.core.prefs b/HRMS/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..f42de36 --- /dev/null +++ b/HRMS/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/HRMS/.settings/org.eclipse.wst.common.component b/HRMS/.settings/org.eclipse.wst.common.component new file mode 100644 index 0000000..d202b21 --- /dev/null +++ b/HRMS/.settings/org.eclipse.wst.common.component @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/HRMS/.settings/org.eclipse.wst.common.project.facet.core.xml b/HRMS/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 0000000..ae218fe --- /dev/null +++ b/HRMS/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/HRMS/.settings/org.eclipse.wst.jsdt.ui.superType.container b/HRMS/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 0000000..3bd5d0a --- /dev/null +++ b/HRMS/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git a/HRMS/.settings/org.eclipse.wst.jsdt.ui.superType.name b/HRMS/.settings/org.eclipse.wst.jsdt.ui.superType.name new file mode 100644 index 0000000..05bd71b --- /dev/null +++ b/HRMS/.settings/org.eclipse.wst.jsdt.ui.superType.name @@ -0,0 +1 @@ +Window \ No newline at end of file diff --git a/HRMS/WebRoot/META-INF/MANIFEST.MF b/HRMS/WebRoot/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/HRMS/WebRoot/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/HRMS/WebRoot/WEB-INF/classes/action/ContractAction.class b/HRMS/WebRoot/WEB-INF/classes/action/ContractAction.class new file mode 100644 index 0000000000000000000000000000000000000000..1a894afc13d9f6de765468a6a811fae161f64c97 GIT binary patch literal 2723 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 literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/WEB-INF/classes/action/SuperAction.class b/HRMS/WebRoot/WEB-INF/classes/action/SuperAction.class new file mode 100644 index 0000000000000000000000000000000000000000..a1825bb19a9468823738403864edab38e863584c GIT binary patch literal 1331 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 literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/WEB-INF/classes/entity/Contract.class b/HRMS/WebRoot/WEB-INF/classes/entity/Contract.class new file mode 100644 index 0000000000000000000000000000000000000000..039e544f7725da4497670be8682310603e279830 GIT binary patch literal 1929 zcmaJ?>rN9<5dKc-jk;W{0#>9f3fNYlB7#b#2!&#`UJ?iiG5%P}2A9;9l*NSj8a{?G znpjLU@d11&<2SqI;L{TER+{Le#Fi#6~co z(C4Llao?(LnT;s!Ds&$8On<}X%*8N{dm01 zhM-oWTojL3@R%+=o{NIC@*$me^36%`yuuCga6yPCq+v{Vhr;n&6u*M_6)*BzCT#k# zxF}XQO>d>3l7=yKa;{S8^%&YvmYSa_e9ad~!V4tf z3#8v4NWu$bfa#Lw01>VP$PEne^fHqCd|Z>u$dE4(-D$)BjPy5=^a2?nkkNC1NV5dU zP2BPUGW^8@B<%}i6t`Q>C#|{F#IP60IDt%@14O1pfTVm|llHb|(ig}b|JJ0vK&A;~ z<{Th0t^$M`#Z%b*$WfPJE&amyMm+lilQOl3xF3JWgK|RTSyxUT;&FW5m4^?p5MOfT zwAd7R9OCIoF`dp9&9dqomN9#(sM7J^bCp{_rg*zs^8?SlHRTb+{HXw;QvqJI0({~| z$TI2~25`0~GuA{RGr+0I^aa_nOd{08DZY|iYhZz~7da^fa + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HRMS/WebRoot/WEB-INF/classes/entity/Employ.class b/HRMS/WebRoot/WEB-INF/classes/entity/Employ.class new file mode 100644 index 0000000000000000000000000000000000000000..183bef5652d399740928c70e3df6363c73ea03aa GIT binary patch literal 2305 zcmaJ?ZBr9h6n-}3jkp$#Voj71ETqXANQK&}5vm|a6hRHdv7LU{zz$s|BuvdY~B8hPx(Z)ZD7OE0xg2vS$R>XSF zL`qdb>)|sJNbA~wwDkXU3}_R7%ftnkw5I=%^%cLCfw2HcG32@?T71hUE{bo8zP_5U zy|%v91eOeZ8ocY(uG>6tI!WARPTelK@7Wj2DJ;j z>vyG!SCx3r0vL7oS3Z_tiyW46ehV}9Hb>wGss5#jJD4!=T}aXA09UH#Ra!H+#o%|b zp28Sv!uu|#u%K?a*6w!poefuJ;ex)S1-VDe@Y2UP_HjgHb|^)ppViKuRXe*;?d&SG zvqQK~(DM_uUgB4oUk3M>^#?Bhrp&HzjVt9Ou2MF&0VZ*cUu+~?=PJ%COd1hu>vj*9 zf2S0Ic&C&$Ltt4I;hMJcBS>_CEQvFrK(av~Q=vd^h6Bk4fy^-7tr0+kGXXM%&$tE| znf|q3lV)Tt6vzz22N}81!*mcxkwB~wK;+T{$mgMq%mx{m4+WABXJj@AjsPNE zBS5}DfoqVFVi3sPP$0Ka@|{2Ekzx?YeFAwf0*JJ&0GSU3vJeEa917&ia3BjoAdd-T zbp#NZ8v(-k=PHc+%-NHv+4~ENZ_{7B$Ja7GXSknU=0Z6u^0!)^KEvbm6D`k*enZQ} zGi;`xYk5KB7nIMiGbk*LD3ffk{-=0^O}wH!n8>~UMBd|x2KEalEkU2W^&YR)R9dAT zvep#4(aJ=7n6)yo9*R~b-op?HxA>z2o-^MI_Te@kh#gMyOU~yjOyf1?P*a&Vb@cuu z=SiEMjJ$e& + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HRMS/WebRoot/WEB-INF/classes/entity/Staff.class b/HRMS/WebRoot/WEB-INF/classes/entity/Staff.class new file mode 100644 index 0000000000000000000000000000000000000000..ce711ba4f376ca779b78e6832d6856305d29e53e GIT binary patch literal 3489 zcma)-ZBtuC6vzJyB)LhhZB0vSYHMR#EV(44l$N4AG=z523G~$LEr(Y) z&ji9X+jHwR0i*0Ty!DFxoZP8hyPjLk6>QI;J;u{|W7BixzKwcWAXIgpI91y3R;KL+ z9Tl-Fm4>skLsQ%9^%@;ucy)EAz={5}mSnnKaUwV=a4N_-wd+&H!n`SE;!T{VP4@P-QzPK4Zqp$@KF64W zi*(0Kir;R6J-=llg0O*pa+yidTS}{C!eDDgAj*sRZRNzEi6~E8rt4%<`)@6$u9%1+ z&Wu-?@mc^)MRe@&1GdqwOQ-uGl1|??VIppTVn=usGHIPK@d{Jipy*^$GKA88)5HE&_6o*gH;b*B=N;`YhPlg4fRUvz$Wl}d!62J2 z8S#$a9vE?7$H;zjzgxs;qV>Uk=KbzLc3;Ly_1(sbbIawViOFU#$o+zfh4O+rV;o&v z=A^o~DCJ0HC`YO~IZ}zqk*Y$DR0ndTyq6=Txg05}j9;+taC~a?O`}EqVy>1ca$FIHIqu`Sx+fl zV0}yJ8P<1|F0!7bpFPa~ERjE;-_sI1g?@URJkDbo7w`ox;(Me}qIpwY0Qd1BeF?55 z|8m1L^5sI-3oQOZq6_RWMk8;_OAauaNL*+o2w9=%t1$JN!G;!9-G|^{en@C&9 zo+h$ZGStM7l?*pAY9%90j9W>giM*AJHfdWj*2IjJj5kqipFct!3$WQgz2 z$7PDl5YFKW`sjag09Wbj8m?mm6ZAWcQOWw5;_+FDOlApRvLN$>Z&u)jEwiY=9h%Nz z8)r*MD$W=c4An72;9D&St0O3$G$YU)?HV9JEg4lYHY!GCTKpu1e;Y?$YGFIr9 zd&|Kb847|dX+bJ*{LTN#k)a^SBLaEc0fZBsK~}XOqd|}rEy$W4WHbn}Mj-1QK)B8r zWL+DY@gT^i7R1$uW;_T|Cy?z9AYA4QvY`dZ2SIkUAe(xSd=TU*fjsK~!d-?zs#=gj z5ae?$$d(?Y5Cr*>K)&h#!cC4rYFdz)AjsERkh&gZCJ6EkfqdHmgnKN5Y->S^L6GmX dAfM_%4*cb)&iVs^{MZ46TRej_sBpWm^Dot~6g>a{ literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/WEB-INF/classes/entity/Staff.hbm.xml b/HRMS/WebRoot/WEB-INF/classes/entity/Staff.hbm.xml new file mode 100644 index 0000000..1f1a6ff --- /dev/null +++ b/HRMS/WebRoot/WEB-INF/classes/entity/Staff.hbm.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HRMS/WebRoot/WEB-INF/classes/entity/TestDatabase.class b/HRMS/WebRoot/WEB-INF/classes/entity/TestDatabase.class new file mode 100644 index 0000000000000000000000000000000000000000..492af448b6abb1b16ac6d9719ffca971f19e7eb7 GIT binary patch literal 1842 zcmbVM>rxX*6#hCSgoHr|-iQ|zMNANE1r<$@-Edo11G*%eDt~q+O&BVfv1WR#<*{~u zgx#ge2k;qumaRQK8A@hAOa0S5)90M;eCPV{zkfdfSVSX@1jBi0D@z^ly7bh#P@*Y3 znMRUfY+t+=yd&&3f8E@dreYXewroqSFboum4Tj{J(~?;XAY&kfL59()Wy@{9+mvoy zG&_=Eyy}>u(-5wu|HH?m+Os@{i`6q+m&vgrDm8OYcE!dY?;MvL=XZQ!*_92;vk0eR z+l~^-a%_Sbt2%C*@B73o2%?|LwvyMbXAIb`&4(ZD5K zX2_VKm{{K~6a&z&*prt$Ln-Q|={SnJvTb?FJ>WGZ?3Qp_HR-;$Ot}-juliP}CEYA0 zG=T|R(*&+FtekTCJ#b|Wb;H0-OfjUI+6TkZk3kYv4z~?V;|}#lfK`*8N9o=argGc^ zhMT95qZ;L5+(j{s0>iavj-q-7W^s=p*OqF{cU@|TP);@fk_$@xJj2~6ta6+V-)nXk zTCEO0**sayA(O@fhFejKAiG;qi57Kz&GB7RdRcHR=w@DIm@UM5!0XqM$Ld)wHniDe z15dETFcReJ7?&FHR2UJ*e zfld5ETfuZC%^1UCXd2Osv5N+;x5&ux;01HZFcq^nHM+DSM#EYh&lJPsnAJDU4k4ZM zVx2u11B&)5S)@Y?hRbKGl8(`@+wuB}Z<8-JE13>;!b63jv?Fc+D%Ju+T6(n zeqWamQ=m;vs~$+u7j0-d)AYybW^|`!4>9y-AkNaM#lRSb=`{KZbdS&5-Y} zhWwB2iNcj~D=-1dxlXMA@sv7)^4mR77_tyXM66*8QDco*h#Bjqg&xG^>n#hth$zJT zim8Ueja3m9edy7?Cfqf0tXt4sQcg{K+rihHliFd)R8Pq){!a;{>Gzh5X5&4o>*NG9 ztJ4#@tc + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HRMS/WebRoot/WEB-INF/classes/entity/User.class b/HRMS/WebRoot/WEB-INF/classes/entity/User.class new file mode 100644 index 0000000000000000000000000000000000000000..c740dae32bf11592962468c4cea97b0034dc0c1b GIT binary patch literal 1916 zcmZ{j?@kjz6vfX#TS{33%RdpMi&be$p(rY71qBqSY19NEF~$!IY+wnrq}^(aui<0( zK@$s!CO&`eIm zmKaw-L}1PLq*{ug4}%7V zFsu-I;uIWrSz##A9z40z4TWn4f(Xf>>juU!&O_Gesa+u5jNhTQI5muH7!%YkZC+e| zNurwux)2KErrx@cLvP(O5SFbw3P#$j%cJ)a2D%XusFXlWD~u;{?fNuQ&k#FpQd50A zW1vSu-=)?cB+9%21HB4;d8c5%s+{cFrMK4ZF-sK97x%2=9joNXy51i=^6!Y!xe|J$u~|dAcRxtaKhGSX}8;Gu7wZ%M+BH;}x#H@U-Hb`;ESL(W~beNd3gf8AhWwIM9xXJ?YtTv2T0! z)ESb|v}ezXe~!Z$?tRy(?sL4N!Jqrz$cDcnO^xpL$Ob_+F9DHe6_8DR G_1u4Di6EQ+ literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/WEB-INF/classes/entity/User.hbm.xml b/HRMS/WebRoot/WEB-INF/classes/entity/User.hbm.xml new file mode 100644 index 0000000..77df7e9 --- /dev/null +++ b/HRMS/WebRoot/WEB-INF/classes/entity/User.hbm.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HRMS/WebRoot/WEB-INF/classes/hibernate.cfg.xml b/HRMS/WebRoot/WEB-INF/classes/hibernate.cfg.xml new file mode 100644 index 0000000..5c3f786 --- /dev/null +++ b/HRMS/WebRoot/WEB-INF/classes/hibernate.cfg.xml @@ -0,0 +1,26 @@ + + + + + + root + root + com.mysql.jdbc.Driver + jdbc:mysql:///hrms?useUnicode=true&characterEncoding=UTF-8 + org.hibernate.dialect.MySQLDialect + true + true + update + thread + + + + + + + + \ No newline at end of file diff --git a/HRMS/WebRoot/WEB-INF/classes/service/ContractDao.class b/HRMS/WebRoot/WEB-INF/classes/service/ContractDao.class new file mode 100644 index 0000000000000000000000000000000000000000..a3ea8b2cbb65b6ffcbf30fc80d7a521ad7e1e5ad GIT binary patch literal 407 zcmZvYu};G<5QhINw4p7O5a1Dz(xn*~i;$p*DH20AHWOQsD=VSyxl&$@fd}BB5Kc-c zqD;P%zVGh*e|)~Z1Gq*Mphq}gE4$ITN)}bgR^mPMKeI`t#GK$rXyNuJ_sEn;Hi!JD0rT7g-E2nJTiTCwFOTyKE_TFND zZY$pz)A@ubo^Cfg)+R~yn&*UJri)Urv#Oc>7r5D*eCwT2RymuiM{T?mb_;w^v*u$1 o0^z_%3iN$$eGJg#7vQLUhu{4OiRUMt?%~u|VOyPj0f($@&Hw-a literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/WEB-INF/classes/service/EmployDao.class b/HRMS/WebRoot/WEB-INF/classes/service/EmployDao.class new file mode 100644 index 0000000000000000000000000000000000000000..64ee28e3af557e40deb28a18802738bc58e1fa77 GIT binary patch literal 387 zcmZvYu};G<6h*HKZQ4>o8i_ApNf$CO79oLJrbrCgx|#SXa%Ga@+LiKa4153|g>d3l zl_Dm;C!Krm^Zoh#`UdcTIKY5mz9)T<1*PkcovND^uLE2%L|cB~sp3_czP)d$Fboqe zgoha7B%{hm(;Q{X#fD)fNRgovbDLymliX-ol^(M@!OvLqX-PL;^wO-QV7U8F*$ZR{ zJK?iZr@%N__(W@@N;A1POLuiH%ZeMTsrBsxk3H8XrQrxYVzF8{yjjZuo(xit936eQc<(41F#{ zU>K%JM%qeSHKOJGona(Mk)@WnOR}RwZjIDsL%E&c|J3-?k*R{@rCLkDaDPd68paR@ z*|Sn@*esbhY0gTOW^!+r41-*jnp6Ddz>% literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/WEB-INF/classes/service/UserDao.class b/HRMS/WebRoot/WEB-INF/classes/service/UserDao.class new file mode 100644 index 0000000000000000000000000000000000000000..93419cf12b48dc89c319e63eb372bb3cbe5a5293 GIT binary patch literal 142 zcmX^0Z`VEs1_omWPId++Mh5=k)S|M?n9?AgLj! literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/WEB-INF/classes/service/impl/ContractDaoImpl.class b/HRMS/WebRoot/WEB-INF/classes/service/impl/ContractDaoImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..6b80767ee8c683f78733c61d89871b25013204ac GIT binary patch literal 3848 zcmb_fSz8lV7=BMO$sk0vBi%w(7KoTVZx(B<9pT@eUhHj0Lo5(xIk z=LM9}QeJOI5FHVyXcO3;Hj4UmWhJYdb6U2b3q;eUoK~3EOhc~SO~qO=$^!e-o{?70 zB?UUPeBQG!u(Lm{7cIl8*1|}}7uwK8Z*oSy4Z8%|Jn44qMoh&Xfh`rwC?xLjCxUOV zmokgGHLbsz$_rfVPj3c4YneuIG1Jf;2$pm#La9YJFhSySe1ZQxT%*yJEMsd#6 zie<*bumpOVbo!2Mz2_o0j|=2hSz9B2j{EU*_?dJQVw4y&c~vmpNN(}=B_vf0)AM?- zd?q5eEO{Evl~z^^s~ss^Q*o7a-{isg>zuwSy^UbR=JYCgVa-}v?gbU)=#$71uqG}F z1T2zzZ$nyq#>r^4>?BxVcY~Y@J7og;DuMNpuI3RBx7vk%nCCxpJ;9J|Ab40Z-E4o?rM6OruGVJpQ zZ;ey4>xFR6~2l$OkX{Y0`0S-^bm1hr;}0| z2SH-;e~6D-m?PgA{%+wa!I6+6bo^(u|HMfE5myM2q z^3Fgs8r}H`-5;?}WIo~0I{F2s2iI{@ATv0yj-deVpIFC5ffIiqBr?i}>A{b<;@=8> z7*?FanDQGHZ^Zx~;FLX1(1@JNF=#tDk6oO1p#wW9(M_jzbEljC_V8JWp^xv>0OL;J z5Kdz+Z|}npPcC9V^&G@??vLRBHTGhX>onKXIARAp>s6wdd;f5Sjf1{JX%?GzOn32$?tV%@^=?qUF4Br`Ha9ciMQA+k5A?G~TtG_G-dooLG{c1S&5 z!+G2#b%44ZQg^UK9Gv@`NzD(f|B2Mkpt+>}f%H=8+JeZ4X|HPxE0V#oZ^RTIv!@+G z4-SW2+J=9WlC>UEcTh)dg+!Iqmg5YqooA48bl`rc`aZgfKtF6+W7yct(9$f}SJb&!|}=wX@WgqZZvq@r4@n3pI*A zaG_T)ZxcI6nSMJ73N7rmDX!R^rHar7jjJ`P+HEC4e|vxpy07?8>~6EchS(sV`igu* zDM-a$F=QD`0C@rxU`Vp_|HWAw*Ljf^ndoz0_M%JEZUWOWg)hKz0K=hJXdV1;&9GkN z6ELg}$X6g8Q@td%I0(BkVcDNlR{S+4QH~F3_Zn{7qhdb>%WU?*GJSf%Bo-)DWZjhb zUKLr!tE{M(Q6AV4_SvR8qtu0fMxja1(lzURG#LR<)PfSJWfl zSLfzy-jvVCcQV;m&}OHUWmi?f?vzj&5*Pk_yN9)WH(W{KD;Mm9I|T96P}*sKZ|Ow< G@BRhF@BY95 literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/WEB-INF/classes/service/impl/EmployDaoImpl.class b/HRMS/WebRoot/WEB-INF/classes/service/impl/EmployDaoImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..17eee51cebc35fe9687cad3caaed1a9f77c9fdbc GIT binary patch literal 3810 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 literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/WEB-INF/classes/service/impl/TestEmployDaoImpl.class b/HRMS/WebRoot/WEB-INF/classes/service/impl/TestEmployDaoImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..1d53f2cb5bbd82e0ab448d595fbe1930d86d85aa GIT binary patch literal 1921 zcmaJ>T~`}b6x}xsOcI8#0I5Z#&{9mAwyDJrG>9V5ni^dq@zD3Yk$8n`0E!QDtU*7fBGn-Y?4ARPKhzkt21!_w* zhJHlVZ%9W1X9aq8PK1jmQ~5xOs?)YnC4p{}I>`M@J)tPxKuSZh?dA&m zzBDU3E+frbbF0J~s%K-lnY*6l$b$4tqmqqb99MN*Lx%LFORMFqpA25N^6Zw#ykEHHIS-lr(>vWc7&huLzu8E#zF=s51^ zxQlxX;+t~LWfxGYWG+?IP-rW~c|)=hdKC+~9o}SbAfZ=E8tH{>(KIH5p zS_Tn%L5Q#hq46=)=s;wF*;CV)W|Sax@{E5RpMQdzq}mcD#yB8MH-?Xi({m(F{#4Xo zh^o||Kg2l2S-%}e^6#i}q-HyuB;IMdGPLt0?Q@!7w_5&S2t-`#A4Amhx=y}S3G^PTT}=j{3Y@2y_}jKk9q z5ja(o-hHbg4Xe6l8%0_3i=JsYS4?-72O6RRy({K@)38lv$+)qwA}hYYktxfu{Aq!X zbfzQ_opBds93AM=(TO7hNAs2=3-#)P^or(!Ed`Q!w_@5Q)3elfco_AUt(w4a{(nhK z3iK&rx9ZZ{$k}#4P~iCOy5n0_S+Z&tA#;x7`lfHW4iS6vuD4{Y)JZbPX;MRy9_?ZF zg{K*84&-7hS zV5rS|HasW7Fh(_uP@O%5)~${+I7?|A`56TtXd&z?1Cu%@pi8RYZy13pU3eZD4e7R` z&2Q9vS=DhKSr*K#6K=4XjO7|PJ*;8dEZc}7c$vtTT z*#!g(+>_s*Haldfy}vfrT0J&$0AQ-!bDF;0^S)VGoio?Mw$xR(U6+1AKA2sMVTP*t z7GJIkbOtiVaUHW7-WKQz`r!_nLdQFJm%1&5egc;d$@vf!{(HotDh9d5#V}e*HD?Mp zblk)(#;8eu#%1?YrSxp36vI4QXt(j@A6r|yj~?!9fBx4Gn>*h>Qa*Qdl!8*wr(jlP z4DXY5({|^Zua!wz#|O$p!4~Um*cd))+U$Py)6N$SW%G%SPg^iWikrX!7By5@pw>?n zaOK?4A#smrW=NlZZ@OLcOgWBatZ1-Ux8_fJ&m*@7uD5FBY6SFktiq-aX7F`&y>8m9 zdS|*^R`W)1pu}47)NDD(fklnayLGQ3uUTsP3?3Y87gbkb6f7-=ArR#oCl^(ix`b6kcceY5FR%&AT`F_9jmT5P3?7s0N{Nj%jotvOw<8G^Q9ONS!>B zZzZoh!8KCd6DH0$AWSz->=UQwUvct>qJB$MrT)Y=QWR${pY7||ZJ>}%-fp0nO}^K_ z-E8v120jken~PqccxD7ou(TKa3}OU1&2^aik1(rIoaFEv#aT*~;v_n^PpXNKR19ON TQXoMa9S&TkAh1TH2-g1remAD# literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/WEB-INF/classes/service/impl/TestUserDaoImpl.class b/HRMS/WebRoot/WEB-INF/classes/service/impl/TestUserDaoImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..6aad0514f31b001d5fbe44f1602f1a5863e50c40 GIT binary patch literal 852 zcma)4TTc^F5dNkYw%xYSt`(_bxd_?-^_e7-+z4l2B3wOh6G{JlkSP?OH++MjLd!M`3G!yE}UJ~ zHKYi|p*RudNZ14OO>ZdsK4IpGvX%dokgU}^gw!+VNa{!;n@1WmggHyu@^vuoNq1lL zMv`DyPG5{V!d0Oj8&m#!I~DFx1`9k@quF}+=y3)&+27Dn z!eThjZGu&^E=bt(U1bm2|6|$xJE-2#utZq6GV&$LbyShfVHIl{?l6w^gSnV`|_m_9ieFM-^FyKn}lQf%S8g4vlNZb>l|Ls7!Fn zI!E8qN|Fk#EtH#+WN4@4QYMo^0Qon* z@t`kieNdl#@HhBV)Vj`@NtiT&&j%keXU?2`U3=|)^2a|v{{rAVzR?j9h*d3T+s<1F zyR=nIEIX!Mo-r#6-008*-rF>{%|y{GuO}9Bn^xY{5#iT{QbS%Ka>Xv&Zc3mlKD;8J zO;-w554zB6Ku5R0yJ@>@WoxCJ+4wjKx!#fQ@sXFaje&`h*S zBzrN85gjM#;%#yUPGQt@F06o>}$ z^Lvh{5@SY>ZJs;TOZGauv*xh)$J+$1wAxH1yRj~SZrB1n51mSBs2TMm z14WdWP2RDX%?%l{z;MSvTbZOpN%0CE>mWrAbT~HPAkWSzGHQa@o=4Zl<08kSN?Ee3 zgAHao&^n{*Ta7tAw8vsw;yRwOGg{#z21}Kilegw(NKSopWiX(@_hAOZOc^M;CW z<<-IGKJF4+i6p`&e?-ssd0) zjPN#1sdbJ{>?Jqzd=kS*eNfsCfLg? z=qj@g;ieCEFFkr-4-xoVEQLn>C~h}lUqtvHjCrsV?$-dXy$SiofkHl_kXN5r2M_wY zO_HY>iX{1L2j~g>z5jxB3$a6_+zEyCQH;~@2_hv|59^zFU!fAh1l>*&>j`2##eAnp z=^5%?Cr#5N_$)Q&i2XHIVxBf6vS|{0f!4m@C48NlX=-Kzq@Hc!JnNG>M7tiTd)Xcy z&hd6q^RLwZMCz|$`lSArDeFvjO=Lv2F*U|D$zVA*Vp@RNS&z`8;}M^>k?*8rbB44W zv`||kNhP)Ax=3#qnWS7jxbJgb086a#G9^|R&noB33SqiMvfakVSR>i*P}d}>b0qW~ zTDVJ?@8K%$6TAnsXAT3-lcQBNmVsg5{!2c*k$-y@I+0UU5>*&@~OAT?`Z{TxX}zboBV;XOO%@D@JvG5M~FDb)*kypUDJ|b^{bWCp)vBN>c zmx;*vq_g8ESVXzrrr!yCsa8#02Adr4fX$dTS;R+_DzR_Myst`Z;|e=!i`;(9zxq|q zDVLL|Mmx_rpI)$tHCo$dH#}h{J>|@;)An=H;RTCQrN+@`5;{}iCRlI(uvzatDk;20K^5F1NW%=Jz47;)QH1c~Uu#k6ApigX literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/WEB-INF/classes/service/impl/UserDaoImpl.class b/HRMS/WebRoot/WEB-INF/classes/service/impl/UserDaoImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..b43d83b8f09d554cca88097efa16e208d091437c GIT binary patch literal 1865 zcmaJ>T~`xV6x}zOt`+ZAA1l+BND3V3__WOhlGiNT@~;cT^Mw@w zZN^zwDa4W1A<;*VvSq7{XJ7MCb!oxls6F?t^1Pb4}P9qm&nA_e^uF3^|w$V^i(>cRl&uto> zx9zy=Q`0F7BP%f?Ft%PTR(5V%Ow%@ewWK`Ha_m{d^c{Cc#|exI4Ahk0s}RWL3uVWx z6*oGb#a@e28Yl6V#3_b&lbwznPDdeTny$;*+BgE){|iCvvp6qtPGIP@*gD?E1#(qY z)M@EP<1+V0NiP+=7mATog!~t|B4#n#$cFwfXXXUo82qW!Fjv2?$L~DNLX! zahV8R7p3DJT;UO!4DKhm6oEk|^9pL3efqw{djiLLYYX9Ze1H!HbWiz4-rf=1YWuB3s8~9Y>6JAbla$PLy zm~Cif=rv2XAseRQp;5q!+ycf#CxX z?cSt&;%U?vLkBFPCSdPHze&I0a)|IiUDGM5)M?;{%EDUy%AaRO|dE z!^3{`bFW7RIE*8d2#*1N=`8*xXdlmh5|vD5Av3t}D~`7?CNQaGwHD3@RI=Jc3;7r( z6WK)k;!9j=;oUe^vk8sDM;)OBQZSjMa+;l$Y~iNBbEGf*iG-+VFQPU6B7l8~&-O$a z?XvO@CX&D^YV4q3-C|NT*x?#y0f37!eg{~6h8BatyhIwuSvHw?oI9$M^+7IU~vlBJac*G(|Zf&@r?5Klz%`WB=3GiP@6nb zg}YcJeKGuqd$`XvLHi{vvw{pB@V5euSTl_LIdyZ4HH9yDAr|o-G8YYBv63f{yG%+- y2#E=a8xoHs&PrUBd~gtnT?Wy*wSnQCf1vaGTHV@i&=x%&;K>?;2^jpwQ2h@`kGIJH literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/WEB-INF/classes/struts.xml b/HRMS/WebRoot/WEB-INF/classes/struts.xml new file mode 100644 index 0000000..5478756 --- /dev/null +++ b/HRMS/WebRoot/WEB-INF/classes/struts.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + /user/User_login_success.jsp + /user/User_login.jsp + /user/User_login.jsp + /user/User_login.jsp + + + + + /employ/Employ_query_success.jsp + Employ_query + /employ/Employ_add_success.jsp + /employ/Employ_modify.jsp + /employ/Employ_modify_success.jsp + + + + + /train/Train_query_success.jsp + Train_query + /train/Train_add_success.jsp + /train/Train_modify.jsp + /train/Train_modify_success.jsp + + + + + /contract/Contract_query_success.jsp + Contract_query + /contract/Contract_add_success.jsp + /contract/Contract_modify.jsp + /contract/Contract_modify_success.jsp + + + diff --git a/HRMS/WebRoot/WEB-INF/classes/util/Util.class b/HRMS/WebRoot/WEB-INF/classes/util/Util.class new file mode 100644 index 0000000000000000000000000000000000000000..4892ab9bfde0b749e1302ce41113003eaf38d7a0 GIT binary patch literal 2695 zcmah~*>h7>9R5zWo8<;d+R%o!P*9*LZ3Che(uzs}iL_;Di-HT@rnl*ZBsaaefz}O| zx*;yS>G-71$T;JS%Z#o!1gsEuTpo9XqS1Z2@1OkvHsp0`B(sNdZs4 zIj#rcMnHuZK7q9ZMqVE(<;HYtL>tTM0+9hTtz}PYmLcbhiynK@C<=rIZW`Lowc2_T4iL=`ktg;0S}u^x?#v{)J|I=BMs+f%6; zP!c4jVgs7#sBMlG3cA&=6&X@PdkysfTCqvN#%h~0MO)9QXv1cv%q%g3(TdZCnK;I< zYhV24ML7vFw2~s0J@skST0*xyZx4&d$$92n(9gL%> zXIaO#oHpGaL_4}<*|tk5p<*X?vA`PR%(DbtwM?u^_#$|(AG_&ayluiVb8QmuJ{3JO zbAH>bBtD2eNGjMX&@w)j7@Rq5kRy4`)`#_C(J=Few6twnGb(z~C$NrOsNN80W7Aq5AS`HPO zeoW68`4LOY7a0%35@=n8xoq3PeN@E}46r(Ba>3S*mvn1JAYQWo)y5rFVhrJ!f}~h>2ruHInA0G z(sG2Q1I5J`Gt-Z?ZSz2BfkN?U$F`>6;Gbau?4 zJ8}<)9sHley+iZ3e*q5&Bz-a80{R68W4^8hq+D!oF=YXR0zacZ>4|x+Asq8W>gF)~ zAzCD0%sY?Ah#7gJf|c}K#hI9g4m_3g$NcknrYA5P5YfOqCgj2#CVPVJp3qgq9DlMr zD_5l-N&jp}L_>8-G&ufo`S<1UH&r~H3t**Uo@BW58oXjK7XC`QJ%?hg9d%Jj{fSB1 zgzLCLV)H8^OyUg@aK3K7uE1xAJ85uAASd@-+JBR=4XkN8A>!is;6E%=ge;V=CDhOPJm+wmu#lk4clU#$G! zlyA`XKj=W2FPayfB7klYMnbHm96^_8;Jk_R4cO(7VOEkrv|<`F^jS*JQsO-k&3F#a zlU-iwzrZy&{341MDS1#w%!`z~^#5DDgqKOMQGAM5@G6OP1tXZ{uAkly;x)z-pznQn zgHjM*FoHKJh3ID!o5Sar;P!A^11>b5l2nBYTMXL#6JLmrw;BuKN;TqtJ<}dRr@GeIe-un-? CGG>kd literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/WEB-INF/web.xml b/HRMS/WebRoot/WEB-INF/web.xml new file mode 100644 index 0000000..748c00f --- /dev/null +++ b/HRMS/WebRoot/WEB-INF/web.xml @@ -0,0 +1,15 @@ + + + + struts2 + org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter + + + + struts2 + /* + + + diff --git a/HRMS/WebRoot/components/dtree/dtree.css b/HRMS/WebRoot/components/dtree/dtree.css new file mode 100644 index 0000000..d91d624 --- /dev/null +++ b/HRMS/WebRoot/components/dtree/dtree.css @@ -0,0 +1,33 @@ +/*--------------------------------------------------| +| dTree 2.05 | www.destroydrop.com/javascript/tree/ | +|---------------------------------------------------| +| Copyright (c) 2002-2003 Geir Landr? | +|--------------------------------------------------*/ + +.dtree { + font-size: 12px; + color: #666; + white-space: nowrap; +} +.dtree img { + border: 0px; + vertical-align: middle; +} +.dtree a { + color: #333; + text-decoration: none; +} +.dtree a.node, .dtree a.nodeSel { + white-space: nowrap; + padding: 1px 2px 1px 2px; +} +.dtree a.node:hover, .dtree a.nodeSel:hover { + color: #333; + text-decoration: underline; +} +.dtree a.nodeSel { + background-color: #c0d2ec; +} +.dtree .clip { + overflow: hidden; +} \ No newline at end of file diff --git a/HRMS/WebRoot/components/dtree/dtree.js b/HRMS/WebRoot/components/dtree/dtree.js new file mode 100644 index 0000000..049a3f9 --- /dev/null +++ b/HRMS/WebRoot/components/dtree/dtree.js @@ -0,0 +1,347 @@ +/*--------------------------------------------------| +| dTree 2.05 | www.destroydrop.com/javascript/tree/ | +|---------------------------------------------------| +| Copyright (c) 2002-2003 Geir Landr? | +| | +| This script can be used freely as long as all | +| copyright messages are intact. | +| | +| Updated: 17.04.2003 | +|--------------------------------------------------*/ + +// Node object +function Node(id, pid, name, url, title, target, icon, iconOpen, open) { + this.id = parseInt(id); + this.pid = parseInt(pid); + this.name = name; + this.url = url; + this.title = title; + this.target = target; + this.icon = icon; + this.iconOpen = iconOpen; + this._io = open || false; + this._is = false; + this._ls = false; + this._hc = false; + this._ai = 0; + this._p; +}; + +// Tree object +function dTree(objName) { + this.config = { + target : null, + folderLinks : true, + useSelection : true, + useCookies : true, + useLines : true, + useIcons : true, + useStatusText : false, + closeSameLevel : false, + inOrder : false + } + this.icon = { + root : dtreeIconBasePath + '/img/base.gif', + folder : dtreeIconBasePath + '/img/folder.gif', + folderOpen : dtreeIconBasePath + '/img/folderopen.gif', + node : dtreeIconBasePath + '/img/page.gif', + empty : dtreeIconBasePath + '/img/empty.gif', + line : dtreeIconBasePath + '/img/line.gif', + join : dtreeIconBasePath + '/img/join.gif', + joinBottom : dtreeIconBasePath + '/img/joinbottom.gif', + plus : dtreeIconBasePath + '/img/plus.gif', + plusBottom : dtreeIconBasePath + '/img/plusbottom.gif', + minus : dtreeIconBasePath + '/img/minus.gif', + minusBottom : dtreeIconBasePath + '/img/minusbottom.gif', + nlPlus : dtreeIconBasePath + '/img/nolines_plus.gif', + nlMinus : dtreeIconBasePath + '/img/nolines_minus.gif' + }; + this.obj = objName; + this.aNodes = []; + this.aIndent = []; + this.root = new Node(-1); + this.selectedNode = null; + this.selectedFound = false; + this.completed = false; +}; + +// Adds a new node to the node array +dTree.prototype.add = function(id, pid, name, url, title, target, icon, iconOpen, open) { + this.aNodes[this.aNodes.length] = new Node(id, pid, name, url, title, target, icon, iconOpen, open); +}; + +// Open/close all nodes +dTree.prototype.openAll = function() { + this.oAll(true); +}; +dTree.prototype.closeAll = function() { + this.oAll(false); +}; + +// Outputs the tree to the page +dTree.prototype.toString = function() { + var str = '
\n'; + if (document.getElementById) { + if (this.config.useCookies) this.selectedNode = this.getSelected(); + str += this.addNode(this.root); + } else str += 'Browser not supported.'; + str += '
'; + if (!this.selectedFound) this.selectedNode = null; + this.completed = true; + return str; +}; + +// Creates the tree structure +dTree.prototype.addNode = function(pNode) { + var str = ''; + var n=0; + if (this.config.inOrder) n = pNode._ai; + for (n; n'; + } + if (node.url) { + str += ''; + str += node.name; + if (node.url || ((!this.config.folderLinks || !node.url) && node._hc)) str += ''; + str += ''; + if (node._hc) { + str += '
'; + str += this.addNode(node); + str += '
'; + } + this.aIndent.pop(); + return str; +}; + +// Adds the empty and line icons +dTree.prototype.indent = function(node, nodeId) { + var str = ''; + if (this.root.id != node.pid) { + for (var n=0; n'; + (node._ls) ? this.aIndent.push(0) : this.aIndent.push(1); + if (node._hc) { + str += ''; + } else str += ''; + } + return str; +}; + +// Checks if a node has any children and if it is the last sibling +dTree.prototype.setCS = function(node) { + var lastId; + for (var n=0; nL5pUwHh#)|&qvH~*i$ctg{~K6=ubY4`r0 zy?Eo|&4&z;Cq94reEQOjj!AR>|NqZ0IDq0$7Dfh!AO;U{=#=QPfqp+`In(BeSkzi-NR}#lABKB%~EuRJEB+PG6VMR&7zz6A)#8{YF$k zPpL)O!OM^9`wv?qALSNJnE)FV36BfRLVTJWsTB_wENoUWm-DE3pnOrJ``g+7o}HwDfriP+%H`z#&d&S!*Z=kE z|K{fCzP{+0nauzH|NsC0A^8LW000jFEC2ui022Ta000D>@X2QgDb|R|oC=38x?@%aA z3XHC|001ZuX$Aq%mYc?Kr_IsGe7zvW*%XUnbb L&G+VrGgt!vQpOa` literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/components/dtree/img/folder.gif b/HRMS/WebRoot/components/dtree/img/folder.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb129763dcea0dc1916b7e934fdce2fd8770c380 GIT binary patch literal 372 zcmZ?wbhEHb6k-r!xXQrr`}gnn@893v9&~1=$&)8f4jw$XxRCo$zt;Bc+vnx5?P^z= zlf`m!n&I9q)y<94Gt(JwZ!g^1B)cGw zMSgXq@QJAg2YNM*9XqzJMr>9F(~2^IHB}=2ujK##G5PiD*Z=>|`G33g|C9Rv?>o0` z+x8y>W-^ck6o0ZXGBD^d=zw&C{KUXE(P4UlhmKVLi6xgzC4402GB{W!L~2f9POOq~ zU`a4ovhaqB%+vz~Nx8dkFFrrvqSej!Kd!MF9@+A*p|PG#+gVIkwX>^RSE$vAT~}-J zl&QL${d#h`nsevP*X5qctE;hW`3hadnOwRm>o;uF<*#vKOczy ZVbwl)>NG2h3j?FtrOQ`>yuBP5tO0@?i&Ovr literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/components/dtree/img/folderopen.gif b/HRMS/WebRoot/components/dtree/img/folderopen.gif new file mode 100644 index 0000000000000000000000000000000000000000..c5c31102d525076f68a946b1c942687b3ce0da4c GIT binary patch literal 376 zcmZ?wbhEHb6k-r!xXQrr{{8!<#k{|N|2{L*q6oUN3z&7>3 ztO5@mss0m7f-EEygfto)EEhyd@^~j!tvR(XKI+JllL;CPicM^J(Q8*-F>q|Y`M%=j z62+dM{~PKQW!3d-jdOF2Weio>+e{5RD$0%I4VAejFig^&H-8?Vk|_5Crb$NHt5$3C zNei(}Fr8zpvu*n}0e-m}r{#G~uV;mw0cLrC^)_Z0DGV33b1Po(Sa(>zf!o}J1>$0ZL+5}+6JHr`< zs59<2ADD$k0dv7VSPBs!85|83W2YWrU{mu%Hi8cua%jT}X0VKs8iV_@s~cN|4IQK7 zlgwVZniU_ug+va|$vdW0wiwXo*|ykB@De?HwLlJxC0N(!S8i(2E~|v9(_+$dE1QD4 z(6NQB0}P|~wBw2sEI5NRJ4=uuOa5tsBHg+7q6Hu5dC6C#RV~P$5g9p@LhLx0zT1=#$;61Slp z{b$G3Cq5tj+aRnLm}j%g>meJip=3z4fBc6cC?X}jzdC>`>6~1Hyp7=2MId*?rsV_o z0IrGVmN!ePo4-uR0e|!Ywb#GtFWpGfTw^6849G2ChCzJ@XGmPPTIixuZ>)mYL-;TxSo$E#hk&Ui;z3lE682RvPTxRDt7BWAb0m{VSvJ=cgb~yz@9V5_O(cZFI)`$`ISCTU`DjBw zyS8egLnhurnWUI?_PR)I7%9~+D!e_EXKRJ1r3zig4{K%xOvx2|%18b>$me4+u^7Xq I@p#1QKgm$!SpWb4 literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/components/dtree/img/imgfolder.gif b/HRMS/WebRoot/components/dtree/img/imgfolder.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6d880347f518bbd1239f2af3e3059ccb1e674e3 GIT binary patch literal 622 zcmZ?wbhEHb6k-r!c*el+{{8!<#k_3u{{L^wI(YEl_U+q$|Ni~|@MghDua+)ZG%JH? z-TL((7IrU~Kj+DlCo5O3lwA7%*s)`qHgDa!eb@j0OBdvEG*;)$$zqw8!`56^^k}p5 z_Ya-7_UFu)+TYb$+uz;v|9Z=kBA(5S(&rbc{eRsuGoA72{gy`u15VE{KDj_~ajDeg z37uzVnk*{dIyud7L!HE&S<`mx+V>;JX-$>L)2C0b?{GLaORBB0{O{F*<)!?K3%Nf$ zsam#d+5aDt|39h!f4lVm`_9*|U#E2~`~QE=wr$&f|N3)mmgIjBn8`2{fZ|UUMg|5? z1|5)NL2<&se!9W4skx=K)lgW7o1c@{KvtWf%~RNQ+VpAif|G?@nV2{@=DW(VPUdzM za9Zso;A-yDro->*#N*D+IV1gO z@j_>Lk*uD81ih2?D)vTMXLcNRa$tCI39M1!eiVTiL RukLUjIIv`XD-$DwH2~IF)06-J literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/components/dtree/img/join.gif b/HRMS/WebRoot/components/dtree/img/join.gif new file mode 100644 index 0000000000000000000000000000000000000000..34dd47610a5d7c3580dedc342683559bf77abce2 GIT binary patch literal 69 zcmZ?wbhEHb6k-r!XkcV$XlVHV|G(l-7DfgJMg|=QAOOiQFv;}DH=KUEdfpt3ORshA Wx&LIzk};W<vKC_i literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/components/dtree/img/joinbottom.gif b/HRMS/WebRoot/components/dtree/img/joinbottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..48b81c80a9e25f6f29e2614aaa33bdf4a4d2881b GIT binary patch literal 66 zcmZ?wbhEHb6k-r!XkcV$XlVHV|G(l-7DfgJMg|=QAOOiQFiG~vH=KUEdfpt3ORshA Tx&LIzy5lkJS?4l0Mh0sDgH;v` literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/components/dtree/img/line.gif b/HRMS/WebRoot/components/dtree/img/line.gif new file mode 100644 index 0000000000000000000000000000000000000000..1a259eea00c330eee85fb18aa64e2e232d5410b1 GIT binary patch literal 66 zcmZ?wbhEHb6k-r!XkcV$XlVHV|G(l-7DfgJMg|=QAOOiQFiG~vH=KUEdfpt3ORshA Txqp6J8?ND(@^elGBZD;ng_;%{ literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/components/dtree/img/minus.gif b/HRMS/WebRoot/components/dtree/img/minus.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d212a97ae0d8f83aa39836c5a85d442f8602553 GIT binary patch literal 86 zcmZ?wbhEHb6k-r!n8?h~)YR0_(7?dJ@c;jR#h)yU3=GT+IzTQ^R)~RtNqvreafzu-gC3m_gnAtsyGG)YXIxA8@>Pl literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/components/dtree/img/musicfolder.gif b/HRMS/WebRoot/components/dtree/img/musicfolder.gif new file mode 100644 index 0000000000000000000000000000000000000000..f620789feb3c4b1222909d255f51aeaa81faefb6 GIT binary patch literal 633 zcmZ?wbhEHb6k-r!c;?CQ|HtI_d&1|;T=V|@`}l;_ON)8`KdAow`}didCU@_DGciej z^5n_Eg9rbA>8q=`<>xo+u1K?DiJW3#)C#D)aIvB91 zfNOew_W$>t|Ni|e&CM||NI81&?f=`QuV26Z|9{T0S(4kfZTk-bGZ}^gQ2fcl$iU#q zpaXI&C{7sIuQhl!HMg)hmVUg|Ta9<%L zB*!hNW#eGnvfRbP!^OqjoL^Um#e}(8(%psk*bWzm73wnj%>wQWm-x821i3D`7>P8w z-n-|h>B!0H=xU{*=yrFzi#XF`MLGYlFIxARNO@hDtWaBUIiPTOMfV7_}lvsu=hh(Z;&NfL@qDJM29Jw4q( Jn2m+O8UP#&8=e3F literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/components/dtree/img/nolines_plus.gif b/HRMS/WebRoot/components/dtree/img/nolines_plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..f258ce211a0a19c2ecbcb11170b9a8b35ae2436c GIT binary patch literal 870 zcmZ?wbhEHb6k-r!_|DAG)YR0_(7-SXMnhmkhJfNv7DfgJW(FOQ??HKjfy0@BokPZB z!-9j&9Ku>LGYlFIxARNO@hAj7*xx83m?l#Y_`t1M|Ba{La?4kwX3c6}c&WZ`PygnpJ?rkDyZry# zum9<}^Zxw(U)#BD%KlHsjvf2=@89j`-!lsq`N~Rn2+cXw3F)`cNXo|{M zwn^yh*lA;L&u+56RaJ{?r=8t#bK_Gj;^%BG95Yu?zS_*U>z2K_g$4ipCbgRvpFHC> zdg-Vu`PTd?H;48ok#7ReIGiR-xW0J7!Dc}Y2`z_&_QUOboFWD+3JrbT68dFMM=k~^ HFjxZso}Jb2 literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/components/dtree/img/plus.gif b/HRMS/WebRoot/components/dtree/img/plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..b2c997233b3f7b0fd56c4637c2c20aaf0d47bae7 GIT binary patch literal 89 zcmZ?wbhEHb6k-r!n8?J?(9poZ!0`Y7e;}#&lZBCifr&u}$Og&^0ohtp^czmUT|IBk qf~en0XVhiRX3S&EJ6Nfhb5kY1Re>f2&SBJ{1ibDv2XRV|Dor_^WyXB*=Ku>91RN!zTl3yBbIVx z(geQ%ggTf9umTL|phE>VfGW0dOs3%S#nN%*vE*Enb)jBp9@2x>3JQh1R%p`NKy3y_ zU3YW4U}Q`#nViy?7fYC*mTrH-X7dccKo2mX(s=~L^<(g+r59TS6iqRkj2so5zx+t0 zo0(kzz6vnCo~H$RBRBH)J1GX_SNvfE*Z~wa*h)-iiw*S>Xcn2f6(IYmN~W^Xa^K5L zAex2;PwPjN7>)J4^$VxEb>L;|NOI2mP7BNcjAM&;D`d1LQE7F1uO6=7d%+o2q9~a& z^=HF5f%;G1kxWBiba`M*MXx~Y7eUYLsomU#>SdCrPUj>1OFJ?by71aqM(w;SNCnf+=v){(2QoAPYLn^Co4umpI zZBr+TQf2|-$OSB}T&RT}4J2kXT)9=qY~~&gO+?Wfm<{S%x+=cSPXj28urVYrD5gv> z1x&7r!xs%3p=C(_v_;&ng?=lfkaLrYG$*dMwTX12GNmWsd~wr2�PO#XTOK|5d)& z!4vms05e%S6&9cUdCfvAM{4}`Ll&Au0|4ZI{x#q|zXU~)a%9_I{Pz zF8K#`U8CUK$V+kftzmD{56XRA*JOAEn0*=T9qYDGam8&jKK%R;2frNVs?fakAt(1x zVoBrOZf<9tZI{^DPQFJAYw$bp-YzSMPP;$X(ujj4M^>&|RhjNU%J*O1o>2EXGlIU? f&E;Ccsie~d>oCoZ literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/components/dtree/img/trash.gif b/HRMS/WebRoot/components/dtree/img/trash.gif new file mode 100644 index 0000000000000000000000000000000000000000..cfa0f000e1ed3b61c8737fcfbef4b78035a6abe7 GIT binary patch literal 1051 zcmeH`!B0|g0LLGK3dPJgm@T#>b?KJNwY61t2y23!a_iPbmlJ1M5VKlN19e8^5=^!z zbD)u~Nn)UBz(^5iXd;hRCWauSKscU&!V@09@^9$c_wYG>4xjDIC@(v6wu%B#plCOQ zlj1%HL7xpg`;4hq!Iu!Ay`fHi8EnwqRZheRTo3t^+{2HkSV8B3ac*wiwj`U#enmI4T(`vn#vK;=k2di7RfPB!bd zJK#>yEZWxDDf!FE7-xpVy$l$}cV*&0M5)OxjQmJ|k6$*vDy}eU@5RE6J(P)Qp+ZeFi9t}!OUd7^O(;WX^ z+tZm1;6~zHF4t@}>pdVC3@Q`~e*%oJB(?5U`#K^Y8IgTkSWbYYT`>3^JQN6~{i|c1 zT@Hui@px7N7}o0@4u@hP=0$@VCwTuo#%8nWYPtge=>Pt?01YMJAgCKUv1i)*1VoHM zg(NCdC7W!ynX~=LT1$V~nzDI+!inF1=tx}_nc5}mr=DV)ug;EKpMRZBPRn{eeTULj zT$`c1GEET^B}LcnR&AAaiH{Ye*N`rB57O`u#Dp_b1s(h%A~RpaD3zSN{F_j2tj!_g zDpL!j?zKmG<;}MS$4?;^-Us|{&uLL9Bj?<{OfuP3Q`%K@Iu9puGT|qsM`h&mnJkio zah!lJc2>jfh55v~gO_sCXyqAH#KmqWJ;xJR)WRHv@kL7O1(~3lev(ei&BE0!@)+$U l*+Y54N|AtcU>`GZuw~%!;jig5uN)!pv)3}!7s*7Z +<%@ taglib prefix="s" uri="/struts-tags"%> +<% +String path = request.getContextPath(); +String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; +%> + + + + + + + + + +
+
+
+ +签署合同 +
+
+
+ + + + + + + + + + + + + + + + + + + + +
合同类型:
合同年限:
薪酬:
员工编号:
+
+ + +
+ + \ No newline at end of file diff --git a/HRMS/WebRoot/contract/Contract_add_success.jsp b/HRMS/WebRoot/contract/Contract_add_success.jsp new file mode 100644 index 0000000..fc56927 --- /dev/null +++ b/HRMS/WebRoot/contract/Contract_add_success.jsp @@ -0,0 +1,94 @@ +<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" %> +<% +String path = request.getContextPath(); +String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; +%> + + + + + + + +
+ +
+
+ 签署合同成功,继续签署? + +
+ + \ No newline at end of file diff --git a/HRMS/WebRoot/contract/Contract_modify.jsp b/HRMS/WebRoot/contract/Contract_modify.jsp new file mode 100644 index 0000000..ff8f62d --- /dev/null +++ b/HRMS/WebRoot/contract/Contract_modify.jsp @@ -0,0 +1,125 @@ +<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" %> +<%@ taglib prefix="s" uri="/struts-tags"%> +<% +String path = request.getContextPath(); +String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; +%> + + + + + + + + + +
+
+
+ +修改合同信息 +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +
合同编号:
合同类型:
合同年限:
薪酬:
员工编号:
+
+ +
+ + \ No newline at end of file diff --git a/HRMS/WebRoot/contract/Contract_modify_success.jsp b/HRMS/WebRoot/contract/Contract_modify_success.jsp new file mode 100644 index 0000000..d3d5a57 --- /dev/null +++ b/HRMS/WebRoot/contract/Contract_modify_success.jsp @@ -0,0 +1,94 @@ +<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" %> +<% +String path = request.getContextPath(); +String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; +%> + + + + + + + +
+ +
+
+ 修改合同成功,返回合同列表 + +
+ + \ No newline at end of file diff --git a/HRMS/WebRoot/contract/Contract_query_success.jsp b/HRMS/WebRoot/contract/Contract_query_success.jsp new file mode 100644 index 0000000..dfad3cf --- /dev/null +++ b/HRMS/WebRoot/contract/Contract_query_success.jsp @@ -0,0 +1,127 @@ +<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" %> +<%@ taglib prefix="s" uri="/struts-tags"%> +<% +String path = request.getContextPath(); +String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; +%> + + + + + + + +
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
合同编号合同类型合同年限薪酬员工编号操作
">" onclick="javascript: return confirm('真的要删除吗?');">删除
+
+ + \ No newline at end of file diff --git a/HRMS/WebRoot/css/default.css b/HRMS/WebRoot/css/default.css new file mode 100644 index 0000000..bac0be2 --- /dev/null +++ b/HRMS/WebRoot/css/default.css @@ -0,0 +1,433 @@ +/* 基本样式 */ + + +/* 去掉图片、表单边框 */ +img, form { + margin:0; + padding:0; + border:0; +} + +/* 超链接 */ +a { + text-decoration: none; +} +a:link, a:visited { + color:#063685; + text-decoration:none; +} +a:hover, a:active { + color:#FF5500; + text-decoration:underline; +} + +/* 表格 */ +table.default { + border:1px solid #0283c5; + border-collapse:collapse; + margin-top:5px; +} +table.default td, table.default tr.style1 td { + padding:2 5 2 5; + height:26px; + border:1px solid #ffffff; +} +table.default tr, table.default tr.style1{ + background-color:#f0f0f0; +} +table.default tr.style0{ + background-color:#dfdfdf; +} +table.default tr.title td, table.default tr.ltitle td { + font-weight:bold; + background:#0283c5; + color:#ffffff; + border:1px solid #ffffff; + white-space:nowrap; + height:26px; + line-height:26px; + vertical-align:middle; +} +table.default tr.ltitle td { + text-align:left; +} +table.default tr.title td { + text-align:center; + line-height:26px; + vertical-align:middle; +} +table.default tr.subtitle td ,table.default tr.lsubtitle td { + font-weight:bold; + background:#69f; + color:#ffffff; + border:1px solid #ffffff; + white-space:nowrap; + height:26px; + line-height:26px; + vertical-align:middle; +} +table.default tr.lsubtitle td { + text-align:left; +} +table.default tr.subtitle td { + text-align:center; +} + +table.default tr.strong td { + font-weight:bold; + background:#DDD; +} + +table.default tr.stronghl td { + font-weight:bold; + background:#FFCC99; + text-align:center; +} + +table.default tr.hl td { + background:#ffffcc/*#FFFF99*/; +} + +table.default td.item { + font-weight:bold; + color:#333333; + text-align:right; +} + +table.default td.text { + line-height:150%; +} + +table.default td.opt { + background:#FFFF99; + padding-right:10px; +} + +table.explain { + margin-top:5px; + margin-bottom:5px; +} +table.explain td { + font-family:宋体; + font-size:12px; + border:1px solid #333333; + background:#f0f0f0; + padding:8px; + line-height:120%; +} + +table.pages { + border:0; +} +table.pages td { + height:26px; +} + +table.reswb { + border:1px solid #0283c5; + border-collapse:collapse; + margin-top:10px; +} + +table.reswb tr.title td { + padding:2 5 2 5; + font-weight:bold; + background:#0283c5; + color:#ffffff; + border:1px solid #ffffff; + white-space:nowrap; + height:26px; + line-height:26px; + vertical-align:middle; +} + +table.default tr.list{ + text-align: center; + line-height:26px; + vertical-align:middle; +} + +/* 普通信息 */ +div.info { + padding:5px 5px 5px 2px; + margin-top:10px; +} + +/* 前台导航用 */ +.tdnormal { + border-bottom:1px solid white; +} + +.tdselected { + border:1px solid white; + border-bottom:0; + font-weight:bold; +} +.navtab td { + height:30px; + color:white; + font-size:9pt; + text-align:center; +} +a.navbar, a.navbar:visited, a.navbar:active {text-decoration: none;color:#FFF;} +a.navbar:hover {text-decoration: underline;color:#FFF;} + + +/* 错误信息 */ +.errorBox { + border:1px solid #ff0000; + padding:5px; + background:#FFCCCC; +} +.errorMessage { + color:#cc0000; +} +ul { + margin-left:30px; + margin-top:0; + margin-bottom:0; +} + +/* 分页页码样式 */ +.selectedPage { + border:1px solid #999999; + background:#ffffcc; + color:#000000; + padding:0 3px 2px 3px; +} +.noSelectedPage { + padding:0 3px 0 3px; +} +a.page { + font-size:12px; + text-decoration: none; +} +a.page:link, a.page:visited { + color:#0044DD; + text-decoration:none; +} +a.page:hover, a.page:active { + color:#FF5500; + text-decoration:none; +} + +/* 表单元素样式 */ +.input_text { + width:200px; + margin-right:5px; +} +.notNull { + color:red; +} +.notice { + color:#20A8F0; +} + +/* 后台任务链接样式 */ +a.navlink { + font-family:宋体; + height:25px; + font-weight:normal; + letter-spacing:1px; + padding:4 5 0 5; + background:#e0e0e0; + border:2px outset; + FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#20A8F0); +} + +a.navlink {text-decoration: none;color:#000000;} +a.navlink:visited {text-decoration: none;color:#000000;} +a.navlink:active {text-decoration: none;color:#0044DD;} +a.navlink:hover {text-decoration: none;color:#FF5500;} + +/* 操作按钮 */ +div.oper { + margin:5px; + text-align:right; +} + +div.oper input { + margin-left:5px; + margin-right:5px; +} + +/* 背景色 */ +.fbg { + background:#065FB9; +} +.bbg { + background:#04477C; +} + +/* tooltip */ +/* +span.tip { + cursor:default; +} +#tooltip { + position: absolute; + z-index: 3000; + border: 1px solid #111; + background-color: #eee; + padding: 5px; + opacity: 0.85; +} +#tooltip h3, #tooltip div { + font-size:12px; + margin: 0; +} +*/ + +/* 特殊高亮文本 */ +span.spec { + color:#003399; +} + +/* 特殊灰色文本 */ +span.gray { + color:#666; +} + +/* 黄色背景 */ +.bg1 { + background:#FFCC99;/*#FFFF99;*/ +} + +/* 绿色背景 */ +.bg2 { + background:#99CC99; +} + +/* 文章样式 */ + +div.title { + font-size:16px; + font-weight:bold; + background:#FFFF99; + border-bottom:2px solid #000; + padding:5px; + margin-bottom:10px; +} + +div.content { + font-size:14px; + line-height:150%; +} + +div.faq-q { + padding:5px; + background:#DDD; + font-weight:bold; +} + +div.faq-a { + padding:5px; + line-height:150%; + font-size:16px; +} + +/* 问卷样式 */ +.option { + margin-right:10px; +} + +.answer { + background:#060; + color:white; + font-weight:bold; + padding:2px; +} + +table.stat { + border-collapse:collapse; +} +table.stat td { + border:0; + padding-left:20px; +} +hr.percent { + height:10px; + color:#093; + border:1px solid black; +} + +td.indent { + padding-left:10px; +} + +#page_explain { + display:none; +} + +#navDiv { + color:#333; + padding-left:10px; + line-height:30px; + background:#CCFF99; + border-bottom:1px solid #065FB9; + height:30px; + padding-top:6px; +} +/*--------分页样式-----------*/ +.pager-top { + overflow:hidden; + padding:5px 10px 0; + color:#333333; + font-family:Tahoma,Verdana,sans-serif,simsun; + font-size:12px; + margin-top:10px; + border-bottom:1px solid #D8DFEA; +} +.pager-top span { + float:left; + padding-bottom:6px; +} +.pagerpro { + float:right; + list-style-image:none; + list-style-position:outside; + list-style-type:none; + margin:0; + padding:0; +} +.pagerpro li { + display:inline; + float:left; +} +.pagerpro li a.chn { + font-size:12px; +} +.pagerpro li a { + display:block; + font-size:11px; + padding:3px 3px 2px; + color:#005EAC; + text-decoration:none; +} +.pagerpro li a.chn:hover { + border-bottom:1px solid #005EAC; +} +.pagerpro li a:hover { + background:#005EAC none repeat scroll 0 0; + border-bottom:2px solid #005EAC; + border-color:#D8DFEA #D8DFEA #005EAC; + color:#FFFFFF; + text-decoration:none; +} +.pagerpro li.current a, .pagerpro li.current a:hover { + background:transparent none repeat scroll 0 0; + border-bottom:2px solid #005EAC; + border-color:#005EAC; + color:#005EAC; + font-weight:700; + padding-left:2px; + padding-right:2px; +} +.marquee_txt{ + font-size:12px; + font-family:"微软雅黑"; + margin-top:5px; + margin-left:auto; + margin-right:auto; + width:222px; +} \ No newline at end of file diff --git a/HRMS/WebRoot/css/index.css b/HRMS/WebRoot/css/index.css new file mode 100644 index 0000000..90b64be --- /dev/null +++ b/HRMS/WebRoot/css/index.css @@ -0,0 +1,176 @@ +* { + background: none repeat scroll 0 0 transparent; + border: 0 none; + margin: 0; + padding: 0; + vertical-align: baseline; +} +body{ + min-height:600px; + min-width:1280px; + overflow-y:hidden; +} +#wrapper { + background-image: -moz-linear-gradient(top,#77D1F6, #2F368F); + background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #77D1F6),color-stop(1, #2F368F)); + font-family: "lucida Grande",Tahoma,Arial; + font-size: 12px; + overflow: hidden; + height:100%; + width:100%; + height:100%; +} +#header { + float: left; + height: 62px; + position: relative; + width: 100%; + z-index: 10; + text-align:center; +} +#logo { + //border:1px solid red; + float: left; + height: 38px; + line-height:38px; + vertical-align:middle; + margin: 15px 0 0 1%; + width: 60px; +} +#title { + //border:1px solid red; + float: left; + height: 38px; + line-height:38px; + vertical-align:middle; + margin: 15px 0 0 1%; + width: 260px; + font-family:微软雅黑; + font-size:18px; + font-weight:bold; + text-align:center; +} +#menu{ + position:absolute; + left:50%; + margin-top:15px; + margin-left:-300px; + float: float; + height: 38px; + width:615px; + line-height:38px; + vertical-align:middle; + text-align:center; + border-radius: 8px; + background-color:#000000; + opacity:0.5; +} +#menu_container{ + position:relative; + margin:2px; + height: 34px; + line-height:34px; + vertical-align:middle; + border-radius: 8px; + background-image: -moz-linear-gradient(top,#EBEBEB, #BFBFBF); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #EBEBEB),color-stop(1, #BFBFBF)); +} +#menu_items{ + list-style:none; + line-height: normal; + height: 34px; + line-height:34px; + vertical-align:middle; + font-size:14px; + border:2px solid solid; + border-right-style:groove; +} +.menu_item{ + display: list-item; + float:left; + width:100px; + border-right:2px solid #F6F6F6; + border-right-style:groove; + cursor:pointer; +} +.on{ + display: list-item; + float:left; + width:100px; + background:#77D1F6; + font-weight:bold; +} +.menu_item a{ + height: 34px; + line-height:34px; + display:block; +} +#user_info { + height: 35px; + line-height:35px; + vertical-align:middle; + position: relative; + float:right; + margin-top:15px; + margin-right:15px; + width:240px; + font-weight:bold; + font-size:14px; +} +#welcome{ + left:-20px; + position: relative; + float:left; +} +#logout{ + position: relative; + float:right; +} +#footer{ + position: absolute; + float:left; + left:0px; + width: 100%; + height: 25px; + vertical-align:middle; + line-height:25px; + text-align:center; + font-family:微软雅黑; + font-size:14px; + font-weight:bold; + font-color:#FFF; +} +#navigator{ + position:relative; + float:left; + width:200px; + margin:5px 2px 5px 2px; + left:5px; + border-color: #77D1F6; + border-width: 2px; + border-style: solid; + border-radius: 12px; + -moz-box-shadow: 6px 6px 12px #282828; + -webkit-box-shadow: 6px 6px 12px #282828; +} +#main{ + position:relative; + float:left; + width: 80%; + margin:5px; + left:5px; + border-color: #77D1F6; + border-width: 2px; + border-style: solid; + border-radius: 12px 12px; + -moz-box-shadow: 6px 6px 12px #282828; + -webkit-box-shadow: 6px 6px 12px #282828; +} +iframe{ + height:100%; + width:100%; + background:#FFF; + position:relative; + border-radius:12px; + overflow:hidden; +} \ No newline at end of file diff --git a/HRMS/WebRoot/employ/Employ_add.jsp b/HRMS/WebRoot/employ/Employ_add.jsp new file mode 100644 index 0000000..9bc731b --- /dev/null +++ b/HRMS/WebRoot/employ/Employ_add.jsp @@ -0,0 +1,129 @@ +<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" %> +<%@ taglib prefix="s" uri="/struts-tags"%> +<% +String path = request.getContextPath(); +String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; +%> + + + + + + + + + +
+
+
+ +发布招聘信息 +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
招聘岗位:
招聘人数:
岗位说明: +
招聘起始时间: +
招聘截止时间: +
+
+ + +
+ + \ No newline at end of file diff --git a/HRMS/WebRoot/employ/Employ_add_success.jsp b/HRMS/WebRoot/employ/Employ_add_success.jsp new file mode 100644 index 0000000..242d1c4 --- /dev/null +++ b/HRMS/WebRoot/employ/Employ_add_success.jsp @@ -0,0 +1,94 @@ +<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" %> +<% +String path = request.getContextPath(); +String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; +%> + + + + + + + +
+ +
+
+ 发布招聘信息成功,继续发布? + +
+ + \ No newline at end of file diff --git a/HRMS/WebRoot/employ/Employ_modify.jsp b/HRMS/WebRoot/employ/Employ_modify.jsp new file mode 100644 index 0000000..986ddfa --- /dev/null +++ b/HRMS/WebRoot/employ/Employ_modify.jsp @@ -0,0 +1,133 @@ +<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" %> +<%@ taglib prefix="s" uri="/struts-tags"%> +<% +String path = request.getContextPath(); +String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; +%> + + + + + + + + + +
+
+
+ +修改招聘信息 +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
招聘编号:
招聘岗位:
招聘人数:
岗位说明: +
招聘起始时间:"/> +
招聘截止时间:"/> +
+
+ +
+ + \ No newline at end of file diff --git a/HRMS/WebRoot/employ/Employ_modify_success.jsp b/HRMS/WebRoot/employ/Employ_modify_success.jsp new file mode 100644 index 0000000..861910d --- /dev/null +++ b/HRMS/WebRoot/employ/Employ_modify_success.jsp @@ -0,0 +1,94 @@ +<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" %> +<% +String path = request.getContextPath(); +String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; +%> + + + + + + + +
+ +
+
+ 修改成功,返回招聘列表 + +
+ + \ No newline at end of file diff --git a/HRMS/WebRoot/employ/Employ_query_success.jsp b/HRMS/WebRoot/employ/Employ_query_success.jsp new file mode 100644 index 0000000..cb8ed01 --- /dev/null +++ b/HRMS/WebRoot/employ/Employ_query_success.jsp @@ -0,0 +1,130 @@ +<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" %> +<%@ taglib prefix="s" uri="/struts-tags"%> +<% +String path = request.getContextPath(); +String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; +%> + + + + + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
招聘编号招聘岗位招聘人数岗位说明招聘起始时间招聘截止时间操作
">" onclick="javascript: return confirm('真的要删除吗?');">删除
+
+ + \ No newline at end of file diff --git a/HRMS/WebRoot/images/admin.png b/HRMS/WebRoot/images/admin.png new file mode 100644 index 0000000000000000000000000000000000000000..b2ac7a04832cb3dd92e8682c377508bc90b7377d GIT binary patch literal 49047 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

ht4nsi3yLXZg0J;hfFteu?Bv~LKpJzZpexA+}> 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 STjWM{JY2E-yi+3sgEasWm=bRQ literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/images/main_bg.jpg b/HRMS/WebRoot/images/main_bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0aedc011060b092343d662b4446e7e66cf4550c5 GIT binary patch literal 79064 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 L5oNht^MC)@EQAth literal 0 HcmV?d00001 diff --git a/HRMS/WebRoot/images/welcome.jpg b/HRMS/WebRoot/images/welcome.jpg new file mode 100644 index 0000000000000000000000000000000000000000..51b19d05f62a21c19c4b8ef5b7529b30c7dc5a14 GIT binary patch literal 31314 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 +<% + String path = request.getContextPath(); + String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; + response.sendRedirect(path+"/user/User_login.jsp"); +%> diff --git a/HRMS/WebRoot/js/Calendar3.js b/HRMS/WebRoot/js/Calendar3.js new file mode 100644 index 0000000..e6e14b6 --- /dev/null +++ b/HRMS/WebRoot/js/Calendar3.js @@ -0,0 +1,374 @@ + +/////////////////////////调用实例 +//

+// 交易查询: 从 +// +// +// 至 +// +// + +//
+ +/** + * Calendar + * @param beginYear 1990 + * @param endYear 2010 + * @param language 0(zh_cn)|1(en_us)|2(en_en)|3(zh_tw) + * @param patternDelimiter "-" + * @param date2StringPattern "yyyy-MM-dd" + * @param string2DatePattern "ymd" + * @version 1.0 build 2006-04-01 + * @version 1.1 build 2006-12-17 + * @author KimSoft (jinqinghua [at] gmail.com) + * NOTE! you can use it free, but keep the copyright please + * IMPORTANT:you must include this script file inner html body elment + */ +function Calendar(beginYear, endYear, language, patternDelimiter, date2StringPattern, string2DatePattern) { + this.beginYear = beginYear || 1990; + this.endYear = endYear || 2020; + this.language = language || 0; + this.patternDelimiter = patternDelimiter || "-"; + this.date2StringPattern = date2StringPattern || Calendar.language["date2StringPattern"][this.language].replace(/\-/g, this.patternDelimiter); + this.string2DatePattern = string2DatePattern || Calendar.language["string2DatePattern"][this.language]; + + this.dateControl = null; + this.panel = this.getElementById("__calendarPanel"); + this.iframe = window.frames["__calendarIframe"]; + this.form = null; + + this.date = new Date(); + this.year = this.date.getFullYear(); + this.month = this.date.getMonth(); + + this.colors = {"bg_cur_day":"#00CC33","bg_over":"#EFEFEF","bg_out":"#FFCC00"} +}; + +Calendar.language = { + "year" : ["\u5e74", "", "", "\u5e74"], + "months" : [ + ["\u4e00\u6708","\u4e8c\u6708","\u4e09\u6708","\u56db\u6708","\u4e94\u6708","\u516d\u6708","\u4e03\u6708","\u516b\u6708","\u4e5d\u6708","\u5341\u6708","\u5341\u4e00\u6708","\u5341\u4e8c\u6708"], + ["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"], + ["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"], + ["\u4e00\u6708","\u4e8c\u6708","\u4e09\u6708","\u56db\u6708","\u4e94\u6708","\u516d\u6708","\u4e03\u6708","\u516b\u6708","\u4e5d\u6708","\u5341\u6708","\u5341\u4e00\u6708","\u5341\u4e8c\u6708"] + ], + "weeks" : [["\u65e5","\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d"], + ["Sun","Mon","Tur","Wed","Thu","Fri","Sat"], + ["Sun","Mon","Tur","Wed","Thu","Fri","Sat"], + ["\u65e5","\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d"] + ], + "clear" : ["\u6e05\u7a7a", "Clear", "Clear", "\u6e05\u7a7a"], + "today" : ["\u4eca\u5929", "Today", "Today", "\u4eca\u5929"], + "close" : ["\u5173\u95ed", "Close", "Close", "\u95dc\u9589"], + "date2StringPattern" : ["yyyy-MM-dd", "yyyy-MM-dd", "yyyy-MM-dd", "yyyy-MM-dd"], + "string2DatePattern" : ["ymd","ymd", "ymd", "ymd"] +}; + +Calendar.prototype.draw = function() { + calendar = this; + + var _cs = []; + _cs[_cs.length] = '
'; + _cs[_cs.length] = ''; + _cs[_cs.length] = ' '; + _cs[_cs.length] = ' '; + for(var i = 0; i < 7; i++) { + _cs[_cs.length] = ''; + for(var j = 0; j < 7; j++) { + switch (j) { + case 0: _cs[_cs.length] = ''; + _cs[_cs.length] = '
<\/th>'; + _cs[_cs.length] = ' <\/select><\/th>'; + _cs[_cs.length] = ' <\/th>'; + _cs[_cs.length] = ' <\/tr>'; + _cs[_cs.length] = '
'; + _cs[_cs.length] = Calendar.language["weeks"][this.language][i]; + _cs[_cs.length] = '<\/th>'; + } + _cs[_cs.length] = '<\/tr>'; + for(var i = 0; i < 6; i++){ + _cs[_cs.length] = '
 <\/td>'; break; + case 6: _cs[_cs.length] = ' <\/td>'; break; + default:_cs[_cs.length] = ' <\/td>'; break; + } + } + _cs[_cs.length] = '<\/tr>'; + } + _cs[_cs.length] = '
<\/th>'; + _cs[_cs.length] = ' <\/th>'; + _cs[_cs.length] = ' <\/th>'; + _cs[_cs.length] = ' <\/tr>'; + _cs[_cs.length] = '<\/table>'; + _cs[_cs.length] = '<\/form>'; + + this.iframe.document.body.innerHTML = _cs.join(""); + this.form = this.iframe.document.forms["__calendarForm"]; + + this.form.clearButton.value = Calendar.language["clear"][this.language]; + this.form.selectTodayButton.value = Calendar.language["today"][this.language]; + this.form.closeButton.value = Calendar.language["close"][this.language]; + + this.form.goPrevMonthButton.onclick = function () {calendar.goPrevMonth(this);} + this.form.goNextMonthButton.onclick = function () {calendar.goNextMonth(this);} + this.form.yearSelect.onchange = function () {calendar.update(this);} + this.form.monthSelect.onchange = function () {calendar.update(this);} + + this.form.clearButton.onclick = function () {calendar.dateControl.value = "";calendar.hide();} + this.form.closeButton.onclick = function () {calendar.hide();} + this.form.selectTodayButton.onclick = function () { + var today = new Date(); + calendar.date = today; + calendar.year = today.getFullYear(); + calendar.month = today.getMonth(); + calendar.dateControl.value = today.format(calendar.date2StringPattern); + calendar.hide(); + } +}; + +Calendar.prototype.bindYear = function() { + var ys = this.form.yearSelect; + ys.length = 0; + for (var i = this.beginYear; i <= this.endYear; i++){ + ys.options[ys.length] = new Option(i + Calendar.language["year"][this.language], i); + } +}; + +Calendar.prototype.bindMonth = function() { + var ms = this.form.monthSelect; + ms.length = 0; + for (var i = 0; i < 12; i++){ + ms.options[ms.length] = new Option(Calendar.language["months"][this.language][i], i); + } +}; + +Calendar.prototype.goPrevMonth = function(e){ + if (this.year == this.beginYear && this.month == 0){return;} + this.month--; + if (this.month == -1) { + this.year--; + this.month = 11; + } + this.date = new Date(this.year, this.month, 1); + this.changeSelect(); + this.bindData(); +}; + +Calendar.prototype.goNextMonth = function(e){ + if (this.year == this.endYear && this.month == 11){return;} + this.month++; + if (this.month == 12) { + this.year++; + this.month = 0; + } + this.date = new Date(this.year, this.month, 1); + this.changeSelect(); + this.bindData(); +}; + +Calendar.prototype.changeSelect = function() { + var ys = this.form.yearSelect; + var ms = this.form.monthSelect; + for (var i= 0; i < ys.length; i++){ + if (ys.options[i].value == this.date.getFullYear()){ + ys[i].selected = true; + break; + } + } + for (var i= 0; i < ms.length; i++){ + if (ms.options[i].value == this.date.getMonth()){ + ms[i].selected = true; + break; + } + } +}; + +Calendar.prototype.update = function (e){ + this.year = e.form.yearSelect.options[e.form.yearSelect.selectedIndex].value; + this.month = e.form.monthSelect.options[e.form.monthSelect.selectedIndex].value; + this.date = new Date(this.year, this.month, 1); + this.changeSelect(); + this.bindData(); +}; + +Calendar.prototype.bindData = function () { + var calendar = this; + var dateArray = this.getMonthViewDateArray(this.date.getFullYear(), this.date.getMonth()); + var tds = this.getElementsByTagName("td", this.getElementById("__calendarTable", this.iframe.document)); + for(var i = 0; i < tds.length; i++) { + tds[i].style.backgroundColor = calendar.colors["bg_over"]; + tds[i].onclick = null; + tds[i].onmouseover = null; + tds[i].onmouseout = null; + tds[i].innerHTML = dateArray[i] || " "; + if (i > dateArray.length - 1) continue; + if (dateArray[i]){ + tds[i].onclick = function () { + if (calendar.dateControl){ + calendar.dateControl.value = new Date(calendar.date.getFullYear(), + calendar.date.getMonth(), + this.innerHTML).format(calendar.date2StringPattern); + } + calendar.hide(); + } + tds[i].onmouseover = function () {this.style.backgroundColor = calendar.colors["bg_out"];} + tds[i].onmouseout = function () {this.style.backgroundColor = calendar.colors["bg_over"];} + var today = new Date(); + if (today.getFullYear() == calendar.date.getFullYear()) { + if (today.getMonth() == calendar.date.getMonth()) { + if (today.getDate() == dateArray[i]) { + tds[i].style.backgroundColor = calendar.colors["bg_cur_day"]; + tds[i].onmouseover = function () {this.style.backgroundColor = calendar.colors["bg_out"];} + tds[i].onmouseout = function () {this.style.backgroundColor = calendar.colors["bg_cur_day"];} + } + } + } + }//end if + }//end for +}; + +Calendar.prototype.getMonthViewDateArray = function (y, m) { + var dateArray = new Array(42); + var dayOfFirstDate = new Date(y, m, 1).getDay(); + var dateCountOfMonth = new Date(y, m + 1, 0).getDate(); + for (var i = 0; i < dateCountOfMonth; i++) { + dateArray[i + dayOfFirstDate] = i + 1; + } + return dateArray; +}; + +Calendar.prototype.show = function (dateControl, popuControl) { + if (this.panel.style.visibility == "visible") { + this.panel.style.visibility = "hidden"; + } + if (!dateControl){ + throw new Error("arguments[0] is necessary!") + } + this.dateControl = dateControl; + popuControl = popuControl || dateControl; + + this.draw(); + this.bindYear(); + this.bindMonth(); + if (dateControl.value.length > 0){ + this.date = new Date(dateControl.value.toDate(this.patternDelimiter, this.string2DatePattern)); + this.year = this.date.getFullYear(); + this.month = this.date.getMonth(); + } + this.changeSelect(); + this.bindData(); + + var xy = this.getAbsPoint(popuControl); + this.panel.style.left = xy.x + "px"; + this.panel.style.top = (xy.y + dateControl.offsetHeight) + "px"; + this.panel.style.visibility = "visible"; +}; + +Calendar.prototype.hide = function() { + this.panel.style.visibility = "hidden"; +}; + +Calendar.prototype.getElementById = function(id, object){ + object = object || document; + return document.getElementById ? object.getElementById(id) : document.all(id); +}; + +Calendar.prototype.getElementsByTagName = function(tagName, object){ + object = object || document; + return document.getElementsByTagName ? object.getElementsByTagName(tagName) : document.all.tags(tagName); +}; + +Calendar.prototype.getAbsPoint = function (e){ + var x = e.offsetLeft; + var y = e.offsetTop; + while(e = e.offsetParent){ + x += e.offsetLeft; + y += e.offsetTop; + } + return {"x": x, "y": y}; +}; + +/** + * @param d the delimiter + * @param p the pattern of your date + * @author meizz + * @author kimsoft add w+ pattern + */ +Date.prototype.format = function(style) { + var o = { + "M+" : this.getMonth() + 1, //month + "d+" : this.getDate(), //day + "h+" : this.getHours(), //hour + "m+" : this.getMinutes(), //minute + "s+" : this.getSeconds(), //second + "w+" : "\u65e5\u4e00\u4e8c\u4e09\u56db\u4e94\u516d".charAt(this.getDay()), //week + "q+" : Math.floor((this.getMonth() + 3) / 3), //quarter + "S" : this.getMilliseconds() //millisecond + } + if (/(y+)/.test(style)) { + style = style.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); + } + for(var k in o){ + if (new RegExp("("+ k +")").test(style)){ + style = style.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)); + } + } + return style; +}; + +/** + * @param d the delimiter + * @param p the pattern of your date + * @rebuilder kimsoft + * @version build 2006.12.15 + */ +String.prototype.toDate = function(delimiter, pattern) { + delimiter = delimiter || "-"; + pattern = pattern || "ymd"; + var a = this.split(delimiter); + var y = parseInt(a[pattern.indexOf("y")], 10); + //remember to change this next century ;) + if(y.toString().length <= 2) y += 2000; + if(isNaN(y)) y = new Date().getFullYear(); + var m = parseInt(a[pattern.indexOf("m")], 10) - 1; + var d = parseInt(a[pattern.indexOf("d")], 10); + if(isNaN(d)) d = 1; + return new Date(y, m, d); +}; + +document.writeln(' +
+ +
+ + + + + \ No newline at end of file diff --git a/HRMS/src/action/ContractAction.java b/HRMS/src/action/ContractAction.java new file mode 100644 index 0000000..d1ccb2c --- /dev/null +++ b/HRMS/src/action/ContractAction.java @@ -0,0 +1,64 @@ +package action; + +import java.util.List; + +import service.ContractDao; +import service.impl.ContractDaoImpl; +import entity.Contract; + +public class ContractAction extends SuperAction { + + /** + * + */ + private static final long serialVersionUID = 1L; + + public String query() { + ContractDao ContractDao = new ContractDaoImpl(); + List list = ContractDao.queryAllContract(); + if (list != null && list.size() > 0) { + session.setAttribute("Contract_list", list); + } + return "Contract_query_success"; + } + + public String delete() { + ContractDao ContractDao = new ContractDaoImpl(); + String eid = request.getParameter("cid"); + ContractDao.deleteContract(eid); + return "Contract_delete_success"; + } + + public String add() throws Exception { + ContractDao ContractDao = new ContractDaoImpl(); + Contract c = new Contract(); + c.setSalary(Float.parseFloat(request.getParameter("salary"))); + c.setSid(request.getParameter("sid")); + c.setType(request.getParameter("type")); + c.setYear(Integer.parseInt(request.getParameter("year"))); + ContractDao.addContract(c); + return "Contract_add_success"; + } + + public String modify() { + String cid = request.getParameter("cid"); + ContractDao ContractDao = new ContractDaoImpl(); + Contract s = ContractDao.queryContractByCid(cid); + // ڻỰ + session.setAttribute("modify_Contract", s); + return "Contract_modify_success"; + } + + public String save() throws Exception { + ContractDao ContractDao = new ContractDaoImpl(); + Contract c = new Contract(); + c.setCid(request.getParameter("cid")); + c.setSalary(Float.parseFloat(request.getParameter("salary"))); + c.setSid(request.getParameter("sid")); + c.setType(request.getParameter("type")); + c.setYear(Integer.parseInt(request.getParameter("year"))); + ContractDao.updateContract(c); + return "Contract_save_success"; + } + +} diff --git a/HRMS/src/action/EmployAction.java b/HRMS/src/action/EmployAction.java new file mode 100644 index 0000000..dfa38ba --- /dev/null +++ b/HRMS/src/action/EmployAction.java @@ -0,0 +1,69 @@ +package action; + +import java.text.SimpleDateFormat; +import java.util.List; + +import service.EmployDao; +import service.impl.EmployDaoImpl; +import entity.Employ; + +public class EmployAction extends SuperAction { + + /** + * + */ + private static final long serialVersionUID = 1L; + + public String query() { + EmployDao EmployDao = new EmployDaoImpl(); + List list = EmployDao.queryAllEmploy(); + if (list != null && list.size() > 0) { + session.setAttribute("Employ_list", list); + } + return "Employ_query_success"; + } + + public String delete() { + EmployDao EmployDao = new EmployDaoImpl(); + String eid = request.getParameter("eid"); + EmployDao.deleteEmploy(eid); + return "Employ_delete_success"; + } + + public String add() throws Exception { + EmployDao EmployDao = new EmployDaoImpl(); + Employ e = new Employ(); + e.setCount(Integer.parseInt(request.getParameter("count"))); + e.setIllustration(request.getParameter("illustration")); + e.setJob(request.getParameter("job")); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + e.setEndTime(sdf.parse(request.getParameter("endTime"))); + e.setStartTime(sdf.parse(request.getParameter("startTime"))); + EmployDao.addEmploy(e); + return "Employ_add_success"; + } + + public String modify() { + String eid = request.getParameter("eid"); + EmployDao EmployDao = new EmployDaoImpl(); + Employ s = EmployDao.queryEmployByEid(eid); + // ڻỰ + session.setAttribute("modify_Employ", s); + return "Employ_modify_success"; + } + + public String save() throws Exception { + EmployDao EmployDao = new EmployDaoImpl(); + Employ e = new Employ(); + e.setEid(request.getParameter("eid")); + e.setCount(Integer.parseInt(request.getParameter("count"))); + e.setIllustration(request.getParameter("illustration")); + e.setJob(request.getParameter("job")); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + e.setEndTime(sdf.parse(request.getParameter("endTime"))); + e.setStartTime(sdf.parse(request.getParameter("startTime"))); + EmployDao.updateEmploy(e); + return "Employ_save_success"; + } + +} diff --git a/HRMS/src/action/SuperAction.java b/HRMS/src/action/SuperAction.java new file mode 100644 index 0000000..5d1b4e0 --- /dev/null +++ b/HRMS/src/action/SuperAction.java @@ -0,0 +1,40 @@ +package action; + +import javax.servlet.ServletContext; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.apache.struts2.interceptor.ServletRequestAware; +import org.apache.struts2.interceptor.ServletResponseAware; +import org.apache.struts2.util.ServletContextAware; + +import com.opensymphony.xwork2.ActionSupport; + +//Actionĸ +public class SuperAction extends ActionSupport implements ServletRequestAware, ServletResponseAware, ServletContextAware{ + /** + * + */ + private static final long serialVersionUID = 1L; + protected HttpServletRequest request; + protected HttpServletResponse response; + protected HttpSession session; + protected ServletContext application; + @Override + public void setServletContext(ServletContext application) { + this.application = application; + } + + @Override + public void setServletResponse(HttpServletResponse response) { + this.response = response; + } + + @Override + public void setServletRequest(HttpServletRequest request) { + this.request = request; + this.session = this.request.getSession(); + } + +} diff --git a/HRMS/src/action/TrainAction.java b/HRMS/src/action/TrainAction.java new file mode 100644 index 0000000..61ac7ad --- /dev/null +++ b/HRMS/src/action/TrainAction.java @@ -0,0 +1,65 @@ +package action; + +import java.text.SimpleDateFormat; +import java.util.List; + +import service.TrainDao; +import service.impl.TrainDaoImpl; +import entity.Train; + +public class TrainAction extends SuperAction { + + /** + * + */ + private static final long serialVersionUID = 1L; + + public String query() { + TrainDao TrainDao = new TrainDaoImpl(); + List list = TrainDao.queryAllTrain(); + if (list != null && list.size() > 0) { + session.setAttribute("Train_list", list); + } + return "Train_query_success"; + } + + public String delete() { + TrainDao TrainDao = new TrainDaoImpl(); + String tid = request.getParameter("tid"); + TrainDao.deleteTrain(tid); + return "Train_delete_success"; + } + + public String add() throws Exception { + TrainDao TrainDao = new TrainDaoImpl(); + Train t = new Train(); + t.setCount(Integer.parseInt(request.getParameter("count"))); + t.setName(request.getParameter("name")); + t.setTutor(request.getParameter("tutor")); + t.setType(request.getParameter("type")); + TrainDao.addTrain(t); + return "Train_add_success"; + } + + public String modify() { + String tid = request.getParameter("tid"); + TrainDao TrainDao = new TrainDaoImpl(); + Train s = TrainDao.queryTrainByTid(tid); + // ڻỰ + session.setAttribute("modify_Train", s); + return "Train_modify_success"; + } + + public String save() throws Exception { + TrainDao TrainDao = new TrainDaoImpl(); + Train t = new Train(); + t.setTid(request.getParameter("tid")); + t.setCount(Integer.parseInt(request.getParameter("count"))); + t.setName(request.getParameter("name")); + t.setTutor(request.getParameter("tutor")); + t.setType(request.getParameter("type")); + TrainDao.updateTrain(t); + return "Train_save_success"; + } + +} diff --git a/HRMS/src/action/UserAction.java b/HRMS/src/action/UserAction.java new file mode 100644 index 0000000..ec71dc0 --- /dev/null +++ b/HRMS/src/action/UserAction.java @@ -0,0 +1,59 @@ +package action; + +import org.apache.struts2.interceptor.validation.SkipValidation; + +import service.UserDao; +import service.impl.UserDaoImpl; + +import com.opensymphony.xwork2.ModelDriven; + +import entity.User; + +public class UserAction extends SuperAction implements ModelDriven { + + /** + * + */ + private static final long serialVersionUID = 1L; + private User user = new User(); + + // û¼ + public String login() { + UserDao userdao = new UserDaoImpl(); + if (userdao.userLogin(user)) { + //¼ɹû + session.setAttribute("loginUserName", user.getUsername()); + return "login_success"; + } else { + return "login_failure"; + } + } + + @SkipValidation + //ûע + public String logout() { + if(session.getAttribute("loginUserName") != null) { + session.removeAttribute("loginUserName"); + } + return "logout_success"; + } + + + + @Override + public void validate() { + super.validate(); + if("".equals(user.getUsername().trim())) { + this.addFieldError("usernameError", "ûΪգ"); + } + if(user.getPassword().length() < 6) { + this.addFieldError("passwordError", "볤Ȳ6λ"); + } + } + + @Override + public User getModel() { + return this.user; + } + +} diff --git a/HRMS/src/db/MyHibernateSessionFactory.java b/HRMS/src/db/MyHibernateSessionFactory.java new file mode 100644 index 0000000..6e3f0ed --- /dev/null +++ b/HRMS/src/db/MyHibernateSessionFactory.java @@ -0,0 +1,25 @@ +package db; + +import org.hibernate.SessionFactory; +import org.hibernate.boot.registry.StandardServiceRegistry; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.cfg.Configuration; + +public class MyHibernateSessionFactory { + // Ự + private static SessionFactory sessionFactory; + + private MyHibernateSessionFactory() { + + } + + public static SessionFactory getSessionFactory() { + if (sessionFactory == null) { + Configuration configuration = new Configuration().configure(); + StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() + .configure().build(); + sessionFactory = configuration.buildSessionFactory(serviceRegistry); + } + return sessionFactory; + } +} diff --git a/HRMS/src/entity/Contract.hbm.xml b/HRMS/src/entity/Contract.hbm.xml new file mode 100644 index 0000000..ae34e1a --- /dev/null +++ b/HRMS/src/entity/Contract.hbm.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HRMS/src/entity/Contract.java b/HRMS/src/entity/Contract.java new file mode 100644 index 0000000..4f8cf37 --- /dev/null +++ b/HRMS/src/entity/Contract.java @@ -0,0 +1,73 @@ +package entity; + +//ͬϢ +public class Contract { + // ͬ + private String cid; + // ͬ + private String type; + // ͬ + private int year; + // н + private float salary; + // Ա + private String sid; + + public String getCid() { + return cid; + } + + public void setCid(String cid) { + this.cid = cid; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public int getYear() { + return year; + } + + public void setYear(int year) { + this.year = year; + } + + public float getSalary() { + return salary; + } + + public void setSalary(float salary) { + this.salary = salary; + } + + public String getSid() { + return sid; + } + + public void setSid(String sid) { + this.sid = sid; + } + + @Override + public String toString() { + return "Contract [cid=" + cid + ", type=" + type + ", year=" + year + + ", salary=" + salary + ", sid=" + sid + "]"; + } + + public Contract() { + } + + public Contract(String cid, String type, int year, float salary, String sid) { + this.cid = cid; + this.type = type; + this.year = year; + this.salary = salary; + this.sid = sid; + } + +} diff --git a/HRMS/src/entity/Employ.hbm.xml b/HRMS/src/entity/Employ.hbm.xml new file mode 100644 index 0000000..f6031e9 --- /dev/null +++ b/HRMS/src/entity/Employ.hbm.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HRMS/src/entity/Employ.java b/HRMS/src/entity/Employ.java new file mode 100644 index 0000000..9b34582 --- /dev/null +++ b/HRMS/src/entity/Employ.java @@ -0,0 +1,87 @@ +package entity; + +import java.util.Date; + +//ƸϢ +public class Employ { + // Ƹ + private String eid; + // Ƹλ + private String job; + // Ƹ + private int count; + // λ˵ + private String illustration; + // Ƹʼʱ + private Date startTime; + // Ƹֹʱ + private Date endTime; + + public String getEid() { + return eid; + } + + public void setEid(String eid) { + this.eid = eid; + } + + public String getJob() { + return job; + } + + public void setJob(String job) { + this.job = job; + } + + public int getCount() { + return count; + } + + public void setCount(int count) { + this.count = count; + } + + public String getIllustration() { + return illustration; + } + + public void setIllustration(String illustration) { + this.illustration = illustration; + } + + public Date getStartTime() { + return startTime; + } + + public void setStartTime(Date startTime) { + this.startTime = startTime; + } + + public Date getEndTime() { + return endTime; + } + + public void setEndTime(Date endTime) { + this.endTime = endTime; + } + + @Override + public String toString() { + return "Employ [eid=" + eid + ", job=" + job + ", count=" + count + + ", illustration=" + illustration + ", startTime=" + startTime + + ", endTime=" + endTime + "]"; + } + + public Employ(String eid, String job, int count, String illustration, + Date startTime, Date endTime) { + this.eid = eid; + this.job = job; + this.count = count; + this.illustration = illustration; + this.startTime = startTime; + this.endTime = endTime; + } + + public Employ() { + } +} diff --git a/HRMS/src/entity/Staff.hbm.xml b/HRMS/src/entity/Staff.hbm.xml new file mode 100644 index 0000000..1f1a6ff --- /dev/null +++ b/HRMS/src/entity/Staff.hbm.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HRMS/src/entity/Staff.java b/HRMS/src/entity/Staff.java new file mode 100644 index 0000000..4dccbf0 --- /dev/null +++ b/HRMS/src/entity/Staff.java @@ -0,0 +1,146 @@ +package entity; + +import java.util.Date; + +//ԱϢ +public class Staff { + // Ա + private String sid; + // + private String name; + // Ա + private String sex; + // + private String nation; + // + private Date birthday; + // μӹʱ + private Date worktime; + // ְ + private String job; + // ְ + private String level; + // ֤ + private String idCard; + // ַ + private String address; + // ֻ + private String phone; + + @Override + public String toString() { + return "Staff [sid=" + sid + ", name=" + name + ", sex=" + sex + + ", nation=" + nation + ", birthday=" + birthday + + ", worktime=" + worktime + ", job=" + job + ", level=" + + level + ", idCard=" + idCard + ", address=" + address + + ", phone=" + phone + "]"; + } + + public Staff() { + } + + public Staff(String sid, String name, String sex, String nation, + Date birthday, Date worktime, String job, String level, + String idCard, String address, String phone) { + this.sid = sid; + this.name = name; + this.sex = sex; + this.nation = nation; + this.birthday = birthday; + this.worktime = worktime; + this.job = job; + this.level = level; + this.idCard = idCard; + this.address = address; + this.phone = phone; + } + + public String getSid() { + return sid; + } + + public void setSid(String sid) { + this.sid = sid; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public String getNation() { + return nation; + } + + public void setNation(String nation) { + this.nation = nation; + } + + public Date getBirthday() { + return birthday; + } + + public void setBirthday(Date birthday) { + this.birthday = birthday; + } + + public Date getWorktime() { + return worktime; + } + + public void setWorktime(Date worktime) { + this.worktime = worktime; + } + + public String getJob() { + return job; + } + + public void setJob(String job) { + this.job = job; + } + + public String getLevel() { + return level; + } + + public void setLevel(String level) { + this.level = level; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + +} diff --git a/HRMS/src/entity/Train.hbm.xml b/HRMS/src/entity/Train.hbm.xml new file mode 100644 index 0000000..aa09043 --- /dev/null +++ b/HRMS/src/entity/Train.hbm.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HRMS/src/entity/Train.java b/HRMS/src/entity/Train.java new file mode 100644 index 0000000..f8d5cf0 --- /dev/null +++ b/HRMS/src/entity/Train.java @@ -0,0 +1,74 @@ +package entity; + +//ѵϢ +public class Train { + // ѵ + private String tid; + // ѵĿ + private String name; + // ѵʦ + private String tutor; + // + private int count; + // ѵ + private String type; + + public Train() { + } + + public Train(String tid, String name, String tutor, int count, String type) { + super(); + this.tid = tid; + this.name = name; + this.tutor = tutor; + this.count = count; + this.type = type; + } + + @Override + public String toString() { + return "Train [tid=" + tid + ", name=" + name + ", tutor=" + tutor + + ", count=" + count + ", type=" + type + "]"; + } + + public String getTid() { + return tid; + } + + public void setTid(String tid) { + this.tid = tid; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getTutor() { + return tutor; + } + + public void setTutor(String tutor) { + this.tutor = tutor; + } + + public int getCount() { + return count; + } + + public void setCount(int count) { + this.count = count; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + +} diff --git a/HRMS/src/entity/User.hbm.xml b/HRMS/src/entity/User.hbm.xml new file mode 100644 index 0000000..77df7e9 --- /dev/null +++ b/HRMS/src/entity/User.hbm.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HRMS/src/entity/User.java b/HRMS/src/entity/User.java new file mode 100644 index 0000000..cb96ee7 --- /dev/null +++ b/HRMS/src/entity/User.java @@ -0,0 +1,74 @@ +package entity; + +//ûϢ +public class User { + //û + private String uid; + //û + private String username; + // + private String password; + //Ȩ 0ʾͨû1ʾԱ + private int authority; + //Ա + private String sid; + + @Override + public String toString() { + return "User [uid=" + uid + ", username=" + username + ", password=" + + password + ", authority=" + authority + ", sid=" + sid + "]"; + } + + public User() { + } + + public User(String uid, String username, String password, int authority, + String sid) { + this.uid = uid; + this.username = username; + this.password = password; + this.authority = authority; + this.sid = sid; + } + + public String getUid() { + return uid; + } + + public void setUid(String uid) { + this.uid = uid; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public int getAuthority() { + return authority; + } + + public void setAuthority(int authority) { + this.authority = authority; + } + + public String getSid() { + return sid; + } + + public void setSid(String sid) { + this.sid = sid; + } + +} diff --git a/HRMS/src/hibernate.cfg.xml b/HRMS/src/hibernate.cfg.xml new file mode 100644 index 0000000..5c3f786 --- /dev/null +++ b/HRMS/src/hibernate.cfg.xml @@ -0,0 +1,26 @@ + + + + + + root + root + com.mysql.jdbc.Driver + jdbc:mysql:///hrms?useUnicode=true&characterEncoding=UTF-8 + org.hibernate.dialect.MySQLDialect + true + true + update + thread + + + + + + + + \ No newline at end of file diff --git a/HRMS/src/service/ContractDao.java b/HRMS/src/service/ContractDao.java new file mode 100644 index 0000000..2e12e0e --- /dev/null +++ b/HRMS/src/service/ContractDao.java @@ -0,0 +1,22 @@ +package service; + +import java.util.List; + +import entity.Contract; + +public interface ContractDao { + // ƸϢ + public boolean addContract(Contract c); + + // ɾƸϢ + public boolean deleteContract(String cid); + + // ޸ƸϢ + public boolean updateContract(Contract c); + + // ѯƸϢ + public Contract queryContractByCid(String cid); + + // ѯƸϢ + public List queryAllContract(); +} diff --git a/HRMS/src/service/EmployDao.java b/HRMS/src/service/EmployDao.java new file mode 100644 index 0000000..db28549 --- /dev/null +++ b/HRMS/src/service/EmployDao.java @@ -0,0 +1,22 @@ +package service; + +import java.util.List; + +import entity.Employ; + +public interface EmployDao { + // ƸϢ + public boolean addEmploy(Employ e); + + // ɾƸϢ + public boolean deleteEmploy(String eid); + + // ޸ƸϢ + public boolean updateEmploy(Employ e); + + // ѯƸϢ + public Employ queryEmployByEid(String eid); + + // ѯƸϢ + public List queryAllEmploy(); +} diff --git a/HRMS/src/service/TrainDao.java b/HRMS/src/service/TrainDao.java new file mode 100644 index 0000000..6221062 --- /dev/null +++ b/HRMS/src/service/TrainDao.java @@ -0,0 +1,22 @@ +package service; + +import java.util.List; + +import entity.Train; + +public interface TrainDao { + // ƸϢ + public boolean addTrain(Train t); + + // ɾƸϢ + public boolean deleteTrain(String tid); + + // ޸ƸϢ + public boolean updateTrain(Train t); + + // ѯƸϢ + public Train queryTrainByTid(String tid); + + // ѯƸϢ + public List queryAllTrain(); +} diff --git a/HRMS/src/service/UserDao.java b/HRMS/src/service/UserDao.java new file mode 100644 index 0000000..1dde5e5 --- /dev/null +++ b/HRMS/src/service/UserDao.java @@ -0,0 +1,9 @@ +package service; + +import entity.User; + +public interface UserDao { + + //û¼ + boolean userLogin(User u); +} diff --git a/HRMS/src/service/impl/ContractDaoImpl.java b/HRMS/src/service/impl/ContractDaoImpl.java new file mode 100644 index 0000000..542333f --- /dev/null +++ b/HRMS/src/service/impl/ContractDaoImpl.java @@ -0,0 +1,130 @@ +package service.impl; + +import java.util.List; + +import org.hibernate.Query; +import org.hibernate.Session; +import org.hibernate.Transaction; + +import db.MyHibernateSessionFactory; +import entity.Contract; +import entity.Train; +import service.ContractDao; +import util.Util; + +public class ContractDaoImpl implements ContractDao{ + + @Override + public boolean addContract(Contract c) { + c.setCid(Util.getNewId("cid", "Contract")); + Transaction ts = null; + try { + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + ts = session.beginTransaction(); + session.save(c); + ts.commit(); + return true; + } catch (Exception ep) { + ep.printStackTrace(); + ts.commit(); + return false; + } finally { + if (ts != null) { + ts = null; + } + } + } + + @Override + public boolean deleteContract(String cid) { + Transaction ts = null; + try { + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + ts = session.beginTransaction(); + Contract s = session.get(Contract.class, cid); + session.delete(s); + ts.commit(); + return true; + } catch (Exception e) { + e.printStackTrace(); + ts.commit(); + return false; + } finally { + if (ts != null) { + ts = null; + } + } + } + + @Override + public boolean updateContract(Contract c) { + Transaction ts = null; + try { + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + ts = session.beginTransaction(); + session.update(c); + ts.commit(); + return true; + } catch (Exception ep) { + ep.printStackTrace(); + ts.commit(); + return false; + } finally { + if (ts != null) { + ts = null; + } + } + } + + @Override + public Contract queryContractByCid(String cid) { + Transaction ts = null; + Contract s = null; + try { + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + ts = session.beginTransaction(); + s = session.get(Contract.class, cid); + ts.commit(); + return s; + } catch (Exception e) { + e.printStackTrace(); + ts.commit(); + return s; + } finally { + if (ts != null) { + ts = null; + } + } + } + + @Override + public List queryAllContract() { + Transaction ts = null; + List list = null; + String hql = ""; + try { + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + hql = "from Contract"; + ts = session.beginTransaction(); + Query query = session.createQuery(hql); + + list = query.list(); + ts.commit(); + return list; + } catch (Exception e) { + e.printStackTrace(); + ts.commit(); + return list; + } finally { + if (ts != null) { + ts = null; + } + } + } + +} diff --git a/HRMS/src/service/impl/EmployDaoImpl.java b/HRMS/src/service/impl/EmployDaoImpl.java new file mode 100644 index 0000000..e7fa0ec --- /dev/null +++ b/HRMS/src/service/impl/EmployDaoImpl.java @@ -0,0 +1,129 @@ +package service.impl; + +import java.util.List; + +import org.hibernate.Query; +import org.hibernate.Session; +import org.hibernate.Transaction; + +import db.MyHibernateSessionFactory; +import entity.Employ; +import service.EmployDao; +import util.Util; + +public class EmployDaoImpl implements EmployDao { + + @Override + public boolean addEmploy(Employ e) { + e.setEid(Util.getNewId("eid", "Employ")); + Transaction ts = null; + try { + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + ts = session.beginTransaction(); + session.save(e); + ts.commit(); + return true; + } catch (Exception ep) { + ep.printStackTrace(); + ts.commit(); + return false; + } finally { + if (ts != null) { + ts = null; + } + } + } + + @Override + public boolean deleteEmploy(String eid) { + Transaction ts = null; + try { + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + ts = session.beginTransaction(); + Employ s = session.get(Employ.class, eid); + session.delete(s); + ts.commit(); + return true; + } catch (Exception e) { + e.printStackTrace(); + ts.commit(); + return false; + } finally { + if (ts != null) { + ts = null; + } + } + } + + @Override + public boolean updateEmploy(Employ e) { + Transaction ts = null; + try { + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + ts = session.beginTransaction(); + session.update(e); + ts.commit(); + return true; + } catch (Exception ep) { + ep.printStackTrace(); + ts.commit(); + return false; + } finally { + if (ts != null) { + ts = null; + } + } + } + + @Override + public Employ queryEmployByEid(String eid) { + Transaction ts = null; + Employ s = null; + try { + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + ts = session.beginTransaction(); + s = session.get(Employ.class, eid); + ts.commit(); + return s; + } catch (Exception e) { + e.printStackTrace(); + ts.commit(); + return s; + } finally { + if (ts != null) { + ts = null; + } + } + } + + @Override + public List queryAllEmploy() { + Transaction ts = null; + List list = null; + String hql = ""; + try { + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + hql = "from Employ"; + ts = session.beginTransaction(); + Query query = session.createQuery(hql); + + list = query.list(); + ts.commit(); + return list; + } catch (Exception e) { + e.printStackTrace(); + ts.commit(); + return list; + } finally { + if (ts != null) { + ts = null; + } + } + } + +} diff --git a/HRMS/src/service/impl/TrainDaoImpl.java b/HRMS/src/service/impl/TrainDaoImpl.java new file mode 100644 index 0000000..8a0cab1 --- /dev/null +++ b/HRMS/src/service/impl/TrainDaoImpl.java @@ -0,0 +1,129 @@ +package service.impl; + +import java.util.List; + +import org.hibernate.Query; +import org.hibernate.Session; +import org.hibernate.Transaction; + +import db.MyHibernateSessionFactory; +import entity.Train; +import service.TrainDao; +import util.Util; + +public class TrainDaoImpl implements TrainDao{ + + @Override + public boolean addTrain(Train t) { + t.setTid(Util.getNewId("tid", "Train")); + Transaction ts = null; + try { + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + ts = session.beginTransaction(); + session.save(t); + ts.commit(); + return true; + } catch (Exception ep) { + ep.printStackTrace(); + ts.commit(); + return false; + } finally { + if (ts != null) { + ts = null; + } + } + } + + @Override + public boolean deleteTrain(String tid) { + Transaction ts = null; + try { + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + ts = session.beginTransaction(); + Train s = session.get(Train.class, tid); + session.delete(s); + ts.commit(); + return true; + } catch (Exception e) { + e.printStackTrace(); + ts.commit(); + return false; + } finally { + if (ts != null) { + ts = null; + } + } + } + + @Override + public boolean updateTrain(Train t) { + Transaction ts = null; + try { + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + ts = session.beginTransaction(); + session.update(t); + ts.commit(); + return true; + } catch (Exception ep) { + ep.printStackTrace(); + ts.commit(); + return false; + } finally { + if (ts != null) { + ts = null; + } + } + } + + @Override + public Train queryTrainByTid(String tid) { + Transaction ts = null; + Train s = null; + try { + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + ts = session.beginTransaction(); + s = session.get(Train.class, tid); + ts.commit(); + return s; + } catch (Exception e) { + e.printStackTrace(); + ts.commit(); + return s; + } finally { + if (ts != null) { + ts = null; + } + } + } + + @Override + public List queryAllTrain() { + Transaction ts = null; + List list = null; + String hql = ""; + try { + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + hql = "from Train"; + ts = session.beginTransaction(); + Query query = session.createQuery(hql); + + list = query.list(); + ts.commit(); + return list; + } catch (Exception e) { + e.printStackTrace(); + ts.commit(); + return list; + } finally { + if (ts != null) { + ts = null; + } + } + } + +} diff --git a/HRMS/src/service/impl/UserDaoImpl.java b/HRMS/src/service/impl/UserDaoImpl.java new file mode 100644 index 0000000..50b64c8 --- /dev/null +++ b/HRMS/src/service/impl/UserDaoImpl.java @@ -0,0 +1,44 @@ +package service.impl; + +import java.util.List; + +import org.hibernate.Query; +import org.hibernate.Session; +import org.hibernate.Transaction; + +import service.UserDao; +import db.MyHibernateSessionFactory; +import entity.User; + +public class UserDaoImpl implements UserDao { + + @Override + public boolean userLogin(User u) { + Transaction ts = null; + String hql = ""; + try { + hql = "from User where username=? and password=?"; + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + ts = session.beginTransaction(); + Query query = session.createQuery(hql); + query.setParameter(0, u.getUsername()); + query.setParameter(1, u.getPassword()); + List list = query.list(); + ts.commit(); + if (list.size() > 0) { + return true; + } else { + return false; + } + } catch (Exception e) { + e.printStackTrace(); + return false; + } finally { + if (ts != null) { + ts = null; + } + } + } + +} diff --git a/HRMS/src/struts.xml b/HRMS/src/struts.xml new file mode 100644 index 0000000..5478756 --- /dev/null +++ b/HRMS/src/struts.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + /user/User_login_success.jsp + /user/User_login.jsp + /user/User_login.jsp + /user/User_login.jsp + + + + + /employ/Employ_query_success.jsp + Employ_query + /employ/Employ_add_success.jsp + /employ/Employ_modify.jsp + /employ/Employ_modify_success.jsp + + + + + /train/Train_query_success.jsp + Train_query + /train/Train_add_success.jsp + /train/Train_modify.jsp + /train/Train_modify_success.jsp + + + + + /contract/Contract_query_success.jsp + Contract_query + /contract/Contract_add_success.jsp + /contract/Contract_modify.jsp + /contract/Contract_modify_success.jsp + + + diff --git a/HRMS/src/util/Util.java b/HRMS/src/util/Util.java new file mode 100644 index 0000000..e10886c --- /dev/null +++ b/HRMS/src/util/Util.java @@ -0,0 +1,51 @@ +package util; + +import org.hibernate.Query; +import org.hibernate.Session; +import org.hibernate.Transaction; + +import db.MyHibernateSessionFactory; + +public class Util { + // ѧѧ + public static String getNewId(String primaryName, String tableName) { + Transaction ts = null; + String hql = ""; + String id = null; + String prefix = primaryName.substring(0, 1); + prefix = prefix.toUpperCase(); + System.out.println(prefix); + try { + hql = "select max(" + primaryName + ") from " + tableName; + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + ts = session.beginTransaction(); + Query query = session.createQuery(hql); + id = (String) query.uniqueResult(); + if (id == null || id.equals("")) { + // Ĭϵ + id = prefix + "0000001"; + } else { + String temp = id.substring(1); // ȥλ + int i = Integer.parseInt(temp); // ת + i++; + temp = String.valueOf(i); + int len = temp.length(); + for (int k = 0; k < 7 - len; k++) { + temp = "0" + temp; + } + id = prefix + temp; + } + ts.commit(); + return id; + } catch (Exception e) { + e.printStackTrace(); + ts.commit(); + return id; + } finally { + if (ts != null) { + ts = null; + } + } + } +} diff --git a/HRMS/test/entity/TestDatabase.java b/HRMS/test/entity/TestDatabase.java new file mode 100644 index 0000000..b067a82 --- /dev/null +++ b/HRMS/test/entity/TestDatabase.java @@ -0,0 +1,62 @@ +package entity; + +import java.util.EnumSet; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.boot.Metadata; +import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.registry.StandardServiceRegistry; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.cfg.Configuration; +import org.hibernate.tool.hbm2ddl.SchemaExport; +import org.hibernate.tool.schema.TargetType; +import org.junit.Test; + +public class TestDatabase { +// +// // Ӳ +// @Test +// public void testAddStudent() { +// // ö +// Configuration configuration = new Configuration().configure(); +// // SessionFactory +// SessionFactory sessionFactory = configuration.buildSessionFactory(); +// // session +// Session session = sessionFactory.getCurrentSession(); +// // +// Transaction ts = session.beginTransaction(); +// +// Student s1 = new Student("S0000001", "skyward", "", new Date(), "δ֪"); +// Student s2 = new Student("S0000002", "geek", "", new Date(), "δ֪"); +// Student s3 = new Student("S0000004", "hacker", "", new Date(), "δ֪"); +// +// session.save(s1); +// session.save(s2); +// session.save(s3); +// +// ts.commit(); +// sessionFactory.close(); +// } + + @Test + public void testSchemaExport() { + // ö + Configuration configuration = new Configuration().configure(); + // ע + StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() + .configure().build(); + // SessionFactory + SessionFactory sessionFactory = configuration.buildSessionFactory(); + // session + Session session = sessionFactory.getCurrentSession(); + // SchemaExport + SchemaExport schemaExport = new SchemaExport(); + + Metadata metadata = new MetadataSources(serviceRegistry) + .buildMetadata(); + + schemaExport.create(EnumSet.of(TargetType.DATABASE), metadata); + } + +} diff --git a/HRMS/test/service/impl/TestContractDaoImpl.java b/HRMS/test/service/impl/TestContractDaoImpl.java new file mode 100644 index 0000000..8ad1666 --- /dev/null +++ b/HRMS/test/service/impl/TestContractDaoImpl.java @@ -0,0 +1,55 @@ +package service.impl; + +import java.util.List; + +import junit.framework.Assert; + +import org.junit.Test; + +import service.ContractDao; +import util.Util; +import entity.Contract; + +public class TestContractDaoImpl { + + //ԺͬѯԪ + @Test + public void TestQueryAllContract() { + List list = new ContractDaoImpl().queryAllContract(); + for (Contract c : list) { + System.out.println(c.toString()); + } + } + + //ӺͬԪ + @Test + public void TestAddContract() { + Contract c = new Contract(); + c.setSalary(1000000); + c.setSid("1"); + c.setType("δ֪"); + c.setYear(10000); + ContractDao ContractDao = new ContractDaoImpl(); + Assert.assertEquals(true, ContractDao.addContract(c)); + } + + //޸ĺͬԪ + @Test + public void TestUpdateContract() { + Contract c = new Contract(); + c.setCid("C0000004"); + c.setSalary(1000000); + c.setSid("1"); + c.setType("kk"); + c.setYear(10000); + ContractDao ContractDao = new ContractDaoImpl(); + Assert.assertEquals(true, ContractDao.updateContract(c)); + } + + //ɾͬԪ + @Test + public void TestDeleteContract() { + ContractDao ContractDao = new ContractDaoImpl(); + Assert.assertEquals(true, ContractDao.deleteContract("C0000002")); + } +} diff --git a/HRMS/test/service/impl/TestEmployDaoImpl.java b/HRMS/test/service/impl/TestEmployDaoImpl.java new file mode 100644 index 0000000..ee1468c --- /dev/null +++ b/HRMS/test/service/impl/TestEmployDaoImpl.java @@ -0,0 +1,39 @@ +package service.impl; + +import java.util.Date; +import java.util.List; + +import junit.framework.Assert; + +import org.junit.Test; + +import service.EmployDao; +import util.Util; +import entity.Employ; + +public class TestEmployDaoImpl { + @Test + public void TestQueryAllEmploy() { + List list = new EmployDaoImpl().queryAllEmploy(); + for(Employ s : list) { + System.out.println(s.toString()); + } + } + + @Test + public void TestGetNewSid() { + System.out.println(Util.getNewId("eid", "Employ")); + } + + @Test + public void TestAddEmploy() { + Employ e = new Employ(); + e.setCount(100); + e.setEndTime(new Date()); + e.setIllustration("Ƹ"); + e.setJob(""); + e.setStartTime(new Date()); + EmployDao employDao = new EmployDaoImpl(); + Assert.assertEquals(true, employDao.addEmploy(e)); + } +} diff --git a/HRMS/test/service/impl/TestTrainDaoImpl.java b/HRMS/test/service/impl/TestTrainDaoImpl.java new file mode 100644 index 0000000..32182e4 --- /dev/null +++ b/HRMS/test/service/impl/TestTrainDaoImpl.java @@ -0,0 +1,38 @@ +package service.impl; + +import java.util.Date; +import java.util.List; + +import junit.framework.Assert; + +import org.junit.Test; + +import service.TrainDao; +import util.Util; +import entity.Train; + +public class TestTrainDaoImpl { + @Test + public void TestQueryAllTrain() { + List list = new TrainDaoImpl().queryAllTrain(); + for(Train s : list) { + System.out.println(s.toString()); + } + } + + @Test + public void TestGetNewId() { + System.out.println(Util.getNewId("tid", "Train")); + } + + @Test + public void TestAddTrain() { + Train e = new Train(); + e.setCount(1000); + e.setName("ѵĿ"); + e.setTutor(""); + e.setType("Ȼ"); + TrainDao TrainDao = new TrainDaoImpl(); + Assert.assertEquals(true, TrainDao.addTrain(e)); + } +} diff --git a/HRMS/test/service/impl/TestUserDaoImpl.java b/HRMS/test/service/impl/TestUserDaoImpl.java new file mode 100644 index 0000000..914e7bb --- /dev/null +++ b/HRMS/test/service/impl/TestUserDaoImpl.java @@ -0,0 +1,17 @@ +package service.impl; + +import junit.framework.Assert; + +import org.junit.Test; + +import service.UserDao; +import entity.User; + +public class TestUserDaoImpl { + @Test + public void testUserLogin() { + User user = new User("2", "skyward", "123456", 1, "1"); + UserDao userDao = new UserDaoImpl(); + Assert.assertEquals(false, userDao.userLogin(user)); + } +} diff --git a/student/.classpath b/student/.classpath new file mode 100644 index 0000000..16cb2ac --- /dev/null +++ b/student/.classpath @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/student/.project b/student/.project new file mode 100644 index 0000000..d8c00b5 --- /dev/null +++ b/student/.project @@ -0,0 +1,46 @@ + + + student + + + + + + org.eclipse.wst.jsdt.core.javascriptValidator + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + com.genuitec.eclipse.j2eedt.core.DeploymentDescriptorValidator + + + + + com.genuitec.eclipse.ast.deploy.core.DeploymentBuilder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.jdt.core.javanature + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/student/.settings/.jsdtscope b/student/.settings/.jsdtscope new file mode 100644 index 0000000..2fc9dba --- /dev/null +++ b/student/.settings/.jsdtscope @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/student/.settings/org.eclipse.core.resources.prefs b/student/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..ac7bf4f --- /dev/null +++ b/student/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding//WebRoot/css/default.css=UTF-8 diff --git a/student/.settings/org.eclipse.jdt.core.prefs b/student/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..f42de36 --- /dev/null +++ b/student/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/student/.settings/org.eclipse.wst.common.component b/student/.settings/org.eclipse.wst.common.component new file mode 100644 index 0000000..c658b67 --- /dev/null +++ b/student/.settings/org.eclipse.wst.common.component @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/student/.settings/org.eclipse.wst.common.project.facet.core.xml b/student/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 0000000..ae218fe --- /dev/null +++ b/student/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/student/.settings/org.eclipse.wst.jsdt.ui.superType.container b/student/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 0000000..3bd5d0a --- /dev/null +++ b/student/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git a/student/.settings/org.eclipse.wst.jsdt.ui.superType.name b/student/.settings/org.eclipse.wst.jsdt.ui.superType.name new file mode 100644 index 0000000..05bd71b --- /dev/null +++ b/student/.settings/org.eclipse.wst.jsdt.ui.superType.name @@ -0,0 +1 @@ +Window \ No newline at end of file diff --git a/student/WebRoot/META-INF/MANIFEST.MF b/student/WebRoot/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/student/WebRoot/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/student/WebRoot/WEB-INF/classes/action/StudentAction.class b/student/WebRoot/WEB-INF/classes/action/StudentAction.class new file mode 100644 index 0000000000000000000000000000000000000000..ee021a185d9cd85d8350abe773fcfab283fbb79b GIT binary patch literal 2775 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 literal 0 HcmV?d00001 diff --git a/student/WebRoot/WEB-INF/classes/entity/Student.class b/student/WebRoot/WEB-INF/classes/entity/Student.class new file mode 100644 index 0000000000000000000000000000000000000000..a6cd8a1e195d36d684919401c67c69a40fc00eeb GIT binary patch literal 2001 zcmZ`)+fEZv6kVtE?r?Dsq>4Jl8w|y&c%^^}-Y`TTFeJwKFwhB(sl~KY6QBGEKSUFY zi6(x4A7xzo%+SH<^yQp=PWRb+?X~uv{`vd!H-JSv%ORyO;x>KH|5V-bJ9U~lq!q^A zIUk*B!)fkSU+lbdcYTGSwpUj$H=|#+{Fc|;t0`pKP3OI2$)9i$vdTQZQ7w0U_I z)L7u}Pjs2$aK=Dh913&@ZWWHvW35-ed01J*fIOTrP(YE9{r!N(94;!HjFY?8@fu__ zkIM?fp+MGaDzQ?;1?=LYQ_JHjF;y%r z=t>^fSz5&kWaaS&tE*Ut;%W@HB;oB?o}g!H{hCI3?kW^3R@ezELP^cQF=X>tQBZHB zmU{-yW0)yPZbayKSWv{L$W|oj4-VU^$OpZ{(CplH5kq(^WIa@Poj^z*AGJX@QPzGB zjbm%S)7o_(d(xXmsMr;e6=l{q#JS5LCCyALCEcZWHj&=h6M82R+=uzX(CY|KRh|_0 zjQt&>U$xtDu33FK43oAIIA9zncv6_aBv*O7%48|=w&%MT{YEPVd0o`E#|g;P5heq# zFoHxEsFL_(B9N&#kcmVfr;>q8#etNV?$iJv!j%9yod{$)4&+QCkh94^rsF`$1Tr%K zh=?UX&cWgum!=#CaxoDIJ3D;*nOz~eZv4W9SLUT3m=%E!FmG15(4G?eT3}C$y%^Z# z1Kc$41oo2LFLOD-Y6QSUnt^S$-aPK3f=9HYKH2E?$$dNs!Ti@J$;!0>tVrt$ zD{H;NjyCL41S)9Q8%Ka-dO+5b30D6M#N*7c1LKo9^DcwccE@iqn0`n|KTc$2e-V0=RguIMn9VLP~ sM;%0k)gWeX)+`nkkYni&gUqWX|1bKpVaXqc*3**jBz+a0(j$e9e@db_>i_@% literal 0 HcmV?d00001 diff --git a/student/WebRoot/WEB-INF/classes/entity/Student.hbm.xml b/student/WebRoot/WEB-INF/classes/entity/Student.hbm.xml new file mode 100644 index 0000000..e2fa114 --- /dev/null +++ b/student/WebRoot/WEB-INF/classes/entity/Student.hbm.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/student/WebRoot/WEB-INF/classes/entity/TestDatabase.class b/student/WebRoot/WEB-INF/classes/entity/TestDatabase.class new file mode 100644 index 0000000000000000000000000000000000000000..2737eaae7097ed9d670bc29f4b3fdb4ca780aa59 GIT binary patch literal 2729 zcmbVOTXz#x6#h;~GHE(M8$<}Vaw*W1mMJYa8z_cS1Z+W@T8wy`B-3=-Bm*;(Lhyb; zmutC}KKS5+Yq5Or#W#IutzF9>;BW95{1q<0GnvpN1X25N=479}_u2c~-`=Oc|Mlx{ z07me+f`GslqwJb)Rhuy!_k!-~S=})d1O>Vl^d(&@>g9rVExTakT!HWzvuwI!0vq}g zvjV|!D{n-x0Uatr2n%eUG|R@-N-1mDGkUgY2*f6>oL-#OZBzdCg+X`TbOg3ewz)bf zu*qd8seC@|R`S#kh)-7-W678`9g|*C<+A1Ku4$F&q-)Z$3)(`3ad{~u6~qL3q;TG3 z9A(`#wA@@l8@I}HW}#wxhEa5*LoQoYJd14t9XbD)F(2qlcuxPpJ}GVEDt2He5zJQ1 zVm@s+4nw-A=UmIK3haH%OS49@6T8u)V2{AA=4hMsRP4n*f$oCgj#q4(fcWRcMK&`Xfp`c`oWhY4QRD469LTQ55do6!sGe#~dXF~Lo+K7QH!`b2OR}O#GRX#?J9UpV6+*atYx{HO{O}oUDeXA zUe1$S1b4~I8PmS}yzD{4jv^x)JA*f5W4|dd_86c4i#zst25+m-k!20MJ{LIk|6H

t}q~sHUgS*}BkIE$wt#Rd|DWB!;#@GI+1Qz?iQO*Agz?ED_n5)8H8oz?y zQ2z=dKXDU4l&d@jV(8?m))e^N$X^^dJPly8uhqpb9f={X5$?ZULw9BcTbA+6F9pkrkX64SDj@vC$TJ*pr`$jkU;?!FXsD z&j)aQFdnXNl-ed9T*UA`wqXx?`23zCIM=Wr1@w~j2g$la z_?XYs7f9eM^m`ag*K+eQ=)^rtVv1OF;X_=db%5TgcnL2P-X7e-G|~vta|Sbbg>YX( z3bWjWc}oJlakw;bpwDj=?Z9kVWsrF;;gN+xd;-IFUHXtWWb~lu;+Sj^Yf?;xfj( z{4doadX)b;KmR!GKOhDHdKmDK*g!wM9uh%%+lh~eWr)5u;S+r7@#-EU2;j570Zpdb Axc~qF literal 0 HcmV?d00001 diff --git a/student/WebRoot/WEB-INF/classes/entity/User.class b/student/WebRoot/WEB-INF/classes/entity/User.class new file mode 100644 index 0000000000000000000000000000000000000000..2b51f4bce4cd85594a35f5b5b12e73a543404afb GIT binary patch literal 1410 zcmaJ=+fEZv6kVqsdShCkmR6uZQGw|ND&n2X112UUL`@J9V|*CO1c#KCv{Q}$@pT7aDV>66^!l+a8T<=Typy@QiFcij5?N4^O zYS&K6ua8chil-24xyK4>S0U13Sj|3j6q0+_f%{&=t(|P}`?=k0ey%qd9y)Qn1IY_o zd1e|f>c>tL3JDV<2q}#1xi#li>+HyBytR+28nIrntA}>OmAn6Fcpu%SLVT}>Ckus| zKDuG;<`3D1RO@m}S@}VBQv9}wFd__>^ltd1H5lCied9MI*|R31o$Ss#scgD6*W1>O z9>x&F9TW4&DOlF-AnxFcREl`@wuWIWDP;PU-D$biW2X^;r4SR|x%aeWD~3fBq}a5a zN+wpYNb@qxQ`Tm zApTW{jd2a>$0){mHroN1K$16wTS#%0jP9NyFs9o0BDN}CCXD+xj+xK zG)aLu1_vw32}@v!7B6e;LOZ`}T*^0&n0l(j{FMB|oHr$d=~u4kJFxZ(i|>-lSIEnF vU80yQUt*2t47cRN_Bku($6PM)^jhzP9^)dLEb$*I_O!azoy6xXAHc>xH3ryf literal 0 HcmV?d00001 diff --git a/student/WebRoot/WEB-INF/classes/entity/User.hbm.xml b/student/WebRoot/WEB-INF/classes/entity/User.hbm.xml new file mode 100644 index 0000000..365eeb1 --- /dev/null +++ b/student/WebRoot/WEB-INF/classes/entity/User.hbm.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/student/WebRoot/WEB-INF/classes/hibernate.cfg.xml b/student/WebRoot/WEB-INF/classes/hibernate.cfg.xml new file mode 100644 index 0000000..ae0c01c --- /dev/null +++ b/student/WebRoot/WEB-INF/classes/hibernate.cfg.xml @@ -0,0 +1,23 @@ + + + + + + root + root + com.mysql.jdbc.Driver + jdbc:mysql:///test?useUnicode=true&characterEncoding=UTF-8 + org.hibernate.dialect.MySQLDialect + true + true + update + thread + + + + + \ No newline at end of file diff --git a/student/WebRoot/WEB-INF/classes/service/StudentDao.class b/student/WebRoot/WEB-INF/classes/service/StudentDao.class new file mode 100644 index 0000000000000000000000000000000000000000..0f4958121478e605bf38396bf40278343bb2e467 GIT binary patch literal 397 zcmZvYu};H45Jcw!iHX6O1n~zHaf1s=BP1e3Wr@Na-QinV7o8lq+(q)QQSbqL6k>gt z2nDLuNN;9$=i~G39l$l_5k>;@4cV=(DX*MY)Vh1Qj&LY&wvt5+ zvfZ6A1Ip$_RtC;HZSqoYTp=*6bkj=bEeTxy0d7iOqFwj1uefE)EF=%H%dXO@w|+;5 z6DntQ+Z5TpSs<25?d~~W>;u`8K;mDNbhM)qMTUOqi~lyUFRs?!*7Tqaf07P%?&qq1 oc_JWiz(oRMu4{}5>xk6|N35ra(bss4lQ5HEo+4$2>kZ`W3z;NpbN~PV literal 0 HcmV?d00001 diff --git a/student/WebRoot/WEB-INF/classes/service/UserDao.class b/student/WebRoot/WEB-INF/classes/service/UserDao.class new file mode 100644 index 0000000000000000000000000000000000000000..93419cf12b48dc89c319e63eb372bb3cbe5a5293 GIT binary patch literal 142 zcmX^0Z`VEs1_omWPId++Mh5=k)S|M?n9?AgLj! literal 0 HcmV?d00001 diff --git a/student/WebRoot/WEB-INF/classes/service/impl/StudentDaoImpl.class b/student/WebRoot/WEB-INF/classes/service/impl/StudentDaoImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..cb69f2cdf4cebbb242a68738b70f986a3e625d7e GIT binary patch literal 4981 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 literal 0 HcmV?d00001 diff --git a/student/WebRoot/WEB-INF/classes/service/impl/UserDaoImpl.class b/student/WebRoot/WEB-INF/classes/service/impl/UserDaoImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..b43d83b8f09d554cca88097efa16e208d091437c GIT binary patch literal 1865 zcmaJ>T~`xV6x}zOt`+ZAA1l+BND3V3__WOhlGiNT@~;cT^Mw@w zZN^zwDa4W1A<;*VvSq7{XJ7MCb!oxls6F?t^1Pb4}P9qm&nA_e^uF3^|w$V^i(>cRl&uto> zx9zy=Q`0F7BP%f?Ft%PTR(5V%Ow%@ewWK`Ha_m{d^c{Cc#|exI4Ahk0s}RWL3uVWx z6*oGb#a@e28Yl6V#3_b&lbwznPDdeTny$;*+BgE){|iCvvp6qtPGIP@*gD?E1#(qY z)M@EP<1+V0NiP+=7mATog!~t|B4#n#$cFwfXXXUo82qW!Fjv2?$L~DNLX! zahV8R7p3DJT;UO!4DKhm6oEk|^9pL3efqw{djiLLYYX9Ze1H!HbWiz4-rf=1YWuB3s8~9Y>6JAbla$PLy zm~Cif=rv2XAseRQp;5q!+ycf#CxX z?cSt&;%U?vLkBFPCSdPHze&I0a)|IiUDGM5)M?;{%EDUy%AaRO|dE z!^3{`bFW7RIE*8d2#*1N=`8*xXdlmh5|vD5Av3t}D~`7?CNQaGwHD3@RI=Jc3;7r( z6WK)k;!9j=;oUe^vk8sDM;)OBQZSjMa+;l$Y~iNBbEGf*iG-+VFQPU6B7l8~&-O$a z?XvO@CX&D^YV4q3-C|NT*x?#y0f37!eg{~6h8BatyhIwuSvHw?oI9$M^+7IU~vlBJac*G(|Zf&@r?5Klz%`WB=3GiP@6nb zg}YcJeKGuqd$`XvLHi{vvw{pB@V5euSTl_LIdyZ4HH9yDAr|o-G8YYBv63f{yG%+- y2#E=a8xoHs&PrUBd~gtnT?Wy*wSnQCf1vaGTHV@i&=x%&;K>?;2^jpwQ2h@`kGIJH literal 0 HcmV?d00001 diff --git a/student/WebRoot/WEB-INF/classes/struts.xml b/student/WebRoot/WEB-INF/classes/struts.xml new file mode 100644 index 0000000..7f32242 --- /dev/null +++ b/student/WebRoot/WEB-INF/classes/struts.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + /user/User_login_success.jsp + /user/User_login.jsp + /user/User_login.jsp + /user/User_login.jsp + + + + + + /student/Student_query_success.jsp + Student_query + /student/Student_add_success.jsp + /student/Student_modify.jsp + /student/Student_modify_success.jsp + + + + diff --git a/student/WebRoot/WEB-INF/web.xml b/student/WebRoot/WEB-INF/web.xml new file mode 100644 index 0000000..748c00f --- /dev/null +++ b/student/WebRoot/WEB-INF/web.xml @@ -0,0 +1,15 @@ + + + + struts2 + org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter + + + + struts2 + /* + + + diff --git a/student/WebRoot/components/dtree/dtree.css b/student/WebRoot/components/dtree/dtree.css new file mode 100644 index 0000000..d91d624 --- /dev/null +++ b/student/WebRoot/components/dtree/dtree.css @@ -0,0 +1,33 @@ +/*--------------------------------------------------| +| dTree 2.05 | www.destroydrop.com/javascript/tree/ | +|---------------------------------------------------| +| Copyright (c) 2002-2003 Geir Landr? | +|--------------------------------------------------*/ + +.dtree { + font-size: 12px; + color: #666; + white-space: nowrap; +} +.dtree img { + border: 0px; + vertical-align: middle; +} +.dtree a { + color: #333; + text-decoration: none; +} +.dtree a.node, .dtree a.nodeSel { + white-space: nowrap; + padding: 1px 2px 1px 2px; +} +.dtree a.node:hover, .dtree a.nodeSel:hover { + color: #333; + text-decoration: underline; +} +.dtree a.nodeSel { + background-color: #c0d2ec; +} +.dtree .clip { + overflow: hidden; +} \ No newline at end of file diff --git a/student/WebRoot/components/dtree/dtree.js b/student/WebRoot/components/dtree/dtree.js new file mode 100644 index 0000000..049a3f9 --- /dev/null +++ b/student/WebRoot/components/dtree/dtree.js @@ -0,0 +1,347 @@ +/*--------------------------------------------------| +| dTree 2.05 | www.destroydrop.com/javascript/tree/ | +|---------------------------------------------------| +| Copyright (c) 2002-2003 Geir Landr? | +| | +| This script can be used freely as long as all | +| copyright messages are intact. | +| | +| Updated: 17.04.2003 | +|--------------------------------------------------*/ + +// Node object +function Node(id, pid, name, url, title, target, icon, iconOpen, open) { + this.id = parseInt(id); + this.pid = parseInt(pid); + this.name = name; + this.url = url; + this.title = title; + this.target = target; + this.icon = icon; + this.iconOpen = iconOpen; + this._io = open || false; + this._is = false; + this._ls = false; + this._hc = false; + this._ai = 0; + this._p; +}; + +// Tree object +function dTree(objName) { + this.config = { + target : null, + folderLinks : true, + useSelection : true, + useCookies : true, + useLines : true, + useIcons : true, + useStatusText : false, + closeSameLevel : false, + inOrder : false + } + this.icon = { + root : dtreeIconBasePath + '/img/base.gif', + folder : dtreeIconBasePath + '/img/folder.gif', + folderOpen : dtreeIconBasePath + '/img/folderopen.gif', + node : dtreeIconBasePath + '/img/page.gif', + empty : dtreeIconBasePath + '/img/empty.gif', + line : dtreeIconBasePath + '/img/line.gif', + join : dtreeIconBasePath + '/img/join.gif', + joinBottom : dtreeIconBasePath + '/img/joinbottom.gif', + plus : dtreeIconBasePath + '/img/plus.gif', + plusBottom : dtreeIconBasePath + '/img/plusbottom.gif', + minus : dtreeIconBasePath + '/img/minus.gif', + minusBottom : dtreeIconBasePath + '/img/minusbottom.gif', + nlPlus : dtreeIconBasePath + '/img/nolines_plus.gif', + nlMinus : dtreeIconBasePath + '/img/nolines_minus.gif' + }; + this.obj = objName; + this.aNodes = []; + this.aIndent = []; + this.root = new Node(-1); + this.selectedNode = null; + this.selectedFound = false; + this.completed = false; +}; + +// Adds a new node to the node array +dTree.prototype.add = function(id, pid, name, url, title, target, icon, iconOpen, open) { + this.aNodes[this.aNodes.length] = new Node(id, pid, name, url, title, target, icon, iconOpen, open); +}; + +// Open/close all nodes +dTree.prototype.openAll = function() { + this.oAll(true); +}; +dTree.prototype.closeAll = function() { + this.oAll(false); +}; + +// Outputs the tree to the page +dTree.prototype.toString = function() { + var str = '

\n'; + if (document.getElementById) { + if (this.config.useCookies) this.selectedNode = this.getSelected(); + str += this.addNode(this.root); + } else str += 'Browser not supported.'; + str += '
'; + if (!this.selectedFound) this.selectedNode = null; + this.completed = true; + return str; +}; + +// Creates the tree structure +dTree.prototype.addNode = function(pNode) { + var str = ''; + var n=0; + if (this.config.inOrder) n = pNode._ai; + for (n; n'; + } + if (node.url) { + str += ''; + str += node.name; + if (node.url || ((!this.config.folderLinks || !node.url) && node._hc)) str += ''; + str += ''; + if (node._hc) { + str += '
'; + str += this.addNode(node); + str += '
'; + } + this.aIndent.pop(); + return str; +}; + +// Adds the empty and line icons +dTree.prototype.indent = function(node, nodeId) { + var str = ''; + if (this.root.id != node.pid) { + for (var n=0; n'; + (node._ls) ? this.aIndent.push(0) : this.aIndent.push(1); + if (node._hc) { + str += ''; + } else str += ''; + } + return str; +}; + +// Checks if a node has any children and if it is the last sibling +dTree.prototype.setCS = function(node) { + var lastId; + for (var n=0; nL5pUwHh#)|&qvH~*i$ctg{~K6=ubY4`r0 zy?Eo|&4&z;Cq94reEQOjj!AR>|NqZ0IDq0$7Dfh!AO;U{=#=QPfqp+`In(BeSkzi-NR}#lABKB%~EuRJEB+PG6VMR&7zz6A)#8{YF$k zPpL)O!OM^9`wv?qALSNJnE)FV36BfRLVTJWsTB_wENoUWm-DE3pnOrJ``g+7o}HwDfriP+%H`z#&d&S!*Z=kE z|K{fCzP{+0nauzH|NsC0A^8LW000jFEC2ui022Ta000D>@X2QgDb|R|oC=38x?@%aA z3XHC|001ZuX$Aq%mYc?Kr_IsGe7zvW*%XUnbb L&G+VrGgt!vQpOa` literal 0 HcmV?d00001 diff --git a/student/WebRoot/components/dtree/img/folder.gif b/student/WebRoot/components/dtree/img/folder.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb129763dcea0dc1916b7e934fdce2fd8770c380 GIT binary patch literal 372 zcmZ?wbhEHb6k-r!xXQrr`}gnn@893v9&~1=$&)8f4jw$XxRCo$zt;Bc+vnx5?P^z= zlf`m!n&I9q)y<94Gt(JwZ!g^1B)cGw zMSgXq@QJAg2YNM*9XqzJMr>9F(~2^IHB}=2ujK##G5PiD*Z=>|`G33g|C9Rv?>o0` z+x8y>W-^ck6o0ZXGBD^d=zw&C{KUXE(P4UlhmKVLi6xgzC4402GB{W!L~2f9POOq~ zU`a4ovhaqB%+vz~Nx8dkFFrrvqSej!Kd!MF9@+A*p|PG#+gVIkwX>^RSE$vAT~}-J zl&QL${d#h`nsevP*X5qctE;hW`3hadnOwRm>o;uF<*#vKOczy ZVbwl)>NG2h3j?FtrOQ`>yuBP5tO0@?i&Ovr literal 0 HcmV?d00001 diff --git a/student/WebRoot/components/dtree/img/folderopen.gif b/student/WebRoot/components/dtree/img/folderopen.gif new file mode 100644 index 0000000000000000000000000000000000000000..c5c31102d525076f68a946b1c942687b3ce0da4c GIT binary patch literal 376 zcmZ?wbhEHb6k-r!xXQrr{{8!<#k{|N|2{L*q6oUN3z&7>3 ztO5@mss0m7f-EEygfto)EEhyd@^~j!tvR(XKI+JllL;CPicM^J(Q8*-F>q|Y`M%=j z62+dM{~PKQW!3d-jdOF2Weio>+e{5RD$0%I4VAejFig^&H-8?Vk|_5Crb$NHt5$3C zNei(}Fr8zpvu*n}0e-m}r{#G~uV;mw0cLrC^)_Z0DGV33b1Po(Sa(>zf!o}J1>$0ZL+5}+6JHr`< zs59<2ADD$k0dv7VSPBs!85|83W2YWrU{mu%Hi8cua%jT}X0VKs8iV_@s~cN|4IQK7 zlgwVZniU_ug+va|$vdW0wiwXo*|ykB@De?HwLlJxC0N(!S8i(2E~|v9(_+$dE1QD4 z(6NQB0}P|~wBw2sEI5NRJ4=uuOa5tsBHg+7q6Hu5dC6C#RV~P$5g9p@LhLx0zT1=#$;61Slp z{b$G3Cq5tj+aRnLm}j%g>meJip=3z4fBc6cC?X}jzdC>`>6~1Hyp7=2MId*?rsV_o z0IrGVmN!ePo4-uR0e|!Ywb#GtFWpGfTw^6849G2ChCzJ@XGmPPTIixuZ>)mYL-;TxSo$E#hk&Ui;z3lE682RvPTxRDt7BWAb0m{VSvJ=cgb~yz@9V5_O(cZFI)`$`ISCTU`DjBw zyS8egLnhurnWUI?_PR)I7%9~+D!e_EXKRJ1r3zig4{K%xOvx2|%18b>$me4+u^7Xq I@p#1QKgm$!SpWb4 literal 0 HcmV?d00001 diff --git a/student/WebRoot/components/dtree/img/imgfolder.gif b/student/WebRoot/components/dtree/img/imgfolder.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6d880347f518bbd1239f2af3e3059ccb1e674e3 GIT binary patch literal 622 zcmZ?wbhEHb6k-r!c*el+{{8!<#k_3u{{L^wI(YEl_U+q$|Ni~|@MghDua+)ZG%JH? z-TL((7IrU~Kj+DlCo5O3lwA7%*s)`qHgDa!eb@j0OBdvEG*;)$$zqw8!`56^^k}p5 z_Ya-7_UFu)+TYb$+uz;v|9Z=kBA(5S(&rbc{eRsuGoA72{gy`u15VE{KDj_~ajDeg z37uzVnk*{dIyud7L!HE&S<`mx+V>;JX-$>L)2C0b?{GLaORBB0{O{F*<)!?K3%Nf$ zsam#d+5aDt|39h!f4lVm`_9*|U#E2~`~QE=wr$&f|N3)mmgIjBn8`2{fZ|UUMg|5? z1|5)NL2<&se!9W4skx=K)lgW7o1c@{KvtWf%~RNQ+VpAif|G?@nV2{@=DW(VPUdzM za9Zso;A-yDro->*#N*D+IV1gO z@j_>Lk*uD81ih2?D)vTMXLcNRa$tCI39M1!eiVTiL RukLUjIIv`XD-$DwH2~IF)06-J literal 0 HcmV?d00001 diff --git a/student/WebRoot/components/dtree/img/join.gif b/student/WebRoot/components/dtree/img/join.gif new file mode 100644 index 0000000000000000000000000000000000000000..34dd47610a5d7c3580dedc342683559bf77abce2 GIT binary patch literal 69 zcmZ?wbhEHb6k-r!XkcV$XlVHV|G(l-7DfgJMg|=QAOOiQFv;}DH=KUEdfpt3ORshA Wx&LIzk};W<vKC_i literal 0 HcmV?d00001 diff --git a/student/WebRoot/components/dtree/img/joinbottom.gif b/student/WebRoot/components/dtree/img/joinbottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..48b81c80a9e25f6f29e2614aaa33bdf4a4d2881b GIT binary patch literal 66 zcmZ?wbhEHb6k-r!XkcV$XlVHV|G(l-7DfgJMg|=QAOOiQFiG~vH=KUEdfpt3ORshA Tx&LIzy5lkJS?4l0Mh0sDgH;v` literal 0 HcmV?d00001 diff --git a/student/WebRoot/components/dtree/img/line.gif b/student/WebRoot/components/dtree/img/line.gif new file mode 100644 index 0000000000000000000000000000000000000000..1a259eea00c330eee85fb18aa64e2e232d5410b1 GIT binary patch literal 66 zcmZ?wbhEHb6k-r!XkcV$XlVHV|G(l-7DfgJMg|=QAOOiQFiG~vH=KUEdfpt3ORshA Txqp6J8?ND(@^elGBZD;ng_;%{ literal 0 HcmV?d00001 diff --git a/student/WebRoot/components/dtree/img/minus.gif b/student/WebRoot/components/dtree/img/minus.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d212a97ae0d8f83aa39836c5a85d442f8602553 GIT binary patch literal 86 zcmZ?wbhEHb6k-r!n8?h~)YR0_(7?dJ@c;jR#h)yU3=GT+IzTQ^R)~RtNqvreafzu-gC3m_gnAtsyGG)YXIxA8@>Pl literal 0 HcmV?d00001 diff --git a/student/WebRoot/components/dtree/img/musicfolder.gif b/student/WebRoot/components/dtree/img/musicfolder.gif new file mode 100644 index 0000000000000000000000000000000000000000..f620789feb3c4b1222909d255f51aeaa81faefb6 GIT binary patch literal 633 zcmZ?wbhEHb6k-r!c;?CQ|HtI_d&1|;T=V|@`}l;_ON)8`KdAow`}didCU@_DGciej z^5n_Eg9rbA>8q=`<>xo+u1K?DiJW3#)C#D)aIvB91 zfNOew_W$>t|Ni|e&CM||NI81&?f=`QuV26Z|9{T0S(4kfZTk-bGZ}^gQ2fcl$iU#q zpaXI&C{7sIuQhl!HMg)hmVUg|Ta9<%L zB*!hNW#eGnvfRbP!^OqjoL^Um#e}(8(%psk*bWzm73wnj%>wQWm-x821i3D`7>P8w z-n-|h>B!0H=xU{*=yrFzi#XF`MLGYlFIxARNO@hDtWaBUIiPTOMfV7_}lvsu=hh(Z;&NfL@qDJM29Jw4q( Jn2m+O8UP#&8=e3F literal 0 HcmV?d00001 diff --git a/student/WebRoot/components/dtree/img/nolines_plus.gif b/student/WebRoot/components/dtree/img/nolines_plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..f258ce211a0a19c2ecbcb11170b9a8b35ae2436c GIT binary patch literal 870 zcmZ?wbhEHb6k-r!_|DAG)YR0_(7-SXMnhmkhJfNv7DfgJW(FOQ??HKjfy0@BokPZB z!-9j&9Ku>LGYlFIxARNO@hAj7*xx83m?l#Y_`t1M|Ba{La?4kwX3c6}c&WZ`PygnpJ?rkDyZry# zum9<}^Zxw(U)#BD%KlHsjvf2=@89j`-!lsq`N~Rn2+cXw3F)`cNXo|{M zwn^yh*lA;L&u+56RaJ{?r=8t#bK_Gj;^%BG95Yu?zS_*U>z2K_g$4ipCbgRvpFHC> zdg-Vu`PTd?H;48ok#7ReIGiR-xW0J7!Dc}Y2`z_&_QUOboFWD+3JrbT68dFMM=k~^ HFjxZso}Jb2 literal 0 HcmV?d00001 diff --git a/student/WebRoot/components/dtree/img/plus.gif b/student/WebRoot/components/dtree/img/plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..b2c997233b3f7b0fd56c4637c2c20aaf0d47bae7 GIT binary patch literal 89 zcmZ?wbhEHb6k-r!n8?J?(9poZ!0`Y7e;}#&lZBCifr&u}$Og&^0ohtp^czmUT|IBk qf~en0XVhiRX3S&EJ6Nfhb5kY1Re>f2&SBJ{1ibDv2XRV|Dor_^WyXB*=Ku>91RN!zTl3yBbIVx z(geQ%ggTf9umTL|phE>VfGW0dOs3%S#nN%*vE*Enb)jBp9@2x>3JQh1R%p`NKy3y_ zU3YW4U}Q`#nViy?7fYC*mTrH-X7dccKo2mX(s=~L^<(g+r59TS6iqRkj2so5zx+t0 zo0(kzz6vnCo~H$RBRBH)J1GX_SNvfE*Z~wa*h)-iiw*S>Xcn2f6(IYmN~W^Xa^K5L zAex2;PwPjN7>)J4^$VxEb>L;|NOI2mP7BNcjAM&;D`d1LQE7F1uO6=7d%+o2q9~a& z^=HF5f%;G1kxWBiba`M*MXx~Y7eUYLsomU#>SdCrPUj>1OFJ?by71aqM(w;SNCnf+=v){(2QoAPYLn^Co4umpI zZBr+TQf2|-$OSB}T&RT}4J2kXT)9=qY~~&gO+?Wfm<{S%x+=cSPXj28urVYrD5gv> z1x&7r!xs%3p=C(_v_;&ng?=lfkaLrYG$*dMwTX12GNmWsd~wr2�PO#XTOK|5d)& z!4vms05e%S6&9cUdCfvAM{4}`Ll&Au0|4ZI{x#q|zXU~)a%9_I{Pz zF8K#`U8CUK$V+kftzmD{56XRA*JOAEn0*=T9qYDGam8&jKK%R;2frNVs?fakAt(1x zVoBrOZf<9tZI{^DPQFJAYw$bp-YzSMPP;$X(ujj4M^>&|RhjNU%J*O1o>2EXGlIU? f&E;Ccsie~d>oCoZ literal 0 HcmV?d00001 diff --git a/student/WebRoot/components/dtree/img/trash.gif b/student/WebRoot/components/dtree/img/trash.gif new file mode 100644 index 0000000000000000000000000000000000000000..cfa0f000e1ed3b61c8737fcfbef4b78035a6abe7 GIT binary patch literal 1051 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

ht4nsi3yLXZg0J;hfFteu?Bv~LKpJzZpexA+}> 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 STjWM{JY2E-yi+3sgEasWm=bRQ literal 0 HcmV?d00001 diff --git a/student/WebRoot/images/welcome.jpg b/student/WebRoot/images/welcome.jpg new file mode 100644 index 0000000000000000000000000000000000000000..51b19d05f62a21c19c4b8ef5b7529b30c7dc5a14 GIT binary patch literal 31314 zcmcG$2|QHq+dqEJ%rK0dv9BR(WX+OgBumzjH7T-W5ZQ_7Ae1$tBFo4gqAVd~$yyj| z5@pYl5VBVPqtEC0KHukgzQ5=HJipiLH!tQs=9n|*zOVb*-q-t@-($b0fiA5;m#YA9 z?wlAv0RR9BkOmO|EqtT~|H{C}Sa>vmf0+mF^1%C+H-^WjmJ^+3o;7|PPUFVe);iJE=CM_j(boTd0KodYB5Jx}o0|oz(QIL_L zP-GZ1nw)|fLrqPEp`xOpWu&K}WuT>^qGzFJV8SvpGgH&Cvaw*<7_rRQqlr{(b}S!V5 zPKjY*WnDkdj?NM``I#a`W;F3X6)LzNoCKu6bEoSKr$9roE%HtGj1#Xn17w z{n&@`>6zKN`GqfwOUoPIH@CKb?CkFCAI%E{kbg}Je*Ty9f)@cqpioE@`e|(O#Cuo6xcIKInP@t1!T{!GuwL)U|0m@rjKtNP3_Oj{$~>l|G%2q zKPL9?^BM=Jk??L~Kr#U8z)w>m0>S_y!2f9w@WElfgyaeo$${t3m3cVbne2GB@$&V>F`jrDnO2KVcj0p+n_2B-!3z8bJjn78r_!lRaiZmiC=;klp4wyVN zuB%asY-rz7;Q+$?1du6ddc4{*kle8*Z6G4!fJBy3Yr)Q~N7q( z`nlf=BvM~o(X7}K*d|gd%_NW8o)RKV8fl8Q1MZ7WN|+V$Cy1t#{J{uLbK-Yjn*9&z_!9T9ya9AfqS4G2M4E)tmZ=Z^m$t=JYA~Jvw0`l?e!OEm?bqr8e;AR~iweWL5=A-jMSf93P z5wdChHxP5JL4)_3?c0oyMVsm9T@v}|jTwmXtmSzMnyd~;`ua^_7vK3A3HM{)q9btZ zK7;@Zo3sn0TZ~&oO8$iD3KqXx9x0&9`8|5>u+HZT5RY)ZaU&J)D8&6UZ>8-RZzQ1N z8oLZ`$$?_au7MK!Bvf$`LW+V&X|c}GK?5jWO0)(%>)F0wfhSWzF+e~@Q|>0blo7+B zzQBzLIbf=Jhlu2dSpHkJ{@r5n{89_eA`X?$Qii{t*vl>hFGZl+^=orUQ= z0>TwAa4w&RHPg4q`7|W``soG^>sV9wLU6X%*klwEd^xP4*vFZ}-40y37#T`&K4cO6 zWWe~{!E_gov^A*ldZ(wB0x}G^_n(;^qQNn6)96g5MX%s!l+Uj02&0!pz=DqLAm!|Q zK&~w)(;gKp4@mVYhb&%PUw~Lw`x+hY1szraxn{`XE89d$Rx|D8<`6?b)sIXinhlo1 zlSAHFB3fekrFJ`@c$xZp;5HFWl`s5^0JbjqbQ94b`O+CN09k7~ERrgq$#tIu2%<=c zz1S5T;2BIp%mw|b0wSB&a8yYv`|x)EuTKaTz>kOw?C`;%A2n40S$5r6Aj_2mE}ZmM zR|Y)ovnRc1t+6^r(AmTwyW5yq^S>r@Ew$ ztp*P3+vsMxp5Jn+|I0<^g_k}p`#i(o5)bEwU-aE$Ki}?IQteEIvfbJ)Lf+&eAxKE$ zSse2-xiOC@y{{hc8aROd^p2UKRJEYcClJeLJUU$Wy5=}^GQZi5mVofPC*45+ry>U7 zUCET~dgKVeJm-iA9JO0uznN_h#CFYn!iVt}0^(OTe6H@ptBIplmZ)2*4V44hathab zW*`n<3vNly4J^FRlH$T=BH(Xe{O)8C@M}2n zU>LTQbQ^f^XEE;%{K}B=8XkG8`rbx8M88}_tKb7~C!(r)86e<#c9x=34%n_w?L!$5 z5bxB29aF?q7ZHSf)YLXN0Wp}gM?x0;YsZ@JiID^i{)-&{;UB?LCm4dFjv$WKO7aQ;Eme zba=3?oq5ObTEI%IVzF&<(e1=-hE(yav1gGk*V;&_jx?k}gvKC5@93ZJi`YE>aS_bc zlLuCNIiTA=nC(QC{ZrqkHku85}U=9<255a*D|7)H=Y9=O-f+T51QGO)_5BZ0 z5w$|Z0;d1rrT=8|KuiRVK?S$XexyKRv-!XkS7pU(QyjqDwjm&Or82S58pzLe+t0pT z@CMcEl;v)-vG#HhQdMYc60g`e0j|zbNgb>!wTbQr5NSw0f0pRT8FvPLoKA?HE%9gd z>UIwpxbAM%DHFm`>vm;U@#EQpMgXchFVHz-sbrYh*PJxc&R`4FVQML z?{KGSPy68WZVa9i12S9LBZ>v8$gc>VR~ zuWMdu9^!k-4@<@qgyL$_B@`QDr^9-Eh4QOoE6CaVT*i{x!?=S+#>nSrw^_iCVNYwx zHw=IZ*r7K#D8bf@2-I>f0u$2d05akeglNVCYz(6iVvJiFM?Q7yr!T;YYy^ZKiGZ32 zMIvgG3^;jY`>vZz;9>J5K@uoI!N4xJ@)5L{;rs=mXx?~S`93C9FF>0mGbTA zMO3!rtY|rBgj*6RZyHr4tNQ50TzLF#^6V*t!Wu50%cm5?TW3c~Bti_n7#aq5c4cE< z+xOE4UUF(&pNpO0R`TwcjQT+G@7yWbENzQ&8)zsh4;Y@xVlRg_s4iyuwCR1yXaJ1V)12w>MY_gW^Iy2OFwPZMIck-jrj=bhlH6?a@M~yLKw+41Sb*Co;~u zXq|pg(j#0F81Q4gG1lJg6Dy}rRQjk*c283-W&88rz{Ay_oqFwBJeAXl<2%#u@1D`# z&!{(evnm?Qj-wlGib`aha#fxDN%MeTMpaXLBP()-nI?aE)UqT&rFi&P>Xuna8`GLV z;iEAb-P{y=Rk!B{<9uwADH$G})qrR%+cFIxH!&ZmN&pVdabW;cuY>{!^p+ll=&E7> znyyZ3K*RSm2~pkL;j?=c;{0+z0zA;gM6v@MY|mKP*7iw=8^5-I5MmGs{1WyFep`qL zaC8#c4@W_(Tz?-N{n5|1f&;UY?voZEDR~yEXN<3$3_zzv7c|8iga zk6uIx$br;JEGJa z<%~W{{RVtV=pw>p!RH$^73qU^oxE~q54*Rq;8WV5?JXi2P8uln@od_(!NafokkD?@ zx_)amQyIH_{3-P+$p7-0Q(e*T1NFC+#WB*nYh~bBm1Kqw3mj zte!yzUwdnL?V{WF(zlUbR_Bza?=ZY~;`AJb8Rc=(q zdeAjCV|cGOKX0PSMM%A&(M5+zq(s|7;*<R4 zckW*={y^a6Y~l~Rh0TFB+Z>~|l`JePxRMgIoe*O*dic#VFaU1&FtqeO) zlB{kiZ{=8|UUCrM=eT_GD$k8(6a(zgN~o`oS0>$)elPT7O0*7`6~;=@+r(`v<^TnA zwD6uPQNbuRs|~F6a&)D9<8=Y-21*SXYqMQ;e!7fhX@m}~X+au(Yr4o)%~3dhRNDfw zUDT?8kfIx2>Zxg1>-M9k1d@rZjONM8J4+sR3Eq8_jyZ%9oa zYOsOhdiCLwi$eHvk3~(|jZYcKuR1}%Hx=;>e$G9{elx`2&Xd>Of&0{Xj1MNSJ$c3e&%{<#Cb}&fsC+3>wGhp zCwb%N>jVgV+r8JGK6EsFsD0_fxY>RQbIYN4!2>bRfY|4vAFmRYcmy|iqj>!vmVN%f zGc6>@+t*lsVc}Fvl`E%c@3p?)z}cV0p@NIJ6X|ivRSvuoGjqRESFhA&GqWD_#6Nyo zc`++GC-mc>_L-GWY=RDHCo)bhx-E-rM2eJu(x`Nbsrf=&yj9)V)_c));<9l;S2LH* zF*~{fTzO8Lmk=j?+1K&C$J+Hti^?b87}ErXX}XO6%vXF=}if%)jpY0d-Q*WUqosg zW!MUQS0ND_D{;};GQem2K^z+wAdBOQDxaQu6CRNOgAu2~W-tB*s2Iq`+$L3cWW1Ml zcd+2Hvi5VAvT=#_jJI++&*%ik5{AK02m^7*X1O+>SDb;^dW?gjukg#<_I@3YX&2~e zIv(2J#IhUy!iLi%f4Q0QVNI^b%&i8r^`1(9)cTEZKgOMgtSDwtvB$g;hg!SLGuct! z=q8IeDO`Y&pkXNIkPoGonBFJt)gik12w*x%lHPk6C!#q1H{CGGzLq zSCwfuGF|WK6-VtKxRC>+OVI>=$`dj&T0Dd2sXp3QF4ZZul$q;rzbO>?W_I6z^KpV( zf&6_5{m0&A9VxT{K=U@ruOwbOP2pORuNTu^l1Etd#@Tj5e;vkq7am(1$KSj-JxWu! zoA8Sai7Bu*3uRsz=ySt|uGo6LC^6w)h(0ho)EvN+y?KycswZ`Gaea07J!xQO!dK2P zq@(B6a)9;8)u(l4?^R@$5*sC|8bZyt6hkFUZ@o_56UevEVQL&uckPefZ!u5)@x>@L zO3#=9Q#d5Qg{{q&tf{=^^`c!{Cm`=obG`EpzxL3fW?}!UCu!l?J&oxXvRIk&Xw1#} z!bPdy)(c%2Dk40RD%TS;wqhymNYl&Cu+Mzd){j<{y8sQT@Ac}^ZuXsq@rVJX{_A}Z zs0#3SZNpI1W+I#|tC5aev<|ly4kN6%x<^7h4ugID`vH$SfCE@wbt2OiL5%&KMu42u zn;#nux4h5j*WI1@%;NHilJw0l#KP;klgF#fMANTm9~;FuEfq=b(W0}3Y#!H{Vzy}h zufY$5g7GyH**SOQ7d||>>aXNy6rD<|IIgV9ob|xcx#k7;-km6q_R&n~$oEfgA!(;# zZZ~fwVh+z#Zh$O1yo&)pXM7@W?HCdsaeE4LjQ~@@JXOtqvL9`eDiZ1>{Z_7f#I)F3 zz}HDkFfL9;swe3ijb^^ytv9qD4jpQOq3@cwHf|?>TFTxyHe%e{1RfOA<(|~ArOEJY z;*_%KE@~RkkuW&n{CrbA{uk@+|Ezz93l*oL)s?#27w z=;tWkGVZgj^EZ4+!G7B%<`}Va1>~yYPI%0B7duBt%k}A)g_vPpG_MT#e#{5U^s!f| zuV0`})=Q8S9N5JZd+Ku&N@xmxts6coD0n!N$P^fAcHijz^{Ede_OyrJ&csnz%*w^XKP#P@yj14McK(k z!SXYT?@s*UcqyUBO(n#NOyvvsB0t2+?#Aj(nz#oj@kU#h1wm=Ef&+zk>>QWfPghgp zE0-EutIlnSb$=68F{?QyLolGS4jFiv;W%x~Z0FD6H|6!d47jGnXQxzzFxbZ<5Uv(P z$z>ks{P4E;CH@Y#w;z%}jWVAUd~u2yxBbj@Wa&zA-TTz!}~J8$aCQ+Y#q-1f2iNAW7F3LY_M z22|Vquklp*hjJjQB8o^IqW9+9@YNUhxcZ87Ba*Qkx6$0ii#YBnnF=L~^BUy0nL=bDMdBc4L10J1GA)rJx|Bbm}@0p=p6IT&+?;|QnzAPa=B zkx$%E1#@2P{Z8_H@mHNDmr|~mK6w>3RU38saR3`3|5A^Z)17>M1|I8*+6$`vRJ-v9 zk}e!8-M6OiYR4CGz5I|ZL`kOk z(YTYoKPKIR{jS{_ODm~=;Cv^4y*KA+{I$OO2D{a>jnvGQ8xo%%b~18Lihsy|qqtil z_U?m4QH`@(Ug+p$d!ElXUNxc-FB{f4_IXW0C^Lir`_ zGNqsSI}d#?5NxQw+N*!~vSmv- ztg@VY0=wtdrE=pe+a|4-E(ECT@LsJ;9Nzy`saACa2ps8&5JWR#CwWvc`d?`Zf*~C! z7V~iEdUlmOWb)DdI6TxcEC;P5g&ELVnvq&i4uZalMCwTai{S=#@5}GfB)Z={C=JzI zNeprcTW(_8h>wnu*z`D%#NPa|)+YMvNsR$51_x%B{{h6Git%z|;eGnW^m`+N-t?uTHRJTry~MTj-Z5V84!RuGSY{qx;;LQ0Od~?OVtxd|u&J zeQ?a-eb$E~t%j{ncN)?b`e^AsaXd3tDnCYlT22ac8)0Woq{&>G1bTA^pDm(9M*WYcRvUWL$bt(x(mGY6>@F}@A*{LF;vw6}t@iYTgh#U+6KgkB4{Ucs724ZVC#wRvq(ARjR_nyBOI*(TJmLDh zDmW{X_-iN>7`=pd?dUsCuGPxSn;9@T(@;sj=b*5|dEyf5@b$#kF1IKGCEv(5j*VW= zyEO1|oV%r|jAWtsNw{VD%D28XQrgT?3*lzwhWf0|olvof7t4%~RZsBVHwwFhKYd;O zjobGV@72m58Ezh`MJHZlTvnw;6*qGOY_pK~!rnI@39{yP&Eex~yv3LbE=m|FCndf=3Y_U;%OH{6D2tG!=mnf?U0OBc8}Mk^r-ZO* zDjZjPN2nP?W}q|`^|IDZl^MPs)SfiMVYV0ehQi=Y_2CfbhV)@EP?+>{IiUeFocfdr!ahXCpJS%L(M^g6EJv zNxPO=cX&HwHGx7q&bXaIJ0`ASDALCQHz)QB;4@tpjgczBBf&WKAIhrv z&1n+NNG`J)4SU7f?$RyC^+J2+mAvxQ0?$Q90up2%K6E)I`g zcE5Eg+xo~v{WB`SYzb<#vx39T|0B`nK?#>xnPm_x(}B-C+3yA6VIx+-_kfE;CjOZI zZJ$UjTYXdlhYYZmIre1ATe${G%)YO*%`6K2255Ije*>-8DlU<~8j5gmnIBqOwH88` zEOE4Fy}bJHlxgXJf(nn$bM6wmlYjYohOP!YSwLJ;5{}vN_IEF>)={x@EUbm{7PU5c z8>xa3;mQo{hH|5^W|q5s0-c{R4eA@1iFl)Tn*QkS5RaTo#^2TBZ!S38oARNmZTqBD zsK>Nxoc8P3P3jF{h-y-kebo2fgw03l`jZC^@0V=j7Y-%vG+(x~__Z`=)>iMF-Rb>; zyroY$qJ=l|CfBs$E4g3Jr(Q8#?`mc%jr1^SLs4T8I|ykUC60y|MzNL-xB~*8#-&L@4` zF6=w@5#|?o!IwiTt>7po3CL}k*U$RPFo4*9R=N{n?RLbZt^WZT0K^t%SjZySDX0>y zyC}lituWRQ;0+5+&UNxB5FYGwEnEc2v14FK6NckzD$e;f;lHtFfmU}v{u_u~3mq!d zb+FeUbnkHmF&KhNpRgMv*>}y(ys`dVv`6$A-Y;IWfR@qLq$7lp#%VSNc(!;1SzA~U z<`H=V-ri#0?tL)Q^~#{m){9EH>!hP?aL+%Y?IeCUpSjB2(?TV8M!1<9*->_U@(B%{ z`Fz77`rDlPs>IF9*W0WNTE9pB%;~iVPuq-+YvS3BnEpAWQ!*}VegFHXGYZ;m!?XFJ z(rN2I6o8Kd=Q92z_l z7=?~J?l>Te!T{vbT`;|Z4YZ(eN9hu{oaLxRK#E=~nzfjt>Y{xSib$Rm1N<~BU#VO< z149S@sX|Kr$W%n^wumAzY54zF8bT;q4Ug1V1bfgRm;%rR0XAVIJo0_MI1pF2ss%;q z24GH*J555K+9DNPKZ6qn(uNy!O0(1MTv7bUO-(J;t- z-ip>!odd`Tc4nSzc(6m?>E*FUL;bdnEkr!Mh9};s-&%A}PCq7X`j`68^lN^n9_+LZ z-MV@y<9X$y1z|Nz=q~F}*%z-JbG5mX@0Fc5&UT*2T7ff| zmM1Iz>D$RRA9`MB>+tcI?K4=1ex?kjg6h?GD{5pNy2sG6GM^LcJ&<)rBdZkt+2FS*g0BKk& zvOF;TgcLUV${2b0Sph7y9-=vrc*cWh?;+P|*S-B@+HP{qkSubOu3Fm48*{DuIbt~4>ae+aJAg(&|Avh5tT}hO@u5a`@dKTrezLC7V!NsUwVMc ziW!0-2@XNvjg7omW<{wXfa|pa*oov7O7J?N)B`r2f>q%DL)-W0(MSND9w15?rfdJB zQ;+P5w9%BLVjl7w-}YfKbbUJ)M>7og<*{&BLlquGhYO4JkK3h&6=Eb2(O4V%Z#z$> zB$siL1h6O6m0*xubng$*#9=Gn6QIoX&28dX z&~Oc{*$YRVinGap8DFwHFqIB~;{fnc#tsql{fv|$HD;wy+{0UjF5d>%F(T*Wq^LJc zt6)07qogv{onWqHX&QxIfyqLVq5LW*xf7~e4vGUlG(J8gAP3Hyr<&i3(q^ZI{SDi5N83Ll=`F8>$k2J@HCsWGlw+0FYFD)YS?nS^=y}}dD!dW7*HPh>04 z9YKlKF)7okZ8IvHo!Mk6s$ zYqQs*LXYhRdv@Y$6j*rMf;|+D@vb`Lhn{>i#}KoUSYy$VhZerlLN z260TfHtPX&dPH{EGWz`$#%t(`uwhWABXF=gAa}ePep^w_3KqH$L?)3zoAO5G{!qSZ zyB*uA4l#1kCoDUkg$4&{pr|=cApK8r`OZLG10}SN_Rn*_`3`*}P{k0zA$4nisu(P- z77JBuwyQn7A+AF75xQhB1>)bOdz2efa(_*DSH862I7ejE&~j+ zTOl6K`4aHBC;pkIA)qtFrfwSqaeP5Q$B0M*49`oRu+s(+H4w98>6-|Fp)x$1b;3PC zlsn8_p>fcl6EP> za$o>IMD1J#Xm3P}L*nOHFN+|mo_owCWV}FFPr1vZ(v%6cu>s!ZJV( zmg5M7*Bz8nCV_A?13S%Au;k&8QS9}zL^x!$@zOVe*ol%T`$yljn-?B+9)%ouU;+aN zsmf|)IJyp(yJ4Iz6G^gK%?c)7V|tcUfFPcQ)$cS}gr79|nkyh9YD3obWJ;ukNcIO% z_=n?U297CWK`N+|@9GN#`?)KTMF_q;XL&mzY1qfAf?On2gz6$Vk+1;KPlvI8;WD*T zm@ungKemuZZVv652LBYn*&yS1+{_R%NDDHT9J)`C%*m?xBx80Wt))5Xh1KnYHZ0hG zp+98$;;fh5Jo&8~R3Y8y!fGHWAWG$u(~O(XJg?BwtBUK z3g1!&$^-?3kHqR}j0Lp`-bNxZ2AE`=*Va?_vlwsf8{55(FA-Hqn-pKT26`#&YgPCwe$?*={IV<->Go;ND5>D)m5vY=`GS52p4|eA7mo!>Kb_HeLmW-9^VptGBp1iwgUB-ZQ#7rC(Dev<8b9oQC2 z8j_JOBU-bx5NsFIG4wSAP!uxZ#<{HMmqFS~x+pX%#3k(1vORsW3#OGR27N^VFHPkf zhdEM1{%7sbUj4#0tn1Gu6@B!gLL8ZdcLiX7r@A(GRBOE_Q!#~|I^ zD}*qUIx${=z5l-29S|;qM2;9w%=5QT1+L)OANqq~d_JEbrCwug3!2UzZ2~g6ap>xc zOi6b~f^g!3rD-@!zVrV?zZ;%@zbvZ2V*JpveBk&#uQjkb`~&7NAh|)yz#)pcdVyrn0Lu!yElV zuCmonLj0-i#bN>8Rgopzn1zYcwvrF)>kj*Qe2+85Cpe{Qn5GI8l_wV)`Mz)ZrK8YR zcWOp)cC*xk71>K&a^!GRj-prk6oz98=5cy}8%zpF`G;_^JsL5Z$aX*mPAoX{0Y1fo zDtk^%V_$@HzSHm(wuy-hyFnK@{+q!jtf9B>=v+?Chg?jy@<^T6kfZ^-T0m84-xO>f zu6FjK8b1Hoj&rbBii_3-;s8J*5I5XygX&bux%5r^LJX}-)XWeYoTeR#_x23L_q&fQmB~$W$=eDV#Z;^fmv zAfVlio~0Q2!*=5j{7$ib#AtI})|O2NT84c+7st5K*1)V^2pYIoxV}sWv;NDbjd_go zbkjpCI`l(X#B)b<>^{%pcpg%B%Mmsze6OTBDWUMFVPMo|6GyMl%hnEhalhW*l6%my!H`7q=gnkrzs5_!B`3j2OcrJf z%<$0WnQb)m<0whiH#YGuzUiEJQ}btL)oMuo>-D$s;^&pFRyiD`8Nb|d+r0VZwu}8q zQ|jt%Me!?U)nS|8UOsURWgRw*dhR3gTrxKC14eB8zvdS-k15OFASm~J*|ek7a>3XdxJNK_9nrA z39BbZ(7-T?FR7WRdHf#kRmQ5#)ctckQkM4~>syF3q7{EUO*XtNV01u*`Q{xW%IEk~ zb-9~99l$#74-nfAMd%x~X#j;JTqhDgQjI%l9U9I_8p0`Z4FN>h#%sGe@z`*#h_c0ApwLbC4Ylkj{8YGf*$6ygj+2l zD%)3a%*Uh40Mm3H0wRM%A``u`5(7Nl$kuzX7kTxicsH-y;B(7Mx;>DxxrgDSp)JAR zfS8gb%hiB8hYESSuMLA~u6Ca!UWuz{E3EaXo}Z~uyk^6#)b2K%HdJUrxVf@H_ak^j zMJCyH_eS2xR_WZw*_{nKuL-zV-%nxD+C9=%D0hRoqVJ?;52O9L^OzTzrKM8MFv9oP zB3IdacslvHqMaM1Duq$&x)uewIT3Rc){!i(ryl^y*7wC(D;;9JypzAvYcC0=EWdtns-NKldgjbn}iX=M* z4VugcTq|qdw1x%)RwLgU7@+WF!!J&FDE8ExEMy=N=mS@&oD*nj* z2=GTB)Bi17qR+r1n9?D3l08I!>KvA~?U7f^y^1iORgJSoN*ypHB^@yeapAn8dGEkf zHi$OP5H;p@?DB^qDhkyO5qdmg${9sM877Z$7a?>_Z!~iS4dE^VWX&ZwbVjfRbQG!o z*#_?qs(_I=W+LXL6eM+e(9Y@d2SF%YdJW$^zkLa-%q8jRhErOh>eXxw_)K^q{8o6U zX6~^3H}IZFXSV(&MnXm3W#MCHayjFf&IL^zCud?2kxW1!ACAUJWG+{_JK)@k6b!3; z*{%wnO!U|sOyi%wo#2JLJb!^-X$fcbbbxClVeVSP0#pkjZj=t{p2?9`6!DyG6xEiQ zpi|k6UDrRe3nkmUiO?AhiY?M+)cy@z3n-844RoVRh)rdKLvzLDE5oCA_HsKeW8SOr zey)C2d3B&Od-9XcrWW6Jzs6R1`zCc(4aP(H^=TeeJ;}!d?38>R!Mybv2P2!w7E-UJ zzJ5VAGWb(ji9BqO^uVi%B-XPoa9W6a#|sESjs3$xzv};fv&TFtx(ARvO2ki&T&YV9&ZM2cB7I zmf<0@;`&tbBpMCyx&m|gHLnJ)w@==GRA`!|tnmB?5zdw$#+M!HutnKiT*gSPKVSJ) z1r8%l!-j}}5Iqk=94rJx)x94?%=xzNW+KMB6;71rZ*Ri-9_JGSlx~nvTK*X%q!FDQ z5S`$aezWZKn}C`*j)Y8?Qmb~1*aFD*2OowC@#v;}yR2XyHlo@&0$+?Yh z#vIn&jq2mF*yje#9nIY!3xd5lpSp?L{`x+NhzM_m zWn&NwYuF0}L>(LhsB@73a#sw32EbCoOGh@DP=#r!Wf%>!(!(IMRTud@41wchk$})L zpkNMp5Fb+|;jHk1GsF|@a%7QR@PH+YBH>~1?;Bo{sEn5?21{k&&MO=Rt{q0bu)v_I z7^DeF12qpLW9_ha(y8+&}gsO0aU8KR^ zxgOo~;(p}g-#|HzyZ$?W`)Clr*2W(mwJOla3Us%#!meC+ z5aKWr0jcmvg#!``>pQh4P{obtVLb9>hzJPd22&vfP)F`BL#TL^eISnDNCa6i0Ec^z z;GZ8v@?^AW49sR#8qYkPjyciE7H4OAHlYNE?fNGKnVSG6hHnA;z-?;h6+8lFtcfgH zpqM(~I4akRUO>>J=spr@`aFI(!@bCWR^b9^hq1ebs|4ATK04(aO1H78z2Q<{IbB&J zo;z>^Z`AVKDW&L| zV10a{1IOr-r^9eGbKbWyfn(jP+4*!hR#c+XLT-AqW`N7};tSm_eyD&4$%p0CC3U(* zeN+-S9E5}+aM@m#V| zwgsm*H6`-jJ=kH8uYTj~rYV-{ba?vx+{mI?Thj&H_jxpf#;?WM6`OlievTqayhYnT z1L4rg>W`~owqslP+j#yNWMfbw9wJmU4hbnhnjEzraE1UD<^xh$B4BACks|HR67E>m zl@hsmLDMAsIsSA?ELYYR@GTgR?8E}gN45@4n*vk;=k1uO5k=%Lk8&_=KI;3;L<*yo z=$^#nFcuS(14az8CdUHi_x|DV;G1D6m%t-GLS8rq+EhCcxD7F(3gpUoUW8DHerK#_ zKz;Cv(JWkyjg2EAo&8*g^cg#^{ib9+dNW>+RF|-lsn0y!dHOt=Pb=k1xGN@j;EvB9 zWx%#zlB1TNU5~Z~Is!+FmIFrPIDm3N9T>3J^*%zRFhHT4z!63P%kx~$R}n;hE5(x& zUm1ccx$xxNeT|5kw}kQOP74(bP~ag?Rk?Fpe=&l$j3dl{v^8LU@}t_8EBQ$3{Tw8_ z!06-G_}IF->rPy^ug5X0zF)bp$Y`mgen%Z~^YjLPZ@TXRPaZjcjXi+=`gtjFKB;Z)6S{>7Pawr!=d+9g@r@N4i!K$C zfu}p}2YNeJ40GoVb&n@2e2QIJwSGfq6=n4$-Z4I+qfM;Go8l?L8gLMr#nG$SB$E>m zr2}wibHT2wPXtbHSQL?RVDF0cc1`*M1@!9G*P>9f-#{P%UGvZ4}uz3{tEB^j`IH= z5DIW205E6Ek5PO|t@;6qSyAVJoE(q3$fZky!Z;cB2QhXL>Ux#u7|Zn{q~8ugJj!_F zgTLj)m3tJZV1c+6le=GKHPC9k3#VTfmw@(Z(@NR`!zPYoNl$w}kcU=X0G$n8gy>Gh z-!sDE$zUZtp^n7!!JJ|&wX6ohF(|PQqE57~_|t|BZzuBZ9Ya7c#M>1(4o9Km6RyolF-Zs%f{Bf1i(>jg7jbDv3-SRAMh9WPTX-Dh6eKvLl3iB6{#pm_8Dw(?F zz~QBRu_7+&U_ALqQ~FccgcQ*4#KS>I_@bRMO!Uuy8&Brw$^ag#UL6rSII|FgSKy!3 zhW0dxkNB5-MpXvKRk|qV)2?U-DB@)deP*Pw>nV-ZIR5I_FPkorbYFn)$!phdJm8fY zy&Y|T)x&M{T%+KfirbFoUy7b}9~%gU+C~%b0x)2rtu59o@Ga3GY@5j2psQ@go`{4& zaepjO0vpWbKivexDLf+LD7Ppn)}Q}KPbVCvK`zC{#dDPWDA0Ch4TF`}Px!C%Ba^ky z?G)F89qSC=pBb{^gvZCWfKa&@`iVMKFAct{KA*x{E+ks0>j8M5m7|tMuq_`&2P6Gv z!6f8U_+l@7v4BWBAeb=~Di540MR$@&z)umd(NM!Nc8J*#>nF_D0q)4deSh!XVKZX7 zsE%uJ!HEKqngWJ=x`*XjDl%wwrY+FNiU~7XNjNTl)t@DJI?CM_wp2E;;)8=O$)}j_ zcEgp+NFb;|R!2o&(1Yg`y9Jsr2Dr};iGP~ZbaEHmtc^L&epR>{xbdKFhANx+-IY6X z9NyWfvhT9Kj6)JG*7Rn09Fex5P2bFB${vy@R+|CvC_&NOAp(xUrH#L00xZx2VW|Ge z(Gy`D=I@qU*#rXp&}i((X}0&^LzE+rRB%jdzB(a21=yrx(D9m{ysGIU8fLWyf7d~f z<@aocHqN9kGMQqPCJ!dcHJ^xD4Z^+SZwOZ%Uk(HDcRzmdM}HoCtufuFXzt9#BdOLa zG54u7Ezf^>i4R5Jqiq(^!hGOPZ6K~QDb1wftZL}uCdD=>vJ2fwKLzHlVMsOlqr?X) zend@}%sK3!-b zA`K$c21CU~jvoDEnWL?N5I~HCjJBrWX@oCB+ZL^dXoK1jETssD{iMSZj#eWHM}6yc z48&N9CeF$M=imZ3`V)fq!ukdE+Zmc}^phCCo%nNFHPVr+0oLv_k2_&=TzC7LQV9}c zsHo)M?uwQ!B|QF)AxA6Onk*6!x5xsM4axn6%3;(!d$Q}+eA1TMFt`{n9^dqs@SdrQ zk(s?O=%)y>S3cfot=%#$q}#D@?&VUp&l-+n+#$eN8{$g_AK744C3v8~zm4dk;5i}Ix;e3_Q1Z^%^ThI5~Um4A5GG$nS^Zg@vz=5VY_u|pi&{-)* zb78IqA8T_T;03^Gzgc#kDr($qF6x>P*XBBRN}ScUiajLUTm)_b^RVOq`y-nU+lP7h z5^v$}8Gs!!Iw95Z2odW15(9CiA&Nmx?=SK)a5V}@4P7h&p9P#RNf zjVl2L9)+sd;_t3q03B3@fs$mn&%I7vbeq2nM4kGW(_cm)_xqK-5P{>G{}lCtDd`@} zh$O4?IQnx{m~F@&pXl)9E*%aokY>rV?+CJfzFsdLw6d+Q?m zoL`HbA!|9LWbfe4u7BVO{W6{1YqL+s)dJUTJ6>_~&SWKuPojo$>NfMmZcz1^(fL@- zTRGn@foWMfnV7@49sTme^u)yLPRWDkR!j96Xc}uAl+ZkqvPRepFet0%`@X-6AKLk`EFrbaR_ru&OZU zC!q@70iJAs)+yv@c@WB!^u_GtVeH?>l%20k(3K(izdLGVrT`HFMFQ(bn0qChT&4iq zaJzee5d`~KNccGsEyk;uGt)H&V{zIStZaqU?gOxUL$qc&lb5j#^#ijU` zfQfjkJ2Jz~!S|RGpFcUvR@W(9w~!Bd182{qK*>44Zlds#1yWLX3PU{6`sl7swH1RQ zr5#)`z|Ore?Gpiu?XXjHgOG%#`^$=U;G!ATq6oYr|2c$%CxV3iCGcOO%_GFK3O;Ey zMMCo6GL0`!uCR)E?c|qm7^aOkMrD_~d|%p+ZwPqs5@Vi|6hKbius@W4$Ivp8r0nwT zX2fjym|I&D|FEB-e)C{WYLRu5h3MQ#uJ3+glm}0mj@z-E9uH>s{+OSrRzN?vezK*X zb5Tm7`cvFa?%KN--D#fRieO)*l#Q5&fSq_ApZDG9U|WH|Mm6NVNrHl`_C|Riu8~Y(%n6Pq|)6;gNSs;03t|BDj=QGU4ken z-JpbYN{pm{`g`y_=e&OJ`M%#@FvE3m&FuZGweNMWd)?a$X0MmzIrVPeqiT#V4()?Y z)~VMUzkC}m?fj;2It@ZSL28s3%Z|%9)6m=sn5Nk?HSfFTt;$uh17AqmG5zAqGPNMP zBEtY1XesdYw;Y|w0?2<&RfLg3iMHzx}CIsS}N5XtF)d--3; z6Hn3}!UE*4w4zkzdvKI*Hd_L*?un10$&7a|?C99#q+e4xcdw+moe)E%1?JYO z(x!K?`~pHF1LToU_R-3GtUgpbWYHXDg}C#X4*CyG_F;V=m859H-sw{juy^k$;(JWf zaz*lUVTP9KTE6sx(qNKE7RgA!*%MP!!}~>+_R#tlK-*w-ABO{`om(eREPhq|DRuT2 zV9)Wi+I5O(raeZ8X?omQEIBaytz>J+o@vdK($NPRBIF`H+K);n`YL21kIf zq8-(AVt>2zkgnoKS2riw(^-K)T zDI5%ve*yY`{=h{gOzev7; z?aaQ6UEOpwY66v~Yg(xh{j~MJfNLUcxr^a7_EB;lZc`e3B--(lcl9rn8=Hd+aNf#xLtT&VwLf9~ukBl`P>Pji7SW^&?A8yPEboKh)deHm7d zs>_tfy+~rAF*VN>y`XbT-Z{5${RmBo^bKIvV4>256Y7VZ!%&CXM&$}81JU$91LHqo z!r%3HJJ<+uH!i5}IH%U;&NF!w(h#r$2@MIq$>BGj67QUaOfwl&E*4jiHI#Rsh^Rj& zAQ?(MzV(UB;yf~z=+)yV`Hg9nxOrJtVCLXR(kNcp`{=|CqZ9LTMvEawu z_JLrw?@Cj}QE@*f}bvBC@lCC7~0#1MaPuTVbz z($b|+)-CP0Hn=`|pPI*4^3h4X_niTe+!yrfGFnQ=83Yab4Zs2QSyc5mC>*Rn|J%9< z#3dLin17I`ERd?s5(~yacUg!r_3q8~C5B=MFA7>HU^K{BBV5?JZOugc8R*@(KhY(3Ant)9wUgt z42GKNLR!SC%D5fn&oP78t_4IdM7h1n~wohuP<9g!rvXMTXm zmJUi}L$nPiTDl#j$i_SfZZ(~mWs!P7bOtuz<-x54awnCaMHbA2rglfpc?_tyXfHHs z4m)TkgKIsE#cjniS?rwF>tH_<`g!8f(zFZPhZ8r)w;k{a%pEWB@a9%}(O?vO@_X=z zkR=2S=(v$z0Z1XJz^{h}y$eFbzt`dK^rHv=GZQKNa8*XEQ`tU+np}74AP}~peL0;H z(+Oau4Aq}NFpjW5X|!7vnM)aGoN!17Bj2BvSlrivP7*_?yKo_Ust{*1oZD*?6%Zz# zKkKdkM9=RxaX&;*OB;oDp8h_3+?0?BGHcBRb41ZeaSE#P-IAak&2;Hq-fLKc1!(~a zg0NKsY7gWB5uq#=@}441O{v<~Y(~wlDUvBzI^Qt!KQv^l2^HUA3|!0Zp8fX2FKg!Q z8{dp3D>*n*Op@pPH|*oGw)FQ4Q;8d#xv5^Agseg8g}&qApC*H}!!H7z0u0w)MhA@d zZmx_vK|8A^MBKU0E=qJHN(a84FVDYhm{wa+fb*or9Dcbm%Ol8Mm|?MHA7hXBy6&4){QF6YVl5|Sx|pstQZf|4%*Pki z6TUsX&*5k|i;!aGkbCXRyx003oF0ZFzRuFv7nSVY{#325FvU?aSY+yf_bBCAoZoTO zHFcGP1JuqT{}+(IGj6@yG&H@Xf;Tm_U7VYO#4&=|Ju`tm=b{{>I&Nw=gC%-;(pTK4 z3)XfI`%WC1zm52X{pTIvr2tkH8X9rGL-33EXPH7mj zos_|O`$yOqQ3~%VQFy@{owDBQR`bp9H{<(FSeR4c>hNI0ALKZVmXx8qwU8XvfRR}I zJCXbyKz~P-=1nsZdEeCGbSiu-D+L=qeiE}~EG8U7V7?|3&Fk_ro%$lfC^R&Gv zmtmX?GhLXeYohG~?ewOgr`1x6J50k!X!GRGmx<@B+z7`l45Yp;sTfCuD5i1leJ$32@JSY~qa9G(;lM;VX|q^V)=C(ie`o zpI^qL&p!9qhs`B+mInsMmdy_y1x+ZeROp&(?^Ix@M9YkG2!M^FB@(?pH~8qD`FJyo zw`)vO%z;7Kr7Ui-Y@#98z373jh$PHxr za|0kTV|2v>O4@TMe|imgU@Rf%OE{8U^<+pusgjI!!voBWLn4jN0IMkb(8e5BSY;40 zH$;!HrLW=Uc-EXrM^O;h$yTXH)wA-5>3xc}TmS#F*+R*U44cTQDImO290MoAN_gdz zEOHZh%aVGPEH&L09(hXG->kezhI%6xQq0&%og$f9g!bCicvbJ0W)ufT82O|QtWrFv z;~>Bs${i7kH!t*_EZeW=_b47qIUU4Yi8HV7-C3ZGuxgo_~arJhw=7Er;!2+a4 zi1olPeJ#b=?tqewy>vaB_K=ISUSlYBV`w*IHUXnOh@xkTSDnW*pVmdYn3BeLS#!%# zowc`LANo%4=p=XFdV|8=-DsXBv?))JO9=vT4lJ8WX29$S96X!lks`2AOs za-abKnI*7@+y-0SzmH>|e{9#y=H2?|BhKJag2Fo!`jJ4^u`@0QO|yR$!B|EY37Y9) zK%~3kba*HYlIdfI0!uim^8sAFQi_^H*mJ%-J*y;>I>FE}>j+H63d>u5 zFIyY>pOJ~~T!Biv*wXY-9#a#nGKX{DXjWVt@zXH{BZmAmn=ZQJT%68_ln z^Ay2LhFjx217caZWgq)iSXWct^zb`!N!zawtppY&AGbfPu(x?UOce7bTmFOunY6O& z-OkGL!kA!R3QAypbWldpT-(IT)U$`VhUqJHaZ&~IrPkME8QIBvgu8~!syN!}B+VwM zmv4wTZ*m7_`I82PiznWxf2@r%R23X7vzUng;Q4yQk0!Ju+Ja?i;bnMt4hp>nz}!wX zgL0oWcCmE;eQ{CI@iSiw7gKnzYx?*uj;#Ei5(YQuC`QH&6@WLkl&ITS9zM)hbJHlJ>hB2lE%7(b?DxX ziRZ>3zIJV<$^LpkV^UL05LahGTI1wYn_bb*=~)$tWZ(FzP#w4FNV~}nqA;5=OJK>KA!Ln9SElXAHy8N;}pF;DS?7IbZ zWR)>NL^zYXSVQJgu>xdQf!)98gf~%-*otAY!RSJXr$Lz3GIKqQu^HoYwQ+iP>hef> zV1dx#hAN%7@z`a$dvY%NT60$E+-mVfZs1CV(PMGr#`~$!l$D&#{gNV8$*I2jc-m=1 zHCz753VM=6s_(*dYo2}kbpD?2K-=8>S+^XSV*0Bo6QkWL(ic|0dq32_A)vrt?bd&T zvCx120?H}=u6RI#2&D)VuwxN`B(a9Udd^=6Tx<-r1)4RN6UN$MXGx$9C#5$nL32m! z0xv|2>@jV=XL1^$e2Zb}vH!o^5r1Pn7Dx)H!;o=V*rzTN#k=L*<5oKsyQAE@9`&qJ zYRBsQYI;GLu+1*S@fHd;CaVWABT2-j!bf*;|ctuMC%s5Bpkv zv(SLajRU_6^5az!uC1g1tZM(3C!WeOe2atce*xC86Es{FW+7lR}IZ~8mW>|^W{FyP-S4t z%3(AO(+o=eaSy3qBPFX+p-Xy9ySy(RGb=R&@Gy zNJv=8tuwFEADbM3yS9&rl=Jc4e3Bniq*=Sro^ZR9O?D0Hs4A}2klx+K?J6729)pr5 zpA67U9_w0SGI~}G9j7bnOSH~s>jg+p-Mv3wL1JZIYtZ?$DL>2A+#%`Rf z)X&2^?GaT*7Gemhn`8TiMy|gBH0YA?TmLR(|11j({&T7ewoU;hQYO=Ml-!HNJd|1n z7nd+h43Qp#v8k&mDAq{7N!)4(MGh5$4QNCs)`Js6*pAR0a_C~7w9&kF9D|YM{O4c& z^Cb9vO7P`WAE-B=urCf%7uF{!ciZFe3KHlDmTn3MlQ56lEV|!bkY`VPQQ8$=B|5$S zViKk=rb^KFnLCmv!6ed7`rC*zrqru9vDRl;+O7-R#&p)SfnB*}Zci+4tGj|&`;)AW z5ULw>`z}rs@32qYwG1@#5Rsf=8h>u?_Z6>-@0DT zjE{A1N-tAF>2edR2s^OK>v zQ}nr}Id=XSuAW*rSBYzt7PDQ^HOtXK0x#}uT3g4-Puh(ys*BB3cRlo4RSOfkHPL7` z^HP`snI5Wm8zn9Yr`WJ!UStrt*tRplPFx!j~QMTnl?QdFruvHu03Jl)Z{!ntVhLz`c?VxKQlFAvV70%&87-cNWi9~iz8e&gIXStcu?HV2o1p~G=lucP3?n%DjeUu z6-^6L>q*SlI~777pA5sKyt9s7B*5m83uS1dgUjD1RN*qwdw@d>yaC6Hl#Lz1rfFQi z&D>@QPQ(8f)`RWC(9R>Q97PHwjvmi^&qK<9W9reb4Z}ui>~f9{LIJ;k)z{GO%aJCg zA)Zc-HONCbX7NDRJu}9gnKvimlbZaq_mCv7Xl&xX61+cs0tR zhG8ayfoj$M_#jWaMQvB3CMm4XWX3B^Yprxs`c^|>ef7&jXsF+8hT&f6Jf_LTJIyKe zsGoF$bmDo>&mf2CC)L#(#qRq@jv@~vHWn_+R(e7~2{|-}yp_Z*Z1s?5+rI$JwLJv{&(Qutd?D->cFd3G!!QV4Lx2_7^EScY%%CZzjU|H& z+VT%-gHNzE+%E}^b7l=@I}OO0_4)N~Ct9st82Hx1JvhdvSx{LPGz1O=tJhhq!vKk* z9Q0%hQQ8XNF7K3v0c2Dq6k~l1peh|ki!*cwsV*v-6zdx`3_Z2_Ob!-NP8p;k3Wrhy zwJbIVR*U%sv>ML8s)rbz*3^3m;$r3j%01SdsR*j<01cFdW$r1xNDM=+TUnbG5Zgb? zq~GcAf96QI!5SzB1RE$}Q^*_V;BG0J$-Ba^*r`NkoJ7dlj+vQQInPv~QU1xXU|a-Q z@%CYfssk)l;dS)M)r&L1m5rBC&AZN?WOe(X>y?#TaKy0!Wq-$Q3*_5n{e}T4FI%$< zX{``tpVely3(9w|<>X82;->>Bi_H4bdg_c8xRvR}snr|VnaM}3?iErGn?k#n?i?AF z3(LQi$!A@TzxW>M2kMkArrbs-30aP*o30tXjFwW)25~|pTgV?~zoNVoD-lFC8*Z{pZ1W~cW8%yZxG>pUgi|y z-lOsI6^S)p!{M;21MTDa$V;7m7gmFS%h-j!9Q0f={w?!)G23@X!eJ6ZubA~_)>3At z32Pq>4%x0e^%gA?&(ITErN!IDy7k$)C|W(9CM)b)RrJT4G99P&&^9T=Q_4riK4c-p zEFG_bs%Zxqme&Yj-u3iC>p>dM!BasxRq9&&PdPX^$ooE{~NcUu*>(@*^o^w+J5 zVHR!@YQ3kJW-(EHQZ;yy1Vif1phqZ{mRlMhou(^$yLzD$!lUl&L|sLZ`)KEqD;90E z<1IFmueQQ8jqnIxWG)l+Ic_DoaZ=I7onTgRS~E=uF&vW4$M-hBnM}OEkJ7DbIaZAF zCi5a-^*@n1l}5{(1h(j@AWHZ)Ni% zhfHM$-(8Zl4K07$rsTjcE*nWIU%!u@6(c!6KSJ7j6H-3C? zr(}ht__QX+CR#3Vna}_9-*1)VR>0V8;Vz}sYaQ_9+7@=4Ayw3i} zCatNrD(h7H?sgSr_JzD4iS}4^G0DT!<%`IeuF>(T<e_Xaebe(kdE zGOZM4eH8Q2A*KOf zfJ#WO4}MVjPM466sMuW4p0=c6fcsN6IOHi}lqf0!I{z{cpKn7{OTU7oWwy97E=}$u}q{#>mtFZbqkXK=Unf zIN)8PHavvM?aWZqkZRkBiFKKN?0Ql4<{^_oy=yCnoB6PB$;ZTRw@U)cj-5i2>!^%} z#9wo=e0^-}h-HJ)UETj_3!-lHL$r*&<0<31e(Q`N*)JeIP&B@+aa`LUJ#sxjrgTr7 z+SzlS^Nw^2;q8y#vAs5F`6SM@k5U>tlvCA-eBveVIh~DVcSjX^-1p)=kh*PnubVrR zBS|7Gu%eghr)TY(@o1A?v$CUJ9C2-qOOmq`K>Y0$&bU7c;ldl-_zL%_B>&est9dE$ zqCax4ZwHvJ>|>aB!BZn&~%x?`P560KxM1<0)W{v2OzC%x+N%XR80oEPPx zJ8^PV|D+e+Q-e(MD44BXxTKV8y2v{l{E@Oki+{m2biyCb2iY6-TaqZ|91b53u%bVl z{>eP|nRg?j1v5-WRzf-o{dQh{wv9{Cyx|E-o10WO8Z7^nB=ZN_G7Vo;(mMRV@U7h zckS7d*;XM`&f?yPf+Ut}e%U6Cw6{LYQC4EJz1g?F#8fwiii?asjKi!NZqBRooaXAI z8sE;kRY!C!m+|DXon74^qOKVu>M|fM%7eu0J*poY7rJVoKey)UQ?tB%$y&z>OGQTf zt&osI`LC#h)=D2OSem~|I*s8QOT8{>Hh94~#=UsGs~|yN1xJHYhs;@qqK&o#0tp05 zIZ(e~A6-P~y@OQ*fuQtT7T`DuJT9K;NcX|<7qXX#fhQ)*gy3xyb5US(ztDono}rKw zBGGV?*U6mJhdORSv7Xf+hOn-J+fQL&DKCe>3CMRbL4pXggu}y%QwBP!QcX`aX2>lA zkGZzqTB@^7di*&@hv#+z5z7Y)-4MOyn2@CsoEp5Es_HUOLksc>f3OJuc!d)3;&`^I zo!N%Q{;P25pik@f0-tg^OJ%1<@vIN;s8@&HPnX_Dlk;wwRJ+?A86OY5;0zVTPLAbN0c`;K9Qs;$FWoR$7u@$3r| zL0$pYM|xhTwCuaS&Nav`rE2f!uFpEcL|YL`9TQu}B%6bhofG4Fk^TZB%mzr>9%(Al z`|NmHER^A>4Xw1D`YBS(g{naZY{7gsYRZ{Y*>$ts6$YyAz8fFj#IjRV;Rsw-~d3e<;+XCEI_On`qzZVNx!7N3Jbj3a5j?_tH)G zV$JtmFV8Bp*UsYC;vO;#$j9S)=wCwWGqGg?< zfQhKLlz&@Ydv*YiV)(Nre>|_n-?FkMt9nHubzD7?$?k!V)|18LB9mvIC{|hK|u9*`J5KQ>7)-?Xs z^e9?iSIj%gX(|h0`dGTcys1n5rx}*;+*g5lNiMgFf{PSdDnwlb#%X?5gi82vM{j@q zRI;TE-X%>r4<*Ssjt5Sj!Q#DyzI6!{&Iyty5BF3GC&r@ly8}4we&ny-pHHJ&a^z&N zYYn?DLtgh*H4SmtF|=Li$$zz;0 zYrT!|DnYU71P2@+sYUs^o`Ci?KChN-LvV#7FtEW2mH}_-b&Wj2;q@p|8&dcwp2HsE zE8X+E(-B0G194GT0ld%va!`cGB2ohJ){X0=XoI12%_vZ-qEK(%+#JK(U()=QrG1<(URWeBXb~7F?bpHYBxBhK=h&OcuAWXf@5fA{HlT}QD_uD`@Wh~Xay6sW& zeth+xxknV14$^e~M`1hZ)hy1(&cIhya~7D-8cJ5Dqyiexe|Ojaj75Gy@vA`kUgMU2 zgEfVjywnv*CPa$7F>Vs7qM-MZo#hq(f{ftK~*teC$@yGsYVA#E6 zk93c27*$nZ6H9qG9mM&i``u@w)UZ5u-0G)|8>hXGPJNKNCOSF}qTDY=cHUEn&3?+2 z4NygLX3VgA!QZVZueztVPIMbjQ?$N#-e+=gxO^7Qx_Z@}=IFbsxDbrbF8%N&INsn} zHsm%)ts;KctoCBj-z$$BBY@*=cCFIcD)0VBipq3fA=09{!l4oGxJ|#iW?~WhkX0?T zqOjs^!Yque>-d3oM+reiKaYvKg(eTOTX<`)Z(mGTVmwywOZAG;S*3JQdUB>-QzdV0 z5EYC%!Jq7^Wp+IpF2xi;Hyc2*I;{G5pOKGoXjYH&TYnpUH9bdVDDGCaU9brOM4G%H!xPw0#2Q2 z3epZ73crcHtEa246Eh`S(+_J{EW?Q8TunHQ+m(Fk@5bJfjlWuOQj*rc^NcI=lD|Bp z+|%b6Yf=!Efx)r&dnNWOXKsQjvF{9JS=?5_I!EYXrKMyY6q8%brKAJW36(ZceOlwH z*9lK*`ppB-j;MERVZ>ffvfI)1Ng5<(d7{rZ=f2v~BGMlxIZreg@2UCdCnKcUP92a$ zg~-M5*g*cSpWH{|!>Mfok>VJf*LzD{NQt6-JlqAfF13rW)ixg*oQX6uOJYv?<(Rm9 zl2Z@&QZ=dT{tY5onSxJdrrB+e92n=@oO>Uw9MyW(c}lG-Qx|vLhdx|3I}q{(A4qB5qRFRh+)m{hnLu#1YY3%PYK?RfO##!p$1A| ziu)9JvCUx}-GMzIwCiULzV#|l6%J|m1vr+Y|9H7owFk$3C>fc9%1fw$;w0Gv2%sO} zDdCg%XyD^2ssNg-BY3);H27Rqfx)zIlhTVn9LGq?LlOh$I*ZU>g3@m(Fdh6E++QEG~8^BjCAw~JrWn9rU|AMwFiw0X@AN|7=w`xL6)X5!{Od;V~;d_N5 zCUhqn=+Y|liq(d=OXgvTf$s7Hw?fs>U9aCzLKBgPAA)hOAB0Np5A#SaSUCw-2h`D> zJwaBg%o$jcWbl^C3OeNX1;}5K8Jo+FI|T7fdu(Sg#mOYZ!(Gj^2Y8Uv{ci=yHLFNR z>3_WXiGT4(^P;D6XNhxMTQ6HaA(qSdeG5+M_slAn7gp*i8D-`E#>XTdB?QGXUJhj1wR~{Qt~GyZn>0KwNNwDujj#BLSzMa!*e-c2 zX=-ry@3E|G8^`e%?A=*#htVlKt+7@+`yRhh6JqwjyeYg@UZvH&z zBsK0$x8L&Y$n45xLy$;dPwA?dLXW5vmwa*Ku>bq?-o&nFK5JZI-$<6HR{RKqegS+! z2E_!c1HI2OkmB!+O1q7g8`6IIE-@%5ZkdrXMCb&EcpnQIv~rh@%P@tnn>iWvW+6Rq zKTmzTeRO8Al;CyBsh4+|`7S2FHP2W!i+sFFUw^j2!3xp$=$OM^jXY7ZY`-?9HkIa4 z_L}IH9)Z;ohtsTDbzK8sxr7>x)IbYrQC5{@b%);JkBd zA?Hq;1i^+LB7Ndk6hTQ5TKZo-Q&bA@^0(h$0QA`bMEeQ>c^u`DZv|U5`*5OveU6t~ z0)N$t6pz_LMtAl!3a~ozVG2$m&(3?yc^z_P`~6Vd4-JLvT;=Oyr&e>Tn@{S<*T;BQ zr};sF_J-A)E6!jb{Yw+RT( zT8SfoMR#6w(@cmggG;Dftjeh@qxfPV8^|C#o?If%S@j3dp7s1vj3Y4Pn|+LfUzaXm zR3HyRqY*29E$f;tG+b+vZY<6CSN9YzKxd$8Dr$9EX)(YBoKRu`)@H!;%R>NO>rx1j zaFs`>zT6vD!ju^XM0w-b5=b`13&8I}hq~-;2)0Pw!axa2`+IZ^NmV116Dvm+aLn|# z;QxO#$rstk44%E+pa5`*qGnw%C>bcpWY!zf9XIkfp<9?BO>2r?gP zJS?bzBbY|pw3iHDgX>=RDiCI)iOavpdpyT*1>=^DnT zRCGz57-lF8x(sV8r+?;PQN6dBDUPNt&70C~6{7Io?U4_uOzO30IihAm0Ud>)0xdF% zj1B^l-Nm2{pgxedOzl7Jf)8R?jMZQe693IP+;y_sl4hRiOS5~e2RhCCqL zA7Avj4DqG5?<8*-eTwi~g8}XpfBY)?OU&_RP(aiMUfQPt+8#)Z0RVM4z#XuOAm$x` zzSxJ~#xey*(ZVM^7zFhpt4RMa`OXBjh;|+t3Ii8=kb>+1=l~a19=4hvDx;^%Q@B(WY+ +<% + String path = request.getContextPath(); + String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; + response.sendRedirect(path+"/user/User_login.jsp"); +%> diff --git a/student/WebRoot/js/Calendar3.js b/student/WebRoot/js/Calendar3.js new file mode 100644 index 0000000..e6e14b6 --- /dev/null +++ b/student/WebRoot/js/Calendar3.js @@ -0,0 +1,374 @@ + +/////////////////////////调用实例 +//

+// 交易查询: 从 +// +// +// 至 +// +// + +//
+ +/** + * Calendar + * @param beginYear 1990 + * @param endYear 2010 + * @param language 0(zh_cn)|1(en_us)|2(en_en)|3(zh_tw) + * @param patternDelimiter "-" + * @param date2StringPattern "yyyy-MM-dd" + * @param string2DatePattern "ymd" + * @version 1.0 build 2006-04-01 + * @version 1.1 build 2006-12-17 + * @author KimSoft (jinqinghua [at] gmail.com) + * NOTE! you can use it free, but keep the copyright please + * IMPORTANT:you must include this script file inner html body elment + */ +function Calendar(beginYear, endYear, language, patternDelimiter, date2StringPattern, string2DatePattern) { + this.beginYear = beginYear || 1990; + this.endYear = endYear || 2020; + this.language = language || 0; + this.patternDelimiter = patternDelimiter || "-"; + this.date2StringPattern = date2StringPattern || Calendar.language["date2StringPattern"][this.language].replace(/\-/g, this.patternDelimiter); + this.string2DatePattern = string2DatePattern || Calendar.language["string2DatePattern"][this.language]; + + this.dateControl = null; + this.panel = this.getElementById("__calendarPanel"); + this.iframe = window.frames["__calendarIframe"]; + this.form = null; + + this.date = new Date(); + this.year = this.date.getFullYear(); + this.month = this.date.getMonth(); + + this.colors = {"bg_cur_day":"#00CC33","bg_over":"#EFEFEF","bg_out":"#FFCC00"} +}; + +Calendar.language = { + "year" : ["\u5e74", "", "", "\u5e74"], + "months" : [ + ["\u4e00\u6708","\u4e8c\u6708","\u4e09\u6708","\u56db\u6708","\u4e94\u6708","\u516d\u6708","\u4e03\u6708","\u516b\u6708","\u4e5d\u6708","\u5341\u6708","\u5341\u4e00\u6708","\u5341\u4e8c\u6708"], + ["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"], + ["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"], + ["\u4e00\u6708","\u4e8c\u6708","\u4e09\u6708","\u56db\u6708","\u4e94\u6708","\u516d\u6708","\u4e03\u6708","\u516b\u6708","\u4e5d\u6708","\u5341\u6708","\u5341\u4e00\u6708","\u5341\u4e8c\u6708"] + ], + "weeks" : [["\u65e5","\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d"], + ["Sun","Mon","Tur","Wed","Thu","Fri","Sat"], + ["Sun","Mon","Tur","Wed","Thu","Fri","Sat"], + ["\u65e5","\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d"] + ], + "clear" : ["\u6e05\u7a7a", "Clear", "Clear", "\u6e05\u7a7a"], + "today" : ["\u4eca\u5929", "Today", "Today", "\u4eca\u5929"], + "close" : ["\u5173\u95ed", "Close", "Close", "\u95dc\u9589"], + "date2StringPattern" : ["yyyy-MM-dd", "yyyy-MM-dd", "yyyy-MM-dd", "yyyy-MM-dd"], + "string2DatePattern" : ["ymd","ymd", "ymd", "ymd"] +}; + +Calendar.prototype.draw = function() { + calendar = this; + + var _cs = []; + _cs[_cs.length] = ''; + _cs[_cs.length] = ''; + _cs[_cs.length] = ' '; + _cs[_cs.length] = ' '; + for(var i = 0; i < 7; i++) { + _cs[_cs.length] = ''; + for(var j = 0; j < 7; j++) { + switch (j) { + case 0: _cs[_cs.length] = ''; + _cs[_cs.length] = '
<\/th>'; + _cs[_cs.length] = ' <\/select><\/th>'; + _cs[_cs.length] = ' <\/th>'; + _cs[_cs.length] = ' <\/tr>'; + _cs[_cs.length] = '
'; + _cs[_cs.length] = Calendar.language["weeks"][this.language][i]; + _cs[_cs.length] = '<\/th>'; + } + _cs[_cs.length] = '<\/tr>'; + for(var i = 0; i < 6; i++){ + _cs[_cs.length] = '
 <\/td>'; break; + case 6: _cs[_cs.length] = ' <\/td>'; break; + default:_cs[_cs.length] = ' <\/td>'; break; + } + } + _cs[_cs.length] = '<\/tr>'; + } + _cs[_cs.length] = '
<\/th>'; + _cs[_cs.length] = ' <\/th>'; + _cs[_cs.length] = ' <\/th>'; + _cs[_cs.length] = ' <\/tr>'; + _cs[_cs.length] = '<\/table>'; + _cs[_cs.length] = '<\/form>'; + + this.iframe.document.body.innerHTML = _cs.join(""); + this.form = this.iframe.document.forms["__calendarForm"]; + + this.form.clearButton.value = Calendar.language["clear"][this.language]; + this.form.selectTodayButton.value = Calendar.language["today"][this.language]; + this.form.closeButton.value = Calendar.language["close"][this.language]; + + this.form.goPrevMonthButton.onclick = function () {calendar.goPrevMonth(this);} + this.form.goNextMonthButton.onclick = function () {calendar.goNextMonth(this);} + this.form.yearSelect.onchange = function () {calendar.update(this);} + this.form.monthSelect.onchange = function () {calendar.update(this);} + + this.form.clearButton.onclick = function () {calendar.dateControl.value = "";calendar.hide();} + this.form.closeButton.onclick = function () {calendar.hide();} + this.form.selectTodayButton.onclick = function () { + var today = new Date(); + calendar.date = today; + calendar.year = today.getFullYear(); + calendar.month = today.getMonth(); + calendar.dateControl.value = today.format(calendar.date2StringPattern); + calendar.hide(); + } +}; + +Calendar.prototype.bindYear = function() { + var ys = this.form.yearSelect; + ys.length = 0; + for (var i = this.beginYear; i <= this.endYear; i++){ + ys.options[ys.length] = new Option(i + Calendar.language["year"][this.language], i); + } +}; + +Calendar.prototype.bindMonth = function() { + var ms = this.form.monthSelect; + ms.length = 0; + for (var i = 0; i < 12; i++){ + ms.options[ms.length] = new Option(Calendar.language["months"][this.language][i], i); + } +}; + +Calendar.prototype.goPrevMonth = function(e){ + if (this.year == this.beginYear && this.month == 0){return;} + this.month--; + if (this.month == -1) { + this.year--; + this.month = 11; + } + this.date = new Date(this.year, this.month, 1); + this.changeSelect(); + this.bindData(); +}; + +Calendar.prototype.goNextMonth = function(e){ + if (this.year == this.endYear && this.month == 11){return;} + this.month++; + if (this.month == 12) { + this.year++; + this.month = 0; + } + this.date = new Date(this.year, this.month, 1); + this.changeSelect(); + this.bindData(); +}; + +Calendar.prototype.changeSelect = function() { + var ys = this.form.yearSelect; + var ms = this.form.monthSelect; + for (var i= 0; i < ys.length; i++){ + if (ys.options[i].value == this.date.getFullYear()){ + ys[i].selected = true; + break; + } + } + for (var i= 0; i < ms.length; i++){ + if (ms.options[i].value == this.date.getMonth()){ + ms[i].selected = true; + break; + } + } +}; + +Calendar.prototype.update = function (e){ + this.year = e.form.yearSelect.options[e.form.yearSelect.selectedIndex].value; + this.month = e.form.monthSelect.options[e.form.monthSelect.selectedIndex].value; + this.date = new Date(this.year, this.month, 1); + this.changeSelect(); + this.bindData(); +}; + +Calendar.prototype.bindData = function () { + var calendar = this; + var dateArray = this.getMonthViewDateArray(this.date.getFullYear(), this.date.getMonth()); + var tds = this.getElementsByTagName("td", this.getElementById("__calendarTable", this.iframe.document)); + for(var i = 0; i < tds.length; i++) { + tds[i].style.backgroundColor = calendar.colors["bg_over"]; + tds[i].onclick = null; + tds[i].onmouseover = null; + tds[i].onmouseout = null; + tds[i].innerHTML = dateArray[i] || " "; + if (i > dateArray.length - 1) continue; + if (dateArray[i]){ + tds[i].onclick = function () { + if (calendar.dateControl){ + calendar.dateControl.value = new Date(calendar.date.getFullYear(), + calendar.date.getMonth(), + this.innerHTML).format(calendar.date2StringPattern); + } + calendar.hide(); + } + tds[i].onmouseover = function () {this.style.backgroundColor = calendar.colors["bg_out"];} + tds[i].onmouseout = function () {this.style.backgroundColor = calendar.colors["bg_over"];} + var today = new Date(); + if (today.getFullYear() == calendar.date.getFullYear()) { + if (today.getMonth() == calendar.date.getMonth()) { + if (today.getDate() == dateArray[i]) { + tds[i].style.backgroundColor = calendar.colors["bg_cur_day"]; + tds[i].onmouseover = function () {this.style.backgroundColor = calendar.colors["bg_out"];} + tds[i].onmouseout = function () {this.style.backgroundColor = calendar.colors["bg_cur_day"];} + } + } + } + }//end if + }//end for +}; + +Calendar.prototype.getMonthViewDateArray = function (y, m) { + var dateArray = new Array(42); + var dayOfFirstDate = new Date(y, m, 1).getDay(); + var dateCountOfMonth = new Date(y, m + 1, 0).getDate(); + for (var i = 0; i < dateCountOfMonth; i++) { + dateArray[i + dayOfFirstDate] = i + 1; + } + return dateArray; +}; + +Calendar.prototype.show = function (dateControl, popuControl) { + if (this.panel.style.visibility == "visible") { + this.panel.style.visibility = "hidden"; + } + if (!dateControl){ + throw new Error("arguments[0] is necessary!") + } + this.dateControl = dateControl; + popuControl = popuControl || dateControl; + + this.draw(); + this.bindYear(); + this.bindMonth(); + if (dateControl.value.length > 0){ + this.date = new Date(dateControl.value.toDate(this.patternDelimiter, this.string2DatePattern)); + this.year = this.date.getFullYear(); + this.month = this.date.getMonth(); + } + this.changeSelect(); + this.bindData(); + + var xy = this.getAbsPoint(popuControl); + this.panel.style.left = xy.x + "px"; + this.panel.style.top = (xy.y + dateControl.offsetHeight) + "px"; + this.panel.style.visibility = "visible"; +}; + +Calendar.prototype.hide = function() { + this.panel.style.visibility = "hidden"; +}; + +Calendar.prototype.getElementById = function(id, object){ + object = object || document; + return document.getElementById ? object.getElementById(id) : document.all(id); +}; + +Calendar.prototype.getElementsByTagName = function(tagName, object){ + object = object || document; + return document.getElementsByTagName ? object.getElementsByTagName(tagName) : document.all.tags(tagName); +}; + +Calendar.prototype.getAbsPoint = function (e){ + var x = e.offsetLeft; + var y = e.offsetTop; + while(e = e.offsetParent){ + x += e.offsetLeft; + y += e.offsetTop; + } + return {"x": x, "y": y}; +}; + +/** + * @param d the delimiter + * @param p the pattern of your date + * @author meizz + * @author kimsoft add w+ pattern + */ +Date.prototype.format = function(style) { + var o = { + "M+" : this.getMonth() + 1, //month + "d+" : this.getDate(), //day + "h+" : this.getHours(), //hour + "m+" : this.getMinutes(), //minute + "s+" : this.getSeconds(), //second + "w+" : "\u65e5\u4e00\u4e8c\u4e09\u56db\u4e94\u516d".charAt(this.getDay()), //week + "q+" : Math.floor((this.getMonth() + 3) / 3), //quarter + "S" : this.getMilliseconds() //millisecond + } + if (/(y+)/.test(style)) { + style = style.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); + } + for(var k in o){ + if (new RegExp("("+ k +")").test(style)){ + style = style.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)); + } + } + return style; +}; + +/** + * @param d the delimiter + * @param p the pattern of your date + * @rebuilder kimsoft + * @version build 2006.12.15 + */ +String.prototype.toDate = function(delimiter, pattern) { + delimiter = delimiter || "-"; + pattern = pattern || "ymd"; + var a = this.split(delimiter); + var y = parseInt(a[pattern.indexOf("y")], 10); + //remember to change this next century ;) + if(y.toString().length <= 2) y += 2000; + if(isNaN(y)) y = new Date().getFullYear(); + var m = parseInt(a[pattern.indexOf("m")], 10) - 1; + var d = parseInt(a[pattern.indexOf("d")], 10); + if(isNaN(d)) d = 1; + return new Date(y, m, d); +}; + +document.writeln(' +
+ +
+ + + + + \ No newline at end of file diff --git a/student/src/action/StudentAction.java b/student/src/action/StudentAction.java new file mode 100644 index 0000000..b3291cc --- /dev/null +++ b/student/src/action/StudentAction.java @@ -0,0 +1,76 @@ +package action; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.List; + +import service.StudentDao; +import service.impl.StudentDaoImpl; +import entity.Student; + +//ѧAction +public class StudentAction extends SuperAction{ + + /** + * + */ + private static final long serialVersionUID = 1L; + + + //ѯѧϵĶ + public String query() { + StudentDao studentDao = new StudentDaoImpl(); + List list = studentDao.queryAllStudent(); + if(list != null && list.size() > 0) { + session.setAttribute("student_list", list); + } + return "student_query_success"; + } + + //ɾѧϵĶ + public String delete() { + StudentDao studentDao = new StudentDaoImpl(); + String sid = request.getParameter("sid"); + studentDao.deleteStudent(sid); + return "student_delete_success"; + } + + //ѧϵĶ + public String add() throws Exception { + StudentDao studentDao = new StudentDaoImpl(); + Student s = new Student(); + s.setSname(request.getParameter("sname")); + s.setGender(request.getParameter("gender")); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + s.setBirthday(sdf.parse(request.getParameter("birthday"))); + s.setAddress(request.getParameter("address")); + studentDao.addStudent(s); + return "student_add_success"; + } + + //޸ѧϵĶ + public String modify() { + + String sid = request.getParameter("sid"); + StudentDao studentDao = new StudentDaoImpl(); + Student s = studentDao.queryStudentBySid(sid); + //ڻỰ + session.setAttribute("modify_student", s); + return "student_modify_success"; + } + + //޸ĺѧ϶ + public String save() throws Exception { + StudentDao studentDao = new StudentDaoImpl(); + Student s = new Student(); + s.setSid(request.getParameter("sid")); + s.setSname(request.getParameter("sname")); + s.setGender(request.getParameter("gender")); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + s.setBirthday(sdf.parse(request.getParameter("birthday"))); + s.setAddress(request.getParameter("address")); + studentDao.updateStudent(s); + return "student_save_success"; + } + +} diff --git a/student/src/action/SuperAction.java b/student/src/action/SuperAction.java new file mode 100644 index 0000000..5d1b4e0 --- /dev/null +++ b/student/src/action/SuperAction.java @@ -0,0 +1,40 @@ +package action; + +import javax.servlet.ServletContext; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.apache.struts2.interceptor.ServletRequestAware; +import org.apache.struts2.interceptor.ServletResponseAware; +import org.apache.struts2.util.ServletContextAware; + +import com.opensymphony.xwork2.ActionSupport; + +//Actionĸ +public class SuperAction extends ActionSupport implements ServletRequestAware, ServletResponseAware, ServletContextAware{ + /** + * + */ + private static final long serialVersionUID = 1L; + protected HttpServletRequest request; + protected HttpServletResponse response; + protected HttpSession session; + protected ServletContext application; + @Override + public void setServletContext(ServletContext application) { + this.application = application; + } + + @Override + public void setServletResponse(HttpServletResponse response) { + this.response = response; + } + + @Override + public void setServletRequest(HttpServletRequest request) { + this.request = request; + this.session = this.request.getSession(); + } + +} diff --git a/student/src/action/UserAction.java b/student/src/action/UserAction.java new file mode 100644 index 0000000..ec71dc0 --- /dev/null +++ b/student/src/action/UserAction.java @@ -0,0 +1,59 @@ +package action; + +import org.apache.struts2.interceptor.validation.SkipValidation; + +import service.UserDao; +import service.impl.UserDaoImpl; + +import com.opensymphony.xwork2.ModelDriven; + +import entity.User; + +public class UserAction extends SuperAction implements ModelDriven { + + /** + * + */ + private static final long serialVersionUID = 1L; + private User user = new User(); + + // û¼ + public String login() { + UserDao userdao = new UserDaoImpl(); + if (userdao.userLogin(user)) { + //¼ɹû + session.setAttribute("loginUserName", user.getUsername()); + return "login_success"; + } else { + return "login_failure"; + } + } + + @SkipValidation + //ûע + public String logout() { + if(session.getAttribute("loginUserName") != null) { + session.removeAttribute("loginUserName"); + } + return "logout_success"; + } + + + + @Override + public void validate() { + super.validate(); + if("".equals(user.getUsername().trim())) { + this.addFieldError("usernameError", "ûΪգ"); + } + if(user.getPassword().length() < 6) { + this.addFieldError("passwordError", "볤Ȳ6λ"); + } + } + + @Override + public User getModel() { + return this.user; + } + +} diff --git a/student/src/db/MyHibernateSessionFactory.java b/student/src/db/MyHibernateSessionFactory.java new file mode 100644 index 0000000..6e3f0ed --- /dev/null +++ b/student/src/db/MyHibernateSessionFactory.java @@ -0,0 +1,25 @@ +package db; + +import org.hibernate.SessionFactory; +import org.hibernate.boot.registry.StandardServiceRegistry; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.cfg.Configuration; + +public class MyHibernateSessionFactory { + // Ự + private static SessionFactory sessionFactory; + + private MyHibernateSessionFactory() { + + } + + public static SessionFactory getSessionFactory() { + if (sessionFactory == null) { + Configuration configuration = new Configuration().configure(); + StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() + .configure().build(); + sessionFactory = configuration.buildSessionFactory(serviceRegistry); + } + return sessionFactory; + } +} diff --git a/student/src/entity/Student.hbm.xml b/student/src/entity/Student.hbm.xml new file mode 100644 index 0000000..e2fa114 --- /dev/null +++ b/student/src/entity/Student.hbm.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/student/src/entity/Student.java b/student/src/entity/Student.java new file mode 100644 index 0000000..bb6e489 --- /dev/null +++ b/student/src/entity/Student.java @@ -0,0 +1,71 @@ +package entity; + +import java.util.Date; + +public class Student { + private String sid; + private String sname; + private String gender; + private Date birthday; + private String address; + + public String getSid() { + return sid; + } + + public void setSid(String sid) { + this.sid = sid; + } + + public String getSname() { + return sname; + } + + public void setSname(String sname) { + this.sname = sname; + } + + public String getGender() { + return gender; + } + + public void setGender(String gender) { + this.gender = gender; + } + + public Date getBirthday() { + return birthday; + } + + @Override + public String toString() { + return "Student [sid=" + sid + ", sname=" + sname + ", gender=" + + gender + ", birthday=" + birthday + ", address=" + address + + "]"; + } + + public void setBirthday(Date birthday) { + this.birthday = birthday; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public Student() { + } + + public Student(String sid, String sname, String gender, Date birthday, + String address) { + this.sid = sid; + this.sname = sname; + this.gender = gender; + this.birthday = birthday; + this.address = address; + } + +} diff --git a/student/src/entity/User.hbm.xml b/student/src/entity/User.hbm.xml new file mode 100644 index 0000000..365eeb1 --- /dev/null +++ b/student/src/entity/User.hbm.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/student/src/entity/User.java b/student/src/entity/User.java new file mode 100644 index 0000000..e46ea5c --- /dev/null +++ b/student/src/entity/User.java @@ -0,0 +1,47 @@ +package entity; + +public class User { + private int uid; + private String username; + private String password; + + public int getUid() { + return uid; + } + + public void setUid(int uid) { + this.uid = uid; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public User() { + } + + public User(int uid, String username, String password) { + this.uid = uid; + this.username = username; + this.password = password; + } + + @Override + public String toString() { + return "User [uid=" + uid + ", username=" + username + ", password=" + + password + "]"; + } + +} diff --git a/student/src/hibernate.cfg.xml b/student/src/hibernate.cfg.xml new file mode 100644 index 0000000..ae0c01c --- /dev/null +++ b/student/src/hibernate.cfg.xml @@ -0,0 +1,23 @@ + + + + + + root + root + com.mysql.jdbc.Driver + jdbc:mysql:///test?useUnicode=true&characterEncoding=UTF-8 + org.hibernate.dialect.MySQLDialect + true + true + update + thread + + + + + \ No newline at end of file diff --git a/student/src/service/StudentDao.java b/student/src/service/StudentDao.java new file mode 100644 index 0000000..28456f1 --- /dev/null +++ b/student/src/service/StudentDao.java @@ -0,0 +1,24 @@ +package service; + +import java.util.List; + +import entity.Student; + +//ѧҵ߼ӿ +public interface StudentDao { + + // ѯѧ + public List queryAllStudent(); + + // ѧŲѯѧ + public Student queryStudentBySid(String sid); + + // ѧ + public boolean addStudent(Student s); + + // ޸ѧ + public boolean updateStudent(Student s); + + // ɾѧ + public boolean deleteStudent(String sid); +} diff --git a/student/src/service/UserDao.java b/student/src/service/UserDao.java new file mode 100644 index 0000000..1dde5e5 --- /dev/null +++ b/student/src/service/UserDao.java @@ -0,0 +1,9 @@ +package service; + +import entity.User; + +public interface UserDao { + + //û¼ + boolean userLogin(User u); +} diff --git a/student/src/service/impl/StudentDaoImpl.java b/student/src/service/impl/StudentDaoImpl.java new file mode 100644 index 0000000..fa4509f --- /dev/null +++ b/student/src/service/impl/StudentDaoImpl.java @@ -0,0 +1,172 @@ +package service.impl; + +import java.util.List; + +import org.hibernate.Query; +import org.hibernate.Session; +import org.hibernate.Transaction; + +import db.MyHibernateSessionFactory; +import entity.Student; +import service.StudentDao; + +//ѧҵ߼ӿڵʵ +public class StudentDaoImpl implements StudentDao { + + // ѯѧ + @Override + public List queryAllStudent() { + Transaction ts = null; + List list = null; + String hql = ""; + try { + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + hql = "from Student"; + ts = session.beginTransaction(); + Query query = session.createQuery(hql); + + list = query.list(); + ts.commit(); + return list; + } catch (Exception e) { + e.printStackTrace(); + ts.commit(); + return list; + } finally { + if (ts != null) { + ts = null; + } + } + } + + // ѧŲѯѧ + @Override + public Student queryStudentBySid(String sid) { + Transaction ts = null; + Student s = null; + try { + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + ts = session.beginTransaction(); + s = session.get(Student.class, sid); + ts.commit(); + return s; + } catch (Exception e) { + e.printStackTrace(); + ts.commit(); + return s; + } finally { + if (ts != null) { + ts = null; + } + } + } + + // ޸ѧ + @Override + public boolean updateStudent(Student s) { + Transaction ts = null; + try { + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + ts = session.beginTransaction(); + session.update(s); + ts.commit(); + return true; + } catch (Exception e) { + e.printStackTrace(); + ts.commit(); + return false; + } finally { + if (ts != null) { + ts = null; + } + } + } + + // ɾѧ + @Override + public boolean deleteStudent(String sid) { + Transaction ts = null; + try { + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + ts = session.beginTransaction(); + Student s = session.get(Student.class, sid); + session.delete(s); + ts.commit(); + return true; + } catch (Exception e) { + e.printStackTrace(); + ts.commit(); + return false; + } finally { + if (ts != null) { + ts = null; + } + } + } + + // ѧ + @Override + public boolean addStudent(Student s) { + s.setSid(getNewSid()); + Transaction ts = null; + try { + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + ts = session.beginTransaction(); + session.save(s); + ts.commit(); + return true; + } catch (Exception e) { + e.printStackTrace(); + ts.commit(); + return false; + } finally { + if (ts != null) { + ts = null; + } + } + } + + // ѧѧ + public String getNewSid() { + Transaction ts = null; + String hql = ""; + String sid = null; + try { + hql = "select max(sid) from Student"; + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + ts = session.beginTransaction(); + Query query = session.createQuery(hql); + sid = (String) query.uniqueResult(); + if (sid == null || sid.equals("")) { + // Ĭϵ + sid = "S0000001"; + } else { + String temp = sid.substring(1); // ȥλ + int i = Integer.parseInt(temp); // ת + i++; + temp = String.valueOf(i); + int len = temp.length(); + for (int k = 0; k < 7 - len; k++) { + temp = "0" + temp; + } + sid = "S" + temp; + } + ts.commit(); + return sid; + } catch (Exception e) { + e.printStackTrace(); + ts.commit(); + return sid; + } finally { + if (ts != null) { + ts = null; + } + } + } +} diff --git a/student/src/service/impl/UserDaoImpl.java b/student/src/service/impl/UserDaoImpl.java new file mode 100644 index 0000000..50b64c8 --- /dev/null +++ b/student/src/service/impl/UserDaoImpl.java @@ -0,0 +1,44 @@ +package service.impl; + +import java.util.List; + +import org.hibernate.Query; +import org.hibernate.Session; +import org.hibernate.Transaction; + +import service.UserDao; +import db.MyHibernateSessionFactory; +import entity.User; + +public class UserDaoImpl implements UserDao { + + @Override + public boolean userLogin(User u) { + Transaction ts = null; + String hql = ""; + try { + hql = "from User where username=? and password=?"; + Session session = MyHibernateSessionFactory.getSessionFactory() + .getCurrentSession(); + ts = session.beginTransaction(); + Query query = session.createQuery(hql); + query.setParameter(0, u.getUsername()); + query.setParameter(1, u.getPassword()); + List list = query.list(); + ts.commit(); + if (list.size() > 0) { + return true; + } else { + return false; + } + } catch (Exception e) { + e.printStackTrace(); + return false; + } finally { + if (ts != null) { + ts = null; + } + } + } + +} diff --git a/student/src/struts.xml b/student/src/struts.xml new file mode 100644 index 0000000..7f32242 --- /dev/null +++ b/student/src/struts.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + /user/User_login_success.jsp + /user/User_login.jsp + /user/User_login.jsp + /user/User_login.jsp + + + + + + /student/Student_query_success.jsp + Student_query + /student/Student_add_success.jsp + /student/Student_modify.jsp + /student/Student_modify_success.jsp + + + + diff --git a/student/test/entity/TestDatabase.java b/student/test/entity/TestDatabase.java new file mode 100644 index 0000000..775f93d --- /dev/null +++ b/student/test/entity/TestDatabase.java @@ -0,0 +1,64 @@ +package entity; + +import java.util.Date; +import java.util.EnumSet; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.Transaction; +import org.hibernate.boot.Metadata; +import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.registry.StandardServiceRegistry; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.cfg.Configuration; +import org.hibernate.tool.hbm2ddl.SchemaExport; +import org.hibernate.tool.schema.TargetType; +import org.junit.Test; + +public class TestDatabase { + + // Ӳ + @Test + public void testAddStudent() { + // ö + Configuration configuration = new Configuration().configure(); + // SessionFactory + SessionFactory sessionFactory = configuration.buildSessionFactory(); + // session + Session session = sessionFactory.getCurrentSession(); + // + Transaction ts = session.beginTransaction(); + + Student s1 = new Student("S0000001", "skyward", "", new Date(), "δ֪"); + Student s2 = new Student("S0000002", "geek", "", new Date(), "δ֪"); + Student s3 = new Student("S0000004", "hacker", "", new Date(), "δ֪"); + + session.save(s1); + session.save(s2); + session.save(s3); + + ts.commit(); + sessionFactory.close(); + } + + @Test + public void testSchemaExport() { + // ö + Configuration configuration = new Configuration().configure(); + // ע + StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() + .configure().build(); + // SessionFactory + SessionFactory sessionFactory = configuration.buildSessionFactory(); + // session + Session session = sessionFactory.getCurrentSession(); + // SchemaExport + SchemaExport schemaExport = new SchemaExport(); + + Metadata metadata = new MetadataSources(serviceRegistry) + .buildMetadata(); + + schemaExport.create(EnumSet.of(TargetType.DATABASE), metadata); + } + +} diff --git a/student/test/service/impl/TestStudentDaoImpl.java b/student/test/service/impl/TestStudentDaoImpl.java new file mode 100644 index 0000000..91fd9ca --- /dev/null +++ b/student/test/service/impl/TestStudentDaoImpl.java @@ -0,0 +1,37 @@ +package service.impl; + +import java.util.Date; +import java.util.List; + +import junit.framework.Assert; + +import org.junit.Test; + +import service.StudentDao; +import entity.Student; + +public class TestStudentDaoImpl { + @Test + public void TestQueryAllStudent() { + List list = new StudentDaoImpl().queryAllStudent(); + for(Student s : list) { + System.out.println(s.toString()); + } + } + + @Test + public void TestGetNewSid() { + System.out.println(new StudentDaoImpl().getNewSid()); + } + + @Test + public void TestAddStudent() { + Student s = new Student(); + s.setAddress("δ֪ϵ"); + s.setBirthday(new Date()); + s.setGender(""); + s.setSname("skyward"); + StudentDao studentDao = new StudentDaoImpl(); + Assert.assertEquals(true, studentDao.addStudent(s)); + } +} diff --git a/student/test/service/impl/TestUserDaoImpl.java b/student/test/service/impl/TestUserDaoImpl.java new file mode 100644 index 0000000..8466448 --- /dev/null +++ b/student/test/service/impl/TestUserDaoImpl.java @@ -0,0 +1,17 @@ +package service.impl; + +import junit.framework.Assert; + +import org.junit.Test; + +import service.UserDao; +import entity.User; + +public class TestUserDaoImpl { + @Test + public void testUserLogin() { + User user = new User(1, "skyward", "123456"); + UserDao userDao = new UserDaoImpl(); + Assert.assertEquals(true, userDao.userLogin(user)); + } +} From 0bcb8b7a6c4b9cc07c377e97f57c07357814655b Mon Sep 17 00:00:00 2001 From: Skyward <1224085894@qq.com> Date: Wed, 5 Apr 2017 11:36:01 +0800 Subject: [PATCH 2/3] Update readme.md --- readme.md | 210 +++++++++++++++++++++++++++--------------------------- 1 file changed, 105 insertions(+), 105 deletions(-) diff --git a/readme.md b/readme.md index 8ab2866..361b20a 100644 --- a/readme.md +++ b/readme.md @@ -1,113 +1,113 @@ -#Java Web应用开发技术与案例教程例题与习题代码 -##第2章静态网页开发技术 -###1、例2-2 文本和段落标签示例——唐诗欣赏 -###2、例2-3 有序列表与无序列表标签示例——新闻通知 -###3、例2-4 超链接和图片链接标签示例——泰山风景介绍 -###4、例2-5 表格标签——期末成绩表 -###5、例2-6 表单设计案例——学校入校注册页面设计 -###6、例2-7 框架设计案例——多媒体播放系统设计 -###7、例2-8 CSS——利用CSS对注册页面实现修饰 -###8、例2-9 JavaScript——单击按钮事件示例 -###9、例2-10 JavaScript——JavaScript实现输入验证 -###10、例2-11 基于HTML+JavaScript+CSS的开发案例——JavaScript+CSS+DIV实现下拉菜单 -###11、例2-12 基于HTML+JavaScript+CSS的开发案例——JavaScript+CSS+DIV实现表格变色 +# Java Web应用开发技术与案例教程例题与习题代码 +## 第2章静态网页开发技术 +### 1、例2-2 文本和段落标签示例——唐诗欣赏 +### 2、例2-3 有序列表与无序列表标签示例——新闻通知 +### 3、例2-4 超链接和图片链接标签示例——泰山风景介绍 +### 4、例2-5 表格标签——期末成绩表 +### 5、例2-6 表单设计案例——学校入校注册页面设计 +### 6、例2-7 框架设计案例——多媒体播放系统设计 +### 7、例2-8 CSS——利用CSS对注册页面实现修饰 +### 8、例2-9 JavaScript——单击按钮事件示例 +### 9、例2-10 JavaScript——JavaScript实现输入验证 +### 10、例2-11 基于HTML+JavaScript+CSS的开发案例——JavaScript+CSS+DIV实现下拉菜单 +### 11、例2-12 基于HTML+JavaScript+CSS的开发案例——JavaScript+CSS+DIV实现表格变色 -##第3章JSP技术 -###1、例3-1 简单的JSP程序 -###2、例3-2 以直角三角形的形式显示数字并根据随机产生的数据的不同,显示不同的问候 -###3、例3-3 page指令import属性示例 -###4、例3-4 include指令示例 -###5、例3-5 利用include动作实现参数传递 -###6、例3-6 利用表单传递参数 -###7、例3-7 追加在网址后实现参数传递 -###8、例3-8 采用getParameterNames()方法获得参数并显示参数值 -###9、例3-9 计算任意两个实数的和 -###10、例3-10 使用request对象获取客户端的有关信息 -###11、例3-11 用户登录验证 -###12、例3-12 页面自动刷新时间 -###13、例3-13 利用session对象获取会话信息并显示 -###14、例3-14 统计网站访问人数 -###15、例3-15 利用out对象输出页面信息 -###16、例3-16 网上答题及其自动评测系统 -###17、例3-17 简单的购物车应用案例 -##第4章JDBC数据库访问技术 -###1、学生身体体质信息管理系统(通过JDBC驱动程序直接连接数据库) -###2、学生身体体质信息管理系统(通过连接池技术连接数据库) -###3、使用说明 -##第5章JavaBean技术 -###3、例5-1 设计一个圆的JavaBean类 -###3、例5-2 基于JavaBean+JSP求任意两数代数和 -###3、例5-3 网页计数器JavaBean的设计与使用 -###4、例5-4 数据库访问JavaBean的设计 -##第6章Servlet技术 -###1、例6-1 基于JSP+Servlet的用户登录验证 -###2、例6-2 基于JSP+Servlet+JavaBean实现复数运算 -###3、例6-3 利用Cookie实现自动登录 -##第7章Java Web常用开发模式与案例 -###1、例7-1 JSP页面开发模式案例——求1+2+3+...+100的和值 -###2、例7-2 JSP页面开发模式案例——求任意两个整数之间的累加和值 -###3、例7-3 JSP+JDBC开发模式案例——实现基于数据库的登录验证 -###4、例7-4 JSP+JavaBean开发案例——求和运算 -###5、例7-5 JSP+JavaBean+JDBC案例——基于数据库的登录验证 -###6、例7-6 JSP+Servlet开发案例——求和运算 -###7、例7-7 JSP+Servlet+JDBC开发案例——基于数据库的登录验证 -###8、例7-8 JSP+Servlet+JavaBean开发案例——求和运算 -###9、例7-9 JSP+Servlet+JavaBean案例——基于数据库的登录验证 -###10、例7-10 JSP+Servlet+JavaBean案例——学生体质信息管理系统 -###11、例7-11 JSP+Servlet+JavaBean+DAO案例——学生体质信息管理系统 -##第8章EL、JSTL和Ajax技术 -###1、例8-1 EL表达式语言运算 -###2、例8-2 EL表达式访问集合中的元素 -###3、例8-3 EL对表单数据的访问 -###4、例8-4 EL对作用域属性的访问 -###5、例8-5 EL对Web工程初始参数的访问 -###6、例8-6 EL对JavaBean的访问 -###7、例8-7 JSTL中单分支标签和多分支标签的使用 -###8、例8-8 JSTL中循环标签的使用 -###9、例8-9 使用EL和JSTL显示查询结果 -###10、例8-10 Ajax应用案例——异步表单验证 -###11、例8-11 Ajax应用案例——实现级联列表 -###12、例8-12 Ajax应用案例——输入提示和自动完成 +## 第3章JSP技术 +### 1、例3-1 简单的JSP程序 +### 2、例3-2 以直角三角形的形式显示数字并根据随机产生的数据的不同,显示不同的问候 +### 3、例3-3 page指令import属性示例 +### 4、例3-4 include指令示例 +### 5、例3-5 利用include动作实现参数传递 +### 6、例3-6 利用表单传递参数 +### 7、例3-7 追加在网址后实现参数传递 +### 8、例3-8 采用getParameterNames()方法获得参数并显示参数值 +### 9、例3-9 计算任意两个实数的和 +### 10、例3-10 使用request对象获取客户端的有关信息 +### 11、例3-11 用户登录验证 +### 12、例3-12 页面自动刷新时间 +### 13、例3-13 利用session对象获取会话信息并显示 +### 14、例3-14 统计网站访问人数 +### 15、例3-15 利用out对象输出页面信息 +### 16、例3-16 网上答题及其自动评测系统 +### 17、例3-17 简单的购物车应用案例 +## 第4章JDBC数据库访问技术 +### 1、学生身体体质信息管理系统(通过JDBC驱动程序直接连接数据库) +### 2、学生身体体质信息管理系统(通过连接池技术连接数据库) +### 3、使用说明 +## 第5章JavaBean技术 +### 3、例5-1 设计一个圆的JavaBean类 +### 3、例5-2 基于JavaBean+JSP求任意两数代数和 +### 3、例5-3 网页计数器JavaBean的设计与使用 +### 4、例5-4 数据库访问JavaBean的设计 +## 第6章Servlet技术 +### 1、例6-1 基于JSP+Servlet的用户登录验证 +### 2、例6-2 基于JSP+Servlet+JavaBean实现复数运算 +### 3、例6-3 利用Cookie实现自动登录 +## 第7章Java Web常用开发模式与案例 +### 1、例7-1 JSP页面开发模式案例——求1+2+3+...+100的和值 +### 2、例7-2 JSP页面开发模式案例——求任意两个整数之间的累加和值 +### 3、例7-3 JSP+JDBC开发模式案例——实现基于数据库的登录验证 +### 4、例7-4 JSP+JavaBean开发案例——求和运算 +### 5、例7-5 JSP+JavaBean+JDBC案例——基于数据库的登录验证 +### 6、例7-6 JSP+Servlet开发案例——求和运算 +### 7、例7-7 JSP+Servlet+JDBC开发案例——基于数据库的登录验证 +### 8、例7-8 JSP+Servlet+JavaBean开发案例——求和运算 +### 9、例7-9 JSP+Servlet+JavaBean案例——基于数据库的登录验证 +### 10、例7-10 JSP+Servlet+JavaBean案例——学生体质信息管理系统 +### 11、例7-11 JSP+Servlet+JavaBean+DAO案例——学生体质信息管理系统 +## 第8章EL、JSTL和Ajax技术 +### 1、例8-1 EL表达式语言运算 +### 2、例8-2 EL表达式访问集合中的元素 +### 3、例8-3 EL对表单数据的访问 +### 4、例8-4 EL对作用域属性的访问 +### 5、例8-5 EL对Web工程初始参数的访问 +### 6、例8-6 EL对JavaBean的访问 +### 7、例8-7 JSTL中单分支标签和多分支标签的使用 +### 8、例8-8 JSTL中循环标签的使用 +### 9、例8-9 使用EL和JSTL显示查询结果 +### 10、例8-10 Ajax应用案例——异步表单验证 +### 11、例8-11 Ajax应用案例——实现级联列表 +### 12、例8-12 Ajax应用案例——输入提示和自动完成 -##第9章过滤器和监听器技术 -###1、例9-1 基于过滤器的用户权限控制 -###2、例9-2 基于过滤器的中文乱码解决 -###3、例9-3 禁止未授权的IP访问站点过滤器 -###4、例9-4 会话计数监听器的设计 -##第10章Java Web实用开发技术 -###1、例10-1 带图形验证码的登录模块 -###2、例10-2 使用CKEditor编辑公告内容 -###3、例10-3 使用Cos组件实现作业上传 -###4、例10-4 使用JavaMail实现邮件发送 -##第11章Struts2框架技术 -###1、例11-1 Struts2——任意两数据的代数和 -###2、例11-2 Struts2——Action访问Web对象 -###3、例11-3 Struts2——多方法的Action -###4、例11-4 Struts2——非表单标签 -###5、例11-5 Struts2——实现国际化 -###6、例11-6 Struts2的国际化应用案例——适应于中英文的登录系统 -###7、例11-7 Struts2——文字过滤器的设计与应用 -###8、例11-8 Struts2——实现客户注册输入验证 -###9、例11-9 Struts2——使用配置验证文件实现客户注册输入验证 -##第12章Hibernate持久化技术 -###1、例12-1 Hibernate——实现用户信息的注册 -###2、例12-2 基于Struts2+Hibernate的学生信息管理系统 +## 第9章过滤器和监听器技术 +### 1、例9-1 基于过滤器的用户权限控制 +### 2、例9-2 基于过滤器的中文乱码解决 +### 3、例9-3 禁止未授权的IP访问站点过滤器 +### 4、例9-4 会话计数监听器的设计 +## 第10章Java Web实用开发技术 +### 1、例10-1 带图形验证码的登录模块 +### 2、例10-2 使用CKEditor编辑公告内容 +### 3、例10-3 使用Cos组件实现作业上传 +### 4、例10-4 使用JavaMail实现邮件发送 +## 第11章Struts2框架技术 +### 1、例11-1 Struts2——任意两数据的代数和 +### 2、例11-2 Struts2——Action访问Web对象 +### 3、例11-3 Struts2——多方法的Action +### 4、例11-4 Struts2——非表单标签 +### 5、例11-5 Struts2——实现国际化 +### 6、例11-6 Struts2的国际化应用案例——适应于中英文的登录系统 +### 7、例11-7 Struts2——文字过滤器的设计与应用 +### 8、例11-8 Struts2——实现客户注册输入验证 +### 9、例11-9 Struts2——使用配置验证文件实现客户注册输入验证 +## 第12章Hibernate持久化技术 +### 1、例12-1 Hibernate——实现用户信息的注册 +### 2、例12-2 基于Struts2+Hibernate的学生信息管理系统 -##实验 -###1、 -###例2-7 框架设计案例——多媒体播放系统设计 -###2、 -###例2-11 基于HTML+JavaScript+CSS的开发案例——JavaScript+CSS+DIV实现下拉菜单 -###例2-12 基于HTML+JavaScript+CSS的开发案例——JavaScript+CSS+DIV实现表格变色 -###3、 -###学生身体体质信息管理系统(通过JDBC驱动程序直接连接数据库) -###学生身体体质信息管理系统(通过连接池技术连接数据库) -###4、JSP+Servlet+JavaBean+DAO案例——学生体质信息管理系统 -###5、 +## 实验 +### 1、 +### 例2-7 框架设计案例——多媒体播放系统设计 +### 2、 +### 例2-11 基于HTML+JavaScript+CSS的开发案例——JavaScript+CSS+DIV实现下拉菜单 +### 例2-12 基于HTML+JavaScript+CSS的开发案例——JavaScript+CSS+DIV实现表格变色 +### 3、 +### 学生身体体质信息管理系统(通过JDBC驱动程序直接连接数据库) +### 学生身体体质信息管理系统(通过连接池技术连接数据库) +### 4、JSP+Servlet+JavaBean+DAO案例——学生体质信息管理系统 +### 5、 -##习题 +## 习题 ### -##附录 +## 附录 ###1、MySql的安装与配置 ###2、相关jar包——Struts2,Hibernate,junit4,Mysql ###3、connections.ncx——数据库文件 From 846b42455a19a8e6011131dd119eea40f551dc36 Mon Sep 17 00:00:00 2001 From: Skyward <1224085894@qq.com> Date: Wed, 5 Apr 2017 11:37:46 +0800 Subject: [PATCH 3/3] Update readme.md --- readme.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/readme.md b/readme.md index 361b20a..d163e5a 100644 --- a/readme.md +++ b/readme.md @@ -35,8 +35,8 @@ ### 2、学生身体体质信息管理系统(通过连接池技术连接数据库) ### 3、使用说明 ## 第5章JavaBean技术 -### 3、例5-1 设计一个圆的JavaBean类 -### 3、例5-2 基于JavaBean+JSP求任意两数代数和 +### 1、例5-1 设计一个圆的JavaBean类 +### 2、例5-2 基于JavaBean+JSP求任意两数代数和 ### 3、例5-3 网页计数器JavaBean的设计与使用 ### 4、例5-4 数据库访问JavaBean的设计 ## 第6章Servlet技术 @@ -102,12 +102,12 @@ ### 3、 ### 学生身体体质信息管理系统(通过JDBC驱动程序直接连接数据库) ### 学生身体体质信息管理系统(通过连接池技术连接数据库) -### 4、JSP+Servlet+JavaBean+DAO案例——学生体质信息管理系统 -### 5、 +### 4、 +### JSP+Servlet+JavaBean+DAO案例——学生体质信息管理系统 ## 习题 ### ## 附录 -###1、MySql的安装与配置 -###2、相关jar包——Struts2,Hibernate,junit4,Mysql -###3、connections.ncx——数据库文件 +### 1、MySql的安装与配置 +### 2、相关jar包——Struts2,Hibernate,junit4,Mysql +### 3、connections.ncx——数据库文件