基于SSM框架下的JAVA公用房信息系统
每天记录学习,每天会有好心情。*^_^*
最近了解了公用房信息系统项目,在这个平台记录一下这个公用房信息系统项目,方便以后再次使用或学习的时候能够及时的翻阅。在完成这个项目的时候,考虑了很多框架。最终决定选用SSM(MYECLIPSE),该框架具有极强的移植性,多平台性,便于操作性等优点。此框架能在MYECLIPSE开发工具中完美的编写和运行,公用房信息系统为一个 后台项目。这个项目的描述是这样的:本课题针对当前高校公用房管理不集中、房屋资源闲置严重、审批流程不规范等问题,研究了通用的高校公用房信息管理模型管理以求弥补当前公用房管理中体制落后、机制不健全的缺陷,设计和开发了全面而又简洁的高校公用房信息管理系统,同时也对DCI模式的系统开发进行了一定层次的研究,本课题的研究方法和研究成果对于相关的研究具有一定的借鉴意义。对当前研究进展的研究基础上,本课题运用UML统一建模语言,对高校公用房管理的业务逻辑进行了梳理,对系统功能进行了功能划分,尽可能地使功能模块调整到最佳粒度;运用DCI模式进行数据模型的设计、交互环境和交互过程的研究,基于前述UML建模和系统设计,最终建立了基于SSM架构的高校公用房信息管理系统;为保证系统的安全性,本系统在软件方面进行了多方面的防护手段,采用MD5算法加密用户资料,依照权限关系映射生成功能菜单,页面间均有SESSION身份验证,对疑似攻击会启动封锁IP进行防御。
在对公用房信息系统项目进行需求分析的时候,得出系统的登录角色包括了管理员。对应用户可以通过登录自己的账号,进行入系统。系统对不同角色拥有不同权限。
总结得出该系统所有数据为:管理员(admin)、房屋(fangwu)、用户(yonghu)
管理员表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 管理员id username | VARCHAR(255) | | 账号 password | VARCHAR(255) | | 密码
房屋表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 房屋id mingcheng | VARCHAR(255) | | 名称 huxing | VARCHAR(255) | | 户型 dizhi | VARCHAR(255) | | 地址 zhuangtai | VARCHAR(255) | | 状态
用户表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 用户id mingzi | VARCHAR(255) | | 名字 username | VARCHAR(255) | | 账号 password | VARCHAR(255) | | 密码
SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- ---------------------------- -- Table structure for gggongyongfang -- ---------------------------- DROP TABLE IF EXISTS `t_admin`; CREATE TABLE `t_admin` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '管理员id',`username` VARCHAR(255) DEFAULT NULL COMMENT '账号',`password` VARCHAR(255) DEFAULT NULL COMMENT '密码',PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='管理员'; -- ---------------------------- DROP TABLE IF EXISTS `t_fangwu`; CREATE TABLE `t_fangwu` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '房屋id',`mingcheng` VARCHAR(255) DEFAULT NULL COMMENT '名称',`huxing` VARCHAR(255) DEFAULT NULL COMMENT '户型',`dizhi` VARCHAR(255) DEFAULT NULL COMMENT '地址',`zhuangtai` VARCHAR(255) DEFAULT NULL COMMENT '状态',PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='房屋'; -- ---------------------------- DROP TABLE IF EXISTS `t_yonghu`; CREATE TABLE `t_yonghu` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',`mingzi` VARCHAR(255) DEFAULT NULL COMMENT '名字',`username` VARCHAR(255) DEFAULT NULL COMMENT '账号',`password` VARCHAR(255) DEFAULT NULL COMMENT '密码',PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户';
添加房屋模块:
通过添加房屋模块,可以完成房屋的添加操作。在页面中跳转到添加房屋页面,输入房屋的所有信息,点击添加操作,可以将房屋数据以post提交到fangwuController中。房屋所包含的字段信息包括名称,户型,地址,状态。在fangwuController中通过定义fangwu接受所有的房屋参数。使用fangwudao的insert方法将fangwu实体插入到数据库中。完成数据的添加操作,在fangwuMapper中匹配对应的fangwuxml完成插入sql语句的执行操作。该部分核心代码如下:
通过fangwudao的insert方法将页面传输的房屋添加到数据库中 fangwudao.insert(fangwu);
将添加房屋成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "添加房屋成功");
返回房屋管理界面
return "forward:/tianjiafangwu.action";
查询房屋模块:
在后台中定义房屋查询模块,在侧边栏中点击房屋管理,可以跳转到房屋管理界面。在该页面中通过fangwuController中定义fangwuguanli响应房屋查询模块。在fangwuguanli中查询出所有信息,返回页面进行循环展示。查询方法为fangwudao中的selectByexample方法。该部分核心代码如下:
生成房屋样例类,通过example定义查询条件 FangwuExample example = new FangwuExample();
通过fangwudao的selectByExample方法查询出所有的房屋信息 List fangwuall = fangwudao.selectByExample(example);
将房屋信息,保存到request中,在页面通过foreach方法进行展示 request.setAttribute("fangwuall", fangwuall);
返回房屋管理界面
return "forward:/fangwuguanli.action";
修改房屋模块:
点击修改按钮,可以跳转到房屋修改页面。在房屋修改页面中,将初始化该房屋的所有信息,并将信息一一对应填充到对应编辑栏中。编辑完房屋信息后,页面通过post方法将数据封装为一个房屋实体,传入到fangwuController中。在xiugaifangwu中进行接收,接收完毕后,调用fangwuMapper中的updateByPrimaryKeySelective方法进行修改。该部分代码如下:
通过fangwudao的修改方法根据id修改对应的房屋 fangwudao.updateByPrimaryKeySelective(fangwu);
将修改房屋成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "修改房屋信息成功");
返回房屋管理界面
return "forward:/fangwuguanli.action";
删除房屋模块:
在管理页面中,点击删除。页面将通过a标签的href属性,使用get方法将该房屋
的id上传到服务器中,在服务器中通过fangwuController类中的shanchufangwu进行接收,之后调用fangwuMapper中的deleteByPrimaryKey方法根据ID进行删除。将删除信息保存到request的message中,在页面给出用户删除成功的提示信息,该部分核心代码如下:
通过fangwudao的删除方法根据id删除对应的房屋 fangwudao.deleteByPrimaryKey(id);
将删除房屋成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "删除房屋成功");
返回房屋管理界面
return "forward:/fangwuguanli.action";