开发案例 文章编号:1007—1423(2017)03—0068—06 DOI:10.3969/j.issn.1007—1423.2017.03.018 J2EE的智能小区物业管理系统设计与实现 李忠凯.贾年 (西华大学无线电管理技术研究中心,成都610039) 摘要: 随着经济的发展,小区更加智能和现代化,建立一套完善的物业管理系统可以极大提高物业管理水平和效率 传统 的小区物业管理系统多采用C/S模式,维护成本高,系统升级不便。该文源于某小区实际项目,采用MVC架构,利用 J2EE技术体系进行Web开发,实现运行效率高、集成方便、系统维护便捷的智能小区物业管理系统 关键词: 物业管理系统:J2EE:MySQL 基金项目: 国家科技支撑计划(No.2011BAH26B03)、四川省科技支撑计划(No.2011FZO051) 0 引言 物业管理系统是现代化智能小区不可缺少的一部 分.随着社会经济的告诉发展.人们越来越看重小区的 物业管理水平。一个优秀的物业管理系统可以提升小 区的管理水平.物业人员对小区的管理更加便利 利用 计算机的强大的功能.与先进的管理思想相结合.建立 一SSH框架指的是Struts+Spring+Hiebernate三者.是 目前J2EE技术体系中比较流行的三大开源框架 集成 SSH框架的系统从职责上可以分为四层:表示层、业务 逻辑层、持久层和实体层.技术开发人员可以在短期内 搭建结构清晰、复用性好、维护方便的Web应用程序 其中使用Struts作为系统的整体基础架构.负责MVC 的分离.在Struts框架的模型部分.控制业务跳转.利用 Hibernate框架对持久层提供支持.Spring作为容器.管 理Struts和Hibernate 套完善的物业管理系统.对建设现代化智能小区具 有重要的意义 传统的小区物业管理有如下几条缺点:①目前许 多小区停留在人工管理阶段.需要物管人员手工记录 Spring是一个层次化的轻量级应用框架,功能主 要包括:对象工厂、应用上下文管理、AOP框架、自动代 理、事务管理、持久层抽象、JDBC支持、ORM框架集 成、Web MVC框架以及远程服务支持 Spring具有如下 各种繁琐事宜,对人力、物力造成了极大的浪费;②传 统的行业软件.功能单一.无法满足物业管理人员的需 求:③现有的小区管理系统多采用C/S模式,系统维 护、升级不便。 本文设计实现了基于J2EE的智能小区物业管理 优点:采用低侵入式设计,代码污染极低:独立于各种 应用服务器,基于Spring框架的应用,可以真正实现一 次编写、处处运行的理念:Spring的依赖注入机制降低 了业务对象替换的复杂性.提法哦了组件之间的解耦: Spring的AOP(面向切面)支持允许一些通用任务如安 全、事务、日志等进行集中式管理,从而提供了更好的 复用。 系统:①结合现有的物业管理工作,系统更加贴近实际 需求,具有很高的实用性;②采用MVC架构,利用 J2EE技术进行Web开发,系统升级维护方便。 1 相关技术概述 1.1 SSH框架 Struts是Apache软件基金会赞助的一个开源项 ⑥ 现代计算机2017.01下 目.它采用MVC模式,能够帮助Java开发者更好的利 用J2EE技术进行Web开发 Struts框架可以提供如下 到中小企业的热捧。MySQL是开源数据库,提供的接口 支持多种语言连接操作。MySQL支持不同的存储引擎, 可以根据业务的需要选择不同的引擎。 服务:作为控制器的Servlet;提供大量的标签库;提供 了用于国际化的框架.利用不同的配置文件.可以帮助 ④@⑧@@ 2 系统设计 用户选择自己合适的语言等 Hibernate是一个对象关系映射框架.它对JDBC 进行了轻量级的封装.大大简化了数据访问层繁琐的 重复性代码 它将POJO与数据库表建立映射关系.是 ~个全自动的ORM框架.Hibernate可以自动生成SOL 语句,自动执行,使得Java程序员可以随心所欲的使用 对象编程思维来操纵数据库 编 ̄Iibernate btapping文件和持久化实 体类,数据库表转换为对应的Java实体类 利用Hibernate完成对数据库的各种操作 编写service接口方法和实现,利用 spring的依赖注入,调用DAO操作 Struts ̄Action进行请求拦截,用于处理 页面和业务逻辑的交互 l Ijse、IfML页面,对业务数据进行页面展 示,Js提交MAX请求 图1 SSH技术框架关系图 1.2数据库 Redis是一个开源的使用ANSI C语言编写、支持 网络、可基于内存亦可持久化的日志型、Key-Value数 据库。和Memcached类似.它支持存储的va1ue类型相 对更多,包括Stirng(字符串)、List(链表)、Set(集合)、 Zset(Sorted Set:有序集合)和hash(哈希类型)。Redis广 泛应用于缓存.大大提高页面访问速度.减轻了数据库 的负担。Redis能够替Memcached。让缓存从只能存储 数据变得能够更新数据.不再需要每次都重新生成数 据。 MySQL是一种关系型数据库管理系统.关联数据 库将数据保存在不同的表中.而不是将所有数据放在 一个大仓库内.这样就增加了速度并提高了灵活性 MySQL数据库因其体积小、速度快、总体拥有成本低受 2.1功能性设计 经过可行性分析和调研.出于物业管理人员操作 方便、功能需求的考虑.设计了该套小区管理系统,同 时基于小区业主住户端的Android应用程序也已经开 发完成.对业主和物业都带来了极大的便利。 其功能结构图如图2所示: 图2小区管理系统功能模块图 报修模块分为未处理报修、正在处理报修、已经处 理报修.主要针对业主手机客户端提交的报修信息安 排维修工进行维修 审核模块主要对住户发布的社区活动、房间绑定 信息进行审核.若住户发布的活动审核未通过.会通过 消息推送告知住户 投诉模块是住户通过客户端发送的小区投诉信 息.受理后会通过推送或者电话告知住户。 缴费模块可以查看住户缴纳的物业费信息.并可 以通过推送或者短信催促住户缴费 物业发布模块可以查看物业发布的停水、停电等 公告.并可以通过手机推送告知住户 用户发布模块分类显示住户发布的帖子信息.并 且可以对帖子进行管理 报表模块包含报修投诉报表、住户满意度调查表、 活动报表等等.物业可以按照多种方式查询并能打印 报表。 小区模块主要是录入小区内楼盘房间信息.小区 业主的具体信息 2.2系统架构设计 本文设计的智能小区物业管理系统架构设计可以 现代计算机 2o17.01下⑥ 开发案倒’ ,J酉 ●|J1-|___IJ 分为表现层、控制层、业务服务层、系统服务层、数据层 等几部分 3 系统实现 3.1系统主要功能代码 下面以报修功能为例,说明整个系统的流程: 首先Struts拦截报修H1TI、P请求.调用Repair Action类addRepair方法,Stutrs.xml配置如下: —表现层主要采用JSP、HTML技术,同时结合JS、 CSS等技术设计Web界面.将控制层返回的数据做界 面直观展示 控制层利用Struts的Acti0n拦截来自客户端的请 求.以JSON格式返回数据。 业务服务层主要分为消息推送服务,文件服务、用 户中心服务、住户物业信息发布服务、报修投诉服务、 其他业务服务.每种类型的服务即可以通过远程通信 协议Hessian发布服务.也可以作为服务的调用者 实 际开发过程中采用Spring+Hessian整合的方式.只需通 过XML简单配置便可以完成服务的发布和调用 采用 服务发布渊用的方式.即可以实现不同业务模块的解 耦,又可以实现分布式部署 <!一一添 口报修的action一一> <action name=”addRepair’’ class=”corn.i5 1 bestapp.CommunityManager. action.RepairAction”method=”addRepair”> —<result type=”jsou”> <param uanle=”noCache“>true</param> <param name=”IneludeProperties’’> resuh</param> </result> </action> ,丰水 系统服务层主要是Redis集群,Redis作为缓存来 使用.极大地减轻了数据库的访问压力,又可以很大提 高程序的响应速度 数据层应用的是MySQL和MongoDB数据库,Hi— 添加报修 木, public String addRepair(){ —bemate作为持久层.访问数据库更加方便。 ————————一result=WebConstant.ERRMSG FAILURE; //获取当前工作人员所在的小区 r——————一——————●—] 表现层 I 一1 web浏览器1 圃 /、 1A—n—d——r—o——i—d— / !机 ———————— —一 n Map<String,Object>session=ActionContext. getContext().getSession(); long userId=(1ong)session.get(”userld”); UserBean userBean=repairService.getUserInfor (userld); long repairID=repairService.addRepair(0, F3 ...。. .. — — 一 、 7『I 』 一通过hessian调用服务 repairAddress,repairUser, repairTel,repairContentType,repairType, 1 16002,userBean.getCommunityID(),O); if(repairlD>0){ boolean bl:repairServiee.addRepairContent (repairID,repairContent, 0): if(b1){ result=WebConstant.ERRMSGOK; } l return SUCCESS; 1 3智能小区物业管理系统架构图 RepairService通过Hessian发布服务.RepairAction 类利用Spring依赖注入repairServiee后.通过Spring整 现代计算机2017.01下 合的Hessian调用报修服务.具体配置如下: <!一一报修服务一一> <bean id=”repairService’’class--”com.i51bestapp.common. hessian.SinoiovHessianProxyFactoryBean”> <property name=”serviceUrl”value=”¥frepairSer- vice.1ocation}”/> <property name=”servicelnterface“value=”con. i51bestapp.CommunityManager.intf.RepairService”,> </bean> <!一一报修服务~一> <alias name=”/repairService”alias=”/com.i5 lbestapp.Com— munityManager.intf.RepairService”/> <bean name=”/repairService”class=”org.springframework. remoting.caucho.HessianServiceExporter”> <property name=”service”ref=”repairService”/> <property name=”servicelnterface”value=”con. i5 lbestapp.CommunityManager.intf.RepairService”/> </bean> 考虑到后期可能产生大量的报修数据.报修数据 查询时会给数据库带来很大的负担.因此将报修数据 存人数据库的同时存人Redis缓存.查询时直接通过 Redis查询,具体代码实现如下: Long createTime=System.currentTimeMillis(); Repair repair=new Repair(); //利用ID加载实体 Para para paraDao.get Para.class.Repair— rfype); Para para1 paraDao.get(Para.class.Repair— Category); Para para2 paraDao.get(Para.class.Re— pairApproch); Community community=communityDao .get(Community.class,Communi— tylD); User user=userDao.get User.class.Re— pairUserID); Room room=roomDao.get(Room.class,roo— miD); repair.setRoom(room); repair.setParaByRepairType(para); repair.setParaByRepairCategory(para1); repair.setUser(user); repair.setRepairAddress(RepairAddress); repair.setRepairName(RepairName); repair ̄setRepairTel(RepairTe1); repair.setParaByRepairType(para); repair.setParaByRepairApproach(para2); repair.setRepairTime(new Date()); repair.setCommunity(community); repairDao.save(repair); String infoString=JSON.toJS0NString(repair); RedisCache.zAddObj(”REPAIR”,createTime,infoS一 tring); ,木木 zadd增加元素 术/ public static void zAddObj(ifnal Stirng key,final double score,final Object obj){ if(StringUtils.isBlank(key)II obj==nul1)f return; } JedisCluster cluster=RedisUtils.getJedisCluster(); try{ if(obj instanceof Stirng){ cluster.zadd(key,score,obj.toString()); }else{ cluster.zadd(key,score,JSON.toJSON— Stirng(obj)); } }catch(Exception e){ logger.error(”zadd exception,key is:”+key, e); } } public class RedisUtils{ private static final Log logger=LogFactory.getLog(Re— disUtils.class); private static ResourceBundle bundle=null; private static JedisCluster jedisCluster; private RedisUtils(){ } public static JedisCluster getJedisCluster(){ try{ if(jedisCluster==nul1){ bundle=ResourceBundle.getBundle(”re一 乇圃仔计笛加 9n17 n1下 面 开发案例。 d h一 n 一-一H誊 一~n 一 一 T¨ ‘一一.三c 鲫 ~ d州一 : ¨ ~ H广 州.一詈 _ C一 , .” ~m ,, 3.2系统运行效果图 ; 采 基于J2EE的软件架构和MVC思想实现整个 n : ¨ g d 系统的结构设计.系统运行效果如罔4、5所示: 图4 ’r { 一 录界面『皋l 一。 T‘ :’Ⅲ 四啊_臣 亚至=]_圆口墨互口圆一日■墨盈 藿重上叫囝 :煎塞塞 i瞳 集: 谭 口墨囵 ・ 、 g: 5智能小区管理系统主界面图 4 结语 本文设计实现了基于J2EE技术的智能小区物业 其叶l RedisUtils类是基于单例模式实现的Java连 接Redis服务器的客户端,RedisCat?l1 类封装了Java 刈‘Redis的增删改金一系列操作、 管理系统.同时业主住户端App应用程序也已经开发 完成 该系统能够为物业管理人员带来极大的便利.工 作效率更高,、同时进一步加强了物业人员与业主的沟 通.可以使物业更好地服务业主 该系统采用MVC模 式进行开发.实现了B/S模式的物业管理系统.采用模 Dao层主要通过Spring整合Hibenrote,可以通过 Eclipse中的插件直接生成数据库Repair表对应的Re— pair类和Repair.hbm.XInl配置文件 BaseDaoHibenate4 块化设计与接口编程,系统后期的维护升级更加方便、 易于扩展. .类封装了对数据库的增删改 操作.RepairDao类继承 此类实现报修功能的增删改奁 囝 现代计算机2017.01下 参考文献: n1刘萍.基于SSH框架的小区物业管理系统的设计与实现[J].电脑知识与技术,2015(07). 『21单红艳.基于Web的小区物业管理与服务平台的设计与实现[D】,2014. f31胡风娟.基于SSH架构的物业管理系统的设计与实现『J].电脑开发与应用,2014(11). 『41张浩.基于J2EE和MVC的智能小区物业管理系统应用与研究[D].武汉理工大学,2006 f51向戈强.基于Web的智能小区物业管理系统的设计与实现[D].西安电子科技大学,2011 作者简介: 李忠凯(1990一),男,山东淄博人,在读硕士研究生,研究方向为智能信息处理 贾年(1973一),男,I ̄l JII眉山人,副教授,硕士生导师,研究方向为智能信息检索、计算机网络 收稿日期:2016—11-15 修稿日期:2016—12—30 Residential Property Management Design and Implementation of Intelligent System Based on J2EE LI Zhong-kai,JIA Nian (Center for Radio Administration and Technology,Xihua University,Chengdu 610039) Abstract: With the development of economy,the garden is more intelligent and modern,the establishment of a comprehensive property management system can greatly improve the level of property management and efficiency.Traditional residential property management system uses C/S mode,high maintenance costs,system upgrade inconvenience.From a garden of he acttual project,uses MVC architecture and J2EE technology system for Web development,to achieve a high efficiency,easy integration,system maintenance and convenient intelligent residential property management system. Keywords: Property Management System;J2EE;MySQL 现代计算机 2017.01下@