每天记录学习,每天会有好心情。*^_^*
今日思考,完成一个基于SSM框架下的职员信息查询管理平台项目,需要实现哪些功能?
此类项目常见描述如下:
本文主要从企业员工信息管理系统的设计思路、企业员工信息管理系统的实现方式以及J2EE开发平台的优越性三个方面展开了具体的分析,对我国企业员工的信息管理系统进行了深入的探讨。采用当前非常流行的B/S体系结构,以JSP作为开发技术,主要依赖SSM技术框架,mysql数据库建立本系统。
SSM(MYECLIPSE)框架及其适合基于SSM框架下的职员信息查询管理平台,使用MVC的思想可以极大程度减少重复工作量。和SSM(MYECLIPSE)框架最配的开发工具是MYECLIPSE。MYECLIPSE集成了大量插件,可以更好的使用SSM(MYECLIPSE)进行项目的开发,使得项目开发时事半功倍。
通过对基于SSM框架下的职员信息查询管理平台系统的仔细分析,可以得出基于SSM框架下的职员信息查询管理平台系统是一个 后台项目。
在这样一个项目中,系统的登录角色是必不可少的,对每个登录角色设置账号、密码。以确保系统可以正常登录使用。SSM(MYECLIPSE)项目中包含的登录角色有管理员。
总结得出基于SSM框架下的职员信息查询管理平台项目所有数据为:管理员(admin)、信息录入(xinxiluru)、培训经历(peixunjingli)、调动经历(diaodongjingli)、请假记录(qingjiajilu)
基于SSM框架下的职员信息查询管理平台之管理员表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 管理员id username | VARCHAR(255) | | 账号 password | VARCHAR(255) | | 密码
基于SSM框架下的职员信息查询管理平台之信息录入表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 信息录入id xingming | VARCHAR(255) | | 姓名 nianling | VARCHAR(255) | | 年龄 xingbie | VARCHAR(255) | | 性别 zhiwu | VARCHAR(255) | | 职务
基于SSM框架下的职员信息查询管理平台之培训经历表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 培训经历id peixunshijian | VARCHAR(255) | | 培训时间 peixunzhuanye | VARCHAR(255) | | 培训专业 xingming | VARCHAR(255) | | 姓名
基于SSM框架下的职员信息查询管理平台之调动经历表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 调动经历id yuanbumen | VARCHAR(255) | | 原部门 diaodongbumen | VARCHAR(255) | | 调动部门 diaodongshijian | VARCHAR(255) | | 调动时间 xingming | VARCHAR(255) | | 姓名
基于SSM框架下的职员信息查询管理平台之请假记录表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 请假记录id xingming | VARCHAR(255) | | 姓名 qingjiashijian | VARCHAR(255) | | 请假时间
package org.mypro.front; import java.io.File; import java.io.IOException; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; import java.util.Date; import java.util.List; import javax.jms.Session; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.mypro.dao.QingjiajiluMapper; import org.mypro.entity.Qingjiajilu; import org.mypro.entity.QingjiajiluExample; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.multipart.MultipartFile; @Controller @RequestMapping(VALUE = "/") public class QingjiajiluController { private static final Log logger = LogFactory.getLog(QingjiajiluController.class); @Autowired private QingjiajiluMapper qingjiajiludao; //定义方法tianjiaqingjiajilu,响应页面tianjiaqingjiajilu请求 @RequestMapping(VALUE = "tianjiaqingjiajilu") public String tianjiaqingjiajilu(HttpServletRequest request, HttpServletResponse response,HttpSession SESSION,String backurl) { logger.debug("QingjiajiluController.tianjiaqingjiajilu ......"); IF(backurl != NULL && backurl.indexOf("tianjiaqingjiajilu.action") == -1){ RETURN "forward:/" + backurl; } RETURN "tianjiaqingjiajilu"; } @RequestMapping(VALUE = "tianjiaqingjiajiluact") public String tianjiaqingjiajiluact(HttpServletRequest request,HttpSession SESSION, HttpServletResponse response,Qingjiajilu qingjiajilu,String backurl) throws IOException { logger.debug("QingjiajiluController.tianjiaqingjiajiluact ......"); qingjiajiludao.insert(qingjiajilu); request.setAttribute("message", "添加请假记录成功"); IF(backurl != NULL && backurl.indexOf("tianjiaqingjiajiluact.action") == -1){ RETURN "forward:/" + backurl; } //返回tianjiaqingjiajilu方法 RETURN "forward:/tianjiaqingjiajilu.action"; } //定义qingjiajiluguanli方法响应页面请求 @RequestMapping(VALUE = "qingjiajiluguanli") public String qingjiajiluguanli(HttpServletRequest request,HttpSession SESSION, HttpServletResponse response,String backurl) { logger.debug("QingjiajiluController.qingjiajiluguanli ......"); QingjiajiluExample example = NEW QingjiajiluExample(); List qingjiajiluall = qingjiajiludao.selectByExample(example); request.setAttribute("qingjiajiluall", qingjiajiluall); IF(backurl != NULL && backurl.indexOf("qingjiajiluguanli.action") == -1){ RETURN "forward:/" + backurl; } RETURN "qingjiajiluguanli"; } // 定义 qingjiajiluchakan方法 @RequestMapping(VALUE = "qingjiajiluchakan") public String qingjiajiluchakan(HttpServletRequest request,HttpSession SESSION, HttpServletResponse response,String backurl) { logger.debug("QingjiajiluController.qingjiajiluchakan ......"); QingjiajiluExample example = NEW QingjiajiluExample(); List qingjiajiluall = qingjiajiludao.selectByExample(example); request.setAttribute("qingjiajiluall", qingjiajiluall); IF(backurl != NULL && backurl.indexOf("qingjiajiluchakan.action") == -1){ RETURN "forward:/" + backurl; } RETURN "qingjiajiluchakan"; } // 定义 xiugaiqingjiajilu方法 @RequestMapping(VALUE = "xiugaiqingjiajilu") public String xiugaiqingjiajilu(HttpServletRequest request, HttpServletResponse response,HttpSession SESSION,INT id,String backurl){ logger.debug("QingjiajiluController.xiugaiqingjiajilu ......"); Qingjiajilu qingjiajilu = qingjiajiludao.selectByPrimaryKey(id); request.setAttribute("qingjiajilu", qingjiajilu); IF(backurl != NULL && backurl.indexOf("xiugaiqingjiajilu.action") == -1){ RETURN "forward:/" + backurl; } RETURN "xiugaiqingjiajilu"; } // 定义xiugaiqingjiajiluact处理请假记录修改 @RequestMapping(VALUE = "xiugaiqingjiajiluact") public String xiugaiqingjiajiluact(HttpServletRequest request, HttpServletResponse response,Qingjiajilu qingjiajilu,HttpSession SESSION,String backurl) throws IOException { logger.debug("QingjiajiluController.xiugaiqingjiajiluact ......"); qingjiajiludao.updateByPrimaryKeySelective(qingjiajilu); request.setAttribute("message", "修改请假记录信息成功"); IF(backurl != NULL && backurl.indexOf("xiugaiqingjiajiluact.action") == -1){ RETURN "forward:/" + backurl; } RETURN "forward:/qingjiajiluguanli.action"; } // 定义shanchuqingjiajilu,处理删除请假记录 @RequestMapping(VALUE = "shanchuqingjiajilu") public String shanchuqingjiajilu(HttpServletRequest request, HttpServletResponse response,HttpSession SESSION,INT id,String backurl){ logger.debug("QingjiajiluController.shanchuqingjiajilu ......"); qingjiajiludao.deleteByPrimaryKey(id); request.setAttribute("message", "删除请假记录成功"); IF(backurl != NULL && backurl.indexOf("shanchuqingjiajilu.action") == -1){ RETURN "forward:/" + backurl; } RETURN "forward:/qingjiajiluguanli.action"; } // 定义sousuoqingjiajilu方法,处理搜索操作 @RequestMapping(VALUE = "sousuoqingjiajilu") public String sousuoqingjiajilu(HttpServletRequest request, HttpServletResponse response,HttpSession SESSION,String SEARCH,String backurl) { logger.debug("QingjiajiluController.sousuoqingjiajilu ......"); QingjiajiluExample example = NEW QingjiajiluExample(); QingjiajiluExample.Criteria criteria = example.createCriteria(); IF(SEARCH != NULL){ criteria.andXingmingLike("%" + SEARCH + "%"); } List qingjiajiluall = qingjiajiludao.selectByExample(example); request.setAttribute("qingjiajiluall", qingjiajiluall); IF(backurl != NULL && backurl.indexOf("sousuoqingjiajilu.action") == -1){ RETURN "forward:/" + backurl; } RETURN "sousuoqingjiajilu"; } // 定义QingjiajilupinglunMapper @RequestMapping(VALUE = "qingjiajiluxiangqing") public String qingjiajiluxiangqing(HttpServletRequest request,HttpSession SESSION, HttpServletResponse response,INT id,String backurl) { logger.debug("QingjiajiluController.qingjiajiluxiangqing ......"); Qingjiajilu qingjiajilu = qingjiajiludao.selectByPrimaryKey(id);request .setAttribute("qingjiajilu", qingjiajilu); IF(backurl != NULL && backurl.indexOf("qingjiajiluxiangqing.action") == -1){ RETURN "forward:/" + backurl; } RETURN "qingjiajiluxiangqing"; } // 上传文件图片等public String uploadUtile (MultipartFile file, HttpServletRequest request) throws IOException { // 根据当前时间生成时间字符串SimpleDateFormat sdf = NEW SimpleDateFormat("yyyyMMddHHmmssSS");String res = sdf.format(NEW DATE()); // uploads文件夹位置String rootPath = request.getSession().getServletContext().getRealPath("resource/uploads/"); // 原始名称String originalFileName = file.getOriginalFilename(); // 新文件名String newFileName = "sliver" + res + originalFileName.substring(originalFileName.lastIndexOf(".")); // 创建年月文件夹Calendar DATE = Calendar.getInstance();File dateDirs = NEW File(DATE.get(Calendar.YEAR) + File.separator + (DATE.get(Calendar.MONTH)+1)); // 新文件File newFile = NEW File(rootPath + File.separator + dateDirs + File.separator + newFileName); // 判断目标文件所在目录是否存在 IF( !newFile.getParentFile().exists()) { // 如果目标文件所在的目录不存在,则创建父目录newFile .getParentFile().mkdirs(); }System .out.println(newFile); // 将内存中的数据写入磁盘file .transferTo(newFile); // 完整的urlString fileUrl = DATE.get(Calendar.YEAR) + "/" + (DATE.get(Calendar.MONTH)+1) + "/" + newFileName; RETURN fileUrl; }}
添加调动经历模块:
从页面中通过post方法,将调动经历信息传入到后台服务器中,在tianjiadiaodongjingliact
中接收,字段包括原部门,调动部门,调动时间,姓名使用insert方法添加数据,将数据同步到
数据库中,完成添加操作。定义添加成功提示信息,添加调动经历成功,并保存到request中具体代码如下:
通过diaodongjinglidao的insert方法将页面传输的调动经历添加到数据库中 diaodongjinglidao.insert(diaodongjingli);
将添加调动经历成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "添加调动经历成功");
返回调动经历管理界面
return "forward:/tianjiadiaodongjingli.action";
查询调动经历模块:
调动经历的查询模块实现方式为,在页面中发起diaodongjingliguanli.action请求。通过该请求,响应服务器diaodongjingliController类中的diaodongjingliguanli,在该方法中通过selectByexample进行数据的查询操作。将所有的调动经历信息查询后,保存到request中的diaodongjingliall中,在页面中进行展示,返回diaodongjingliguanli.jsp,该部分核心代码如下所示:
生成调动经历样例类,通过example定义查询条件 DiaodongjingliExample example = new DiaodongjingliExample();
通过diaodongjinglidao的selectByExample方法查询出所有的调动经历信息 List diaodongjingliall = diaodongjinglidao.selectByExample(example);
将调动经历信息,保存到request中,在页面通过foreach方法进行展示 request.setAttribute("diaodongjingliall", diaodongjingliall);
返回调动经历管理界面
return "forward:/diaodongjingliguanli.action";
修改调动经历模块:
在页面完成调动经历的修改信息填写后,将该部分数据传入xiugaidiaodongjingli.action地址,并通过post进行提交。提交后在diaodongjingliController中通过xiugaidiaodongjingli进行接收,将所有字段封装为一个调动经历实体。并将该实体传入diaodongjinglidao中的updateByPrimaryKeySelective方法中,在该方法中定义了通过调动经历id更新其余调动经历的字段,该部分字段包括原部门,调动部门,调动时间,姓名,该部分核心代码如下所示:
通过diaodongjinglidao的修改方法根据id修改对应的调动经历 diaodongjinglidao.updateByPrimaryKeySelective(diaodongjingli);
将修改调动经历成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "修改调动经历信息成功");
返回调动经历管理界面
return "forward:/diaodongjingliguanli.action";
删除调动经历模块:
删除调动经历功能的实现方式为,通过点击删除调动经历按钮,向服务器发起get请求。请求中包含调动经历的id信息,在diaodongjingliController中使用int接受该id,并将该id传入diaodongjinglidao的deleteByPrimaryKey方法中。该方法的作用为根据id删除对应调动经历。最后将删除调动经历成功的信息返回页面,该部分核心代码如下:
通过diaodongjinglidao的删除方法根据id删除对应的调动经历 diaodongjinglidao.deleteByPrimaryKey(id);
将删除调动经历成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "删除调动经历成功");
返回调动经历管理界面
return "forward:/diaodongjingliguanli.action";