| 2008/7--2008/12:3G移动商城 |
| 软件环境: |
Struts+Spring2.5+JPA+Ajax+Lucene |
| 开发工具: |
Myeclipse6.6+Rose+Android智能手机摸拟器 |
| 项目描述: |
是一套面向3G智能手机开发的在线商品交易系统,整个系统包含二个子系统,分别是面向企业内部办公的OA系统(实现如产品管理\订单处理等功能)和手机前端用户的商品订购系统 |
| 责任描述: |
参与项目的需求分析,使用Rose绘制所负责模块的UML用例图/活动图/时序图/状态图和编写项目设计文档,负责产品管理、产品前端显示、供应商管理、购物车、用户管理、产品全文搜索、购物流程、订单处理流程、用户评论管理、权限管理、系统优化等模块的代码实现与测试。在设计业务bean时,为实现软件各层之间解偶合,业务bean采用面向接口设计,在业务bean编写的过程中采用Junit反复对业务方法进行单元测试。在JSP页面使用JSTL/EL操作数据显示和使用Struts标签在表单中进行数据回显。
各模块的技术要点:
1>产品管理模块中的产品类别实现了无限级分类,购物车采用Session技术实现,解决了购物车在多个新打开浏览器共享的问题。产品搜索采用Compass+Lucene实现全文搜索,解决了增量索引的需求。
2>网站办公系统的权限管理采用采用粗/细粒度设计,粗粒度用于控制用户对那些页面具有访问的权限,细粒度用于控制用户对页面上的那些按钮具有访问的权限。在实现过程中,粗粒度控制使用Filter实现,细粒度控制使用AOP技术实现,即对Action中的方法进行拦截。
项目经验与心得:
1>为提高3G网站性能,本系统使用Velocity技术对产品页面和新闻页面实施静态化、使用OSCache对产品列表页面实施页面缓存,并采用数据源技术减少连接数量。
2>使用了三大门户网站都在使用的SSI技术实施页面包含,加快了页面包含解析输出性能,使用了SSI技术的网页后缀默认为.shtml。
3>在这个项目中我们选择使用了JPA技术,JPA技术是Sun提出的Java持久化规范,他充分吸收了现有Hibernate、TopLink等ORM框架的基础上发展而来。相对于Hibernate,他更易于使用,而且可以使我们的项目在任何实现了JPA规范的ORM框架中运行,可移植性很强。
4
>在项目中,对实体的添/删/改/查和分页都在DaoSupport抽象类中实现,业务层的bean只有继承该类就具有这些功能。
5>使用Spring的OpenEntityManagerInViewFilter过滤器解决了在JSP访问实体bean中的Lazy属性时,因EntityManager关闭导致的延迟加载例外问题。 |
|
| 2008/12--2008/12:易宝网上支付对接 |
| 软件环境: |
JavaBean+JSP+Servlet+log4j+dom4j |
| 开发工具: |
Meclipse3.3 for JavaEE |
| 项目描述: |
本系统是为互联网客户提供在线支付功能 |
| 责任描述: |
按照易宝支付的接入规范编写接入代码,项目分两个功能,第一个功能是向支付网关发起支付请求,支付请求中包含商户的ID、商户的订单号、支付金额、响应URL等等。在请求发起前需要使用请求参数和商户的密钥采用MD5技术生成用户身份签名,并把用户身份签名作为请求参数发送给支付网关。第二个功能是当客户在银行网页完成支付后,支付网关会把支付结果信息发送到商户提供的响应URL。响应URL由一个Servlet实现,该Servlet会接收支付网关发送过来的请求参数,并且使用商户的密钥和接收到的请求参数生成身份签名。用生成的身份签名与支付网关发送过来的身份签名比较是否相同,如果相同,证明请求来源合法,处理支付成功的业务。
采用Log4j记录交易信息,采用dom4j从XML文件中读取商户配置信息。 |
|
| 2008/03--2008/06:江西省燃料公司综合办公自动化系统(OA) |
| 软件环境: |
Struts+Ajax+Jbpm+Hibernate+Jfreechart |
| 开发工具: |
eclipse3.3 for JavaEE |
| 项目描述: |
本系统是一个基于互联网的高效协同工作平台和优秀的协同管理系统。它可把日常管理中的业务、事务、事件等信息在单位、部门、组群、个人之间进行及时高效、有序可控、全程共享的沟通和处理。包含文档系统/人事系统/公共信息系统/日程任务系统/消息系统/考勤系统/系统系统/公告系统/会议管理/审批管理/个人工具/办公用品/权限管理等模块。 |
| 责任描述: |
参与了项目的功能划分的分析和设计的讨论,消息管理、考勤管理、公文流转、权限管理等的代码实现。负责公文流转管理及流程监控。实现公文的会签,流程的设计使用图形化的流程设计工具完成。同一个流程定义在系统中可以有多份,以版本来区分。在流程执行的过程中,可以全程监控流程实例,可以查看流程中的所有变量;可以图形化的监控流程,在流程图片上高亮显示当前正在执行的节点。对统计数据使用Jfreechart生成饼图与柱状图。 |
|
| 2007/12--2008/03:美特好超市进销存系统 |
| 软件环境: |
Struts2+Spring+Hibernate |
| 开发工具: |
eclipse3.2+ROSE |
| 项目描述: |
这是一个对企业采购、销售、库存进行管理的系统,对企业的从采购到库存到销售等各个环节进行管理,实现了数据在各个部门之间的共享与流转,提高了企业的运行效率。项目主要分采购、销售、仓储三个主要子系统。 |
| 责任描述: |
负责库存子系统的开发,主要开发入库单、出库单和盘点单三张单据的开发以及库存台帐、库存预警等模块的开发。
项目经验与心得:
展现层使用Struts2来实现MVC模式,把Domain Object和Action交由Spring容器进行管理,这样有助于更好的分层解耦。利用Spring可以管理对象的生命周期、注入依赖对象和使用容器声明式事务管理。持久化层使用hibernate来实现,使用泛型DAO把添/删/改/查/分页/统计这些操作进行了封装,子类只要继承该DAO就具备这些行为。在实现细粒度权限管理时使用了Struts2中提供的拦截器实现对Action方法的拦截,当发现用户具有某个权限时,才允许Action方法继续执行。粗粒度权限管理使用Filter实现。实现DAO代码时,我们并没有使用HibernateTemplate和HibernateDaoSupport,主要因为这两个类都是由Spring提供的,从无入侵性的角度来看,应用会跟Spring容器产生紧密的耦合。这里我们使用了Hibernate原生的API实现DAO,当然这种方式只能在Hibernate3以上版本中使用,而且必须通过getCurrentSession()方法获取当前被spring管理的session,而不能使用openSession(),因为openSession()得到的session是不受spring容器管理的,无法使用容器管理事务功能。
|
|
| 2007/9--2007/12:宁夏企业征信系统 |
| 软件环境: |
Struts+Spring+Hibernate+Ajax+EHCahce |
| 开发工具: |
eclipse3.2+ROSE |
| 项目描述: |
本系统是政府为解决中小企业融资难,由政府部门依法采集、保存、整理、提供企业的信用信息,满足从事放贷等信用活动的机构(担保公司或银行)在信用交易中对客户信用信息的需要。采集的内容包括企业各种纳税情况、环境评估、贷款还款等各种信用信息。 |
| 责任描述: |
在收集客户的需求后,使用ROSE进行用例分析和编写设计文档。本人负责中小企业管理、文档管理、权限模块设计与开发。在这个项目中我们使用Spring对业务bean及Struts中的Action进行管理,实现了业务层与控制层的解偶合。在业务层中使用了spring的容器管理事务功能,减少了大量重复并且烦琐的事务控制代码。通过Spring的依赖注入功能很方便地实现了注入依赖对象的需求。使用Spring的OpenSessionInViewFilter过滤器解决了在JSP访问实体bean中的Lazy属性时,因Hibernate的session关闭而导致的延迟加载例外问题。使用Spring的CharacterEncodingFilter过滤器解决了Struts1的中文乱码问题。项目中使用了EHCache作为Hibernate的二级缓存实现,对经常访问的数据进行缓存,如客户信息等。项目中使用了C3P0数据源技术减少连接对象数来提升应用性能,在团队开发中使用了SVN版本控制器。 |
|
| 2007/8--2007/9:建设银行招聘系统(http://job.ccb.com) |
| 软件环境: |
Struts+DBUtil+JavaBean |
| 开发工具: |
eclipse3.2 |
| 项目描述: |
实现中国建设银行在线招聘功能,用户可以管理简历、投递简历、查看面试信息等,建行管理员可以管理招聘信息、审核简历、面试通知等等。 |
| 责任描述: |
完成简历管理、简历投递等功能以及信息展示。考虑到性能的要求,使用DBUtil发送SQL语句直接操作数据库,采用JavaBean作为业务层Bean,在Struts的Action中调用JavaBean完成业务功能。 |
|
| 2007/6--2007/7:公司内部论坛系统 |
| 软件环境: |
Struts+Spring+Hibernate+Lucene+WebSerivce |
| 开发工具: |
eclipse3.2 |
| 项目描述: |
包含用户模块,版面模块,文章模块,权限模块,搜索模块,系统模块,缓存模块等。版面模块:采用二级的版面结构(或叫做分类和版面),可以控制(调整)分类或版面的显示顺序;文章模块:文章分为主题和回复。主题有多种类型,比如公告帖,置顶帖,精华帖,推荐帖,普通帖等等。一个主题中可以带有一个投票,称之为投票帖。投票有两种:单选投票和多选投票。一个用户只能对同一投票主题投票一次。文章(主题和回复)中可以带有附件。每个附件都可以有说明,用于说明这个附件文件的内容,因为不是所有的文件的名字都是有意义的。文章搜索:使用lucene技术,实现了类似百度的站内全文搜索。优点为查询速度快,查询条件多样,比如可有前缀查询,通配符查询,短语查询,模糊查询等等,十分灵活快速。在后台有会员管理:可以锁定捣乱的会员;有搜索管理:查询或更新或重建lucene索引库;有系统设置和配置文件管理:查看和修改系统参数。 |
| 责任描述: |
负责文章模块、搜索模块、内容管理的设计与开发。
文章模块:使用了FCKeditor可视化在线编辑器。文章中的附件存放到服务器的硬盘中,解决了文件名相同、危险文件类型、大文件、中文名附件下载乱码问题。
搜索模块:使用Compass+Lucene实现对站内文章的全文搜索,并使搜索结果中的关键字高亮显示,编写业务bean时反复使用Junit对业务方法进行单元测试。项目中大量使用了Factory(工厂模式)、Prototype(原型模式)、Singleton(单态模式)和Proxy等设计模式。
获取用户的IP地址,使用基于JAX-WS2.1规范的WebService技术从http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx查询IP所在国家、城市、所有者等信息。 |