已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
局门户网站内外网信息互通公开自主化项目开发文档(2011年5月4日星期三)1. 系统目标概述2. 系统目标概述实现系统内部网公开到外网信息的信息组织、导出和外网展示。目前这部分信息包括;。通过该项目的开发,促进技术组对内网系统数据的掌握和熟悉,增强技术组的自主建设能力,为今后的政务信息共享和外网审批奠定一定的基础。3. 文档定位杂记,记录项目开展的全过程。4. 需求概要描述内容包括两个部分:1、内网数据转到外网;2、外网数据显示。5. 用例图系统用户目前仅有一类:公众。用户浏览外网发布的结果。5.1 公众(1) 浏览外网提供的有关发布结果。6. 功能分解针对需求进行分解6.1 内网数据转到外网6.2 外网数据显示7. 数据库设计测试开发采用SQLSERVER2000直接用中转服务器的数据。8. 系统架构springhibernate9. 迭代开发与功能细化9.1 外网数据显示9.1.1 数据库设计暂时用下图替代。 表PC_Banjie该表用来保存两周内内网办理完毕的规划业务发布信息,这里暂定义为规划业务。规划业务信息主要包括项目名称、报建单位、业务类型、受理日期、办结日期。序号字段名称描述类型约束1.pcId自动序列主键2.项目名称Nvarchar()3.报建单位Nvarchar()4.业务类型Nvarchar()5.受理日期datetime6.办结日期datetime 表PC_LandLicense该表用来保存内网办公的用地许可证信息,这里定义为用地许可(LandLicense)。用地许可信息主要包括项目名称、报建单位、业务类型、受理日期、办结日期。序号字段名称描述类型约束1.llId自动序列主键2.项目名称Nvarchar()3.建设单位Nvarchar()4.建设地址Nvarchar()5.用地规模float6.编号Nvarchar()7.核发日期datetimeSQL脚本if exists (select * from dbo.sysobjects where id = object_id(Ndbo.PC_LandLicense) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop table dbo.PC_LandLicenseGOCREATE TABLE dbo.PC_LandLicense (llId int IDENTITY (1, 1) NOT NULL ,项目名称 nvarchar (80) COLLATE Chinese_PRC_CI_AS NULL ,建设单位 nvarchar (80) COLLATE Chinese_PRC_CI_AS NULL ,建设地址 nvarchar (80) COLLATE Chinese_PRC_CI_AS NULL ,用地面积 float NULL ,编号 nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,核发日期 datetime NULL ) ON PRIMARYGO 表PC_ConstructionLicense该表用来保存内网办公的工程许可证信息,这里定义为工程许可(ConstructionLicense)。用地许可信息主要包括项目名称、报建单位、业务类型、受理日期、办结日期。序号字段名称描述类型约束8.clId自动序列主键9.项目名称Nvarchar()10.建设单位Nvarchar()11.建设地址Nvarchar()12.建设规模Nvarchar()13.编号Nvarchar()14.核发日期datetimeif exists (select * from dbo.sysobjects where id = object_id(Ndbo.PC_ConsturctionLicense) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop table dbo.PC_ConsturctionLicenseGOCREATE TABLE dbo.PC_ConsturctionLicense (clId int IDENTITY (1, 1) NOT NULL ,项目名称 nvarchar (80) COLLATE Chinese_PRC_CI_AS NULL ,建设单位 nvarchar (80) COLLATE Chinese_PRC_CI_AS NULL ,建设地址 nvarchar (80) COLLATE Chinese_PRC_CI_AS NULL ,建设规模 float NULL ,编号 nvarchar (80) COLLATE Chinese_PRC_CI_AS NULL ,核发日期 datetime NULL ) ON PRIMARYGO9.1.2 采用springMVChibernate构建步骤 取件通告的外网显示实现1. 先确定内容(1) 制作引导页(测试用)completeNoticeGo.jsp(2) 配置DispatcherServlet in web.xml(3) 配置dispatcher-servlet.xml的内容(4) 取件通告的客户端显示页面completeNoticeView.jsp(5) 创建domain类PlanningCase.java(6) 创建domain类hibernate定义文件PlanningCase.hbm.xml(7) 创建DAO类PlanningCaseDaoIplanningCaseDao(8) 创建Controller类 PlanningCaseController2. 每个部分的源码(1) 引导页只是一个超级链接,确定指向Controller类的映射(2) 配置web.xml。主要确定两个内容:u SpringMVC的dispatchservletu 编码设置encodingFilter(3) 配置dispatcher-servlet.xml。具体确定的内容:u viewResolver视图解释u sqlserver2000数据源mons.dbcp.BasicDataSourceu spring集成hibernate的sessionfactoryu DAObeanu Controllerbean这里用SimpleUrlHandlerMappingu localeResolver/com/nway/pse/domain/PlanningCase.hbm.xml hibernate.dialect=org.hibernate.dialect.SQLServerDialect (4) 取件通告的客户端显示页面completeNoticeView.jsp。借用的别人的,用到jstl。 0NameGenderCountryAbout Youtr class=even$planningC$planningCase.applicant$planningCase.type$planningCase.inDate(5) 创建domain类PlanningCase.java数据对象。(6) 创建domain类hibernate定义文件PlanningCase.hbm.xml (7) 创建DAO类PlanningCaseDaoIplanningCaseDao数据访问对象,主要就一个方法:public List listPlanningCase() return hibernateTemplate.find(from PlanningCase);(8) 创建Controller类 PlanningCaseControllerpublic class PlanningCaseController implements Controller private PlanningCaseDao planningCaseDao;public void setPlanningCaseDao(PlanningCaseDao planningCaseDao) this.planningCaseDao = planningCaseDao;public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException ModelMap modelMap = new ModelMap();modelMap.addAttribute(planningCaseList, planningCaseDao.listPlanningCase();modelMap.addAttribute(planningCase, new PlanningCase();return new ModelAndView(completeNoticeView, modelMap);3. 备注、需精细的地方等(1) 异常处理未作(2) 数据库字段可为空未作(3) 风格2011-5-13 插入css,我真服气了,原来插入css文件取相对根目录用是“./”而不是“./”(4) 日期显示格式未优化(5) 重构,象eclipse propertyview一样改造 用地证的外网显示实现1. 步骤:1. 制作引导页(测试用)completeNoticeGo.jsp,加内容2. 配置DispatcherServlet in web.xml,不需要配置3. 配置dispatcher-servlet.xml的内容。4. 取件通告的客户端显示页面landLicenseView.jsp。5. 创建domain类LandLicense.java。6. 创建domain类hibernate定义文件LandLicense.hbm.xml。7. 创建DAO类LandLicenseDaoIlandLicenseDao。8. 创建Controller类 LandLicenseController。 工程证的外网显示实现1. 步骤:1. 制作引导页(测试用)completeNoticeGo.jsp,加内容2. 配置DispatcherServlet in web.xml,不需要配置3. 配置dispatcher-servlet.xml的内容。4. 取件通告的客户端显示页面constructionLicenseView.jsp。5. 创建domain类ConstructionLicense.java。6. 创建domain类hibernate定义文件ConstructionLicense.hbm.xml。7. 创建DAO类ConstructionLicenseDaolConstructionLicenseDao。8. 创建Controller类 ConsturctionLicenseController。9.2 做一次代码重构,将DOMAIN、controller、DAO类包合理化一次包名包含的类说明Com.nway.pcv.daoCom.nway.pcv.domainCom.nway.pcv.web9.3 设计tableview网页 (在这步对已完成的代码进行备份)首先基于非定制情况进行设计,然后进行抽象化。采用divcss的结构。先分块,先不定制CSS。9.4 采用MultiActionController构建基于结构合理化的考虑,只做了试用,没做别的。不过忘记当时怎么试的了,文档一定要跟上。1、2、3、listAlltestELdestinedPage9.5 总结目前未完成的工作2011-5-319.6 进一步重构的有关描述9.6.1 现在设计中存在的问题1、 IviewerObject目前的设计不是很合理,用private PlanningCase planningCase;private String propertyNames;private String propertyDisplayValues; private Object propertyValues;总觉得不得劲,还是换成map比较合理。2、 domain对象适配到IviewerObject是每个一个适配,没有必要,因为IviewerObject是采用的JAVA的反射获取propertyvalue对,所以没必要每一个都适配。3、 刚刚发现extension object模式应用的不够彻底。目前用的是IadapterFactory、IadapterManager,客户端调用直接采用(IViewerObject)adapterManager.getAdapter(iter.next(), IViewerObject.class)实际上应该是object.getAdapter(adapterType),就是说目前没用用Iadaptable4、 向客户端直接输出contentProvider,,其包含viewerdescriptor,lis,不是很好,有点僵硬。考虑改为由contentprovider提供向客户端输出两个属性descriptor和list,比较直接简单9.6.2 查询的实现基本思路: QueryController9.6.3 对应的改正1、 IvierwerObject、etension object对应改造 增加AbstractAdpatableObject-Iadaptable 为domain类增加标识接口IhibernateDomainObject,对目前的应用来讲,是为了让adaptfactory找到适配对象 Domain 类均继承AbstractAdpatableObject IviewerObject 暂只提供一个方法,Map getSourceDomain() 新建HibernateDomainObjectToViewerObjectAdapter对象 修改ViewerObjectAdapterFactory2、 339.6.4 异常处理的填加异常处理不是项目的重点,粗矿的应用即可满足要求,9.6.5 随着按照原有构想基本功能的实现,暴露出在性能和设计上的缺陷 采用session存储LIST对服务器的性能是一个挑战,而且在controller类的应用上缺乏合理性,目前的PageChangeController/SortController/QueryController由于都是基于session list的操作,和AbstractViewerController以及AccessController缺少一致性,因此考虑所有基于VIERERPAGE的Controller都应一致,这样所有的结果的获得都基于SQL,性能方面也有提高。 Adapt 体系需要简化,由于整个设计是基于spring的,基于配置文件,没必要采用动态注册机制,虽然这样原有的面向接口设计有所打折,但还是起到灵活性。因此需要增加一个工具类()用于获取从DispatchServlet初始化的bean,其实主要是要adapterManager。 IVierwerContentProvider/IViewerObject/IViewerPageDescription的设计感觉有些功能不清,说不好在哪里。但:1、IViewerPageDescription需要修改,改成基于属性对Map的设计,目前有些僵化和繁琐;2、9.6.6 编辑部分的实现编辑功能包括新增、修改、删除。涉及的对象包括: OpenEditViewerController。功能:打开编辑IviewerObject的对话框(editViewer.jsp)。参数:editType -add modify deletesourceDomainClassName-输出: editViewer.jsp。功能:编辑对话框参数:dataObject String一个viewerObject的显示输出viewerPageDescriptor-IviewerPageDescriptor输出: ModifyExecuteController。功能:获取IViewerObject的值,执行数据库操作。参数:9.6.7 完成通用输入检查的实现搁置,10. 编辑功能的实现需求:新建具体POJO对象(约束:只具有简单属性,比如不包含blob),编辑、删除。11. 设计字典序号中文英文备注1.行政区划Administrative division2.行政许可administrative license3.规划管理Planning management4.许可证License5.6.12. 伎俩12.1 解决我的mysqlserver2000中文乱码nvarchar表示以Unicode格式存储可变长度的数据,所以能显示中文,而varchar是用非unicode存储数据,所以乱码。12.2 Int(4)4,表示4个字节,-23123112.3 Jstl遍历map,获取制定key的值$item.value12.4 Sping加载多个配置文件在web.xml配置,应用服务去加载 app org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/applicationContext*.xml,/WEB-INF/user_spring*.xml 1 12.5 配置文件bug解决:问题:Caused by: org.xml.sax.SAXParseException: The content of element type value must match null.PlanningCasecom.nway.webtableviewer.domainfactory.ViewerObjectAdapterFactoryLandLicensecom.nway.webviewer.core.Acom.nway.webviewer.core.B12.6 Hibernate元数据使用12.7 Mysql执行查询报一个异常的解决异常提示:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ? as ?7_0_, this_.? as ?7_0_, this_.? as ?7_0_, this_.? as ? at line 1问题原因与解决办法:Mysql 编码设置问题,在 my.ini中填加12.8 Criteria几次list之后,程序就四了应该是session或connection占满的问题,报的异常是java.lang.NullPointerEmons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:788)。的确是占满的问题,可是是由于源码造成的。原来是List result = dCriteria.getExecutableCriteria(getSession().list();releaseSession(getSession();代码getSession()的链接应该是从连接池中取出来的,而不一定是当前用的链接,故出错。释放也没什么用。解决方法:网上找的。Session session=getSession();List result = dCriteria.getExecutableCriteria(session).list();releaseSession(session);12.9 DetachedCriteria&Criteria,addOrder引发的问题本来是在session中放DetachedCriteria,但是碰到addOrder,add(Critiera),由于表象上的不能remove,实现不了持续的DetachedCriteria或criteria变化,程序会挂掉。网上找了一个老外的答复,觉得有一定道理。本来想把他的原文放上可是网页关掉了,不费劲去找了,大体意思是“criteria原有设计提倡的是一次构建,一次查询,应该通过另外的方法持久criteria的创建”。我个人觉得有道理,所以就在session中放置一个Map保存criteria的创建参数,有DAO层初始化criteria,好在实现webviewer的需求中对criteria的构建要求相对简单。public List executeDescriptedDetachedCriteria(Map detchedCriteriaDescriptor) Session session = getSession();DetachedCriteria dCriteria = createDetachedCriteriaByDescriptor(detchedCriteriaDescriptor);Criteria criteria = dCriteria.getExecutableCriteria(session);if (detchedCriteriaDescriptor.get(ICriteriaPropertyName.FIRSTRESULT) != null) int first = (Integer) detchedCriteriaDescriptor.get(ICriteriaPropertyName.FIRSTRESULT);criteria.setFirstResult(first);if (detchedCriteriaDescriptor.get(ICriteriaPropertyName.MAXRESULTS) != null) int max = (Integer) detchedCriteriaDescriptor.get(ICriteriaPropertyName.MAXRESULTS);criteria.setMaxResults(max);List result = criteria.list();releaseSession(session);return result;12.10 动态为SimpleFormController赋属性commandClass,propertyRegistars由于编辑是针对不同Hibernate pojo,所以不会象一般绑定事先在配置文件中为controller定义这些属性,而我又想利用spring提供的绑定与form控制,所以就采用重载handleRequestInternal的方式来解决。这也是在网上笼络的,不过没有找到针对我问题的解决,不知道是不是我的命题有问题(只有坚持下去,要是有个大牛指引多好啊!)。12.11 解决日期绑定的问题命题:不设定日期propertyeditor时basecommandcontroller在绑定时errors不为空。解决1:重载 protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception DateFormat fmt = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss); CustomDateEditor dateEditor = new CustomDateEditor(fmt, true); binder.registerCustomEditor(Date.class, dateEditor); super.initBinder(request, binder); 解决2:个人对1的方式总觉得介入性太强,因为本身还需要动态为commandClass赋值,而且感觉在handleRequestInternal重载是比较合适的,如果再重载initBinder,感觉不合适。希望通过propertyRegistars的赋值来解决,为此看源代码,结果还是自己没办的了,怪自己脑子没转过。1、创建CustomPropertyEditorRegistrar;2、在重载的handleRequestInternal中加方法modifyPropertyEditorRegistrarspublic class CustomPropertyEditorRegistrar implements PropertyEditorRegistrar private Map dataFormats;/private final String DEFAULTDATEFORMAT = yyyy-MM-dd HH:mm:ss;public Map getDataFormats() return dataFormats;public void setDataFormats(Map dataFormats) this.dataFormats = dataFormats;public CustomPropertyEditorRegistrar() this.dataFormats = new HashMap();public CustomPropertyEditorRegistrar(Map dataFormats) this.dataFormats = dataFormats;Overridepublic void registerCustomEditors(PropertyEditorRegistry
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民事法律文书书写规范讲解
- 企业内外部沟通联络单模板信息准确传递
- 骨科康复疗法介绍及适用指南
- 基于支持向量机的癌症精准诊断技术与应用研究
- 信息完备透明公开承诺书9篇
- 公司产品质量安全承诺函7篇范文
- 秋日思绪写景类抒情作文(5篇)
- 多场景下的销售流程标准化模板(从客户接洽到成交)
- 初一数学期中考试模拟卷分析
- 高中英语语法提升练习题
- 2025年甘肃省金昌市市直事业单位选调22人笔试考试备考试题及答案解析
- 加油站安全生产信息管理制度
- 国家二级MSOffice高级应用机试(操作题)模拟试卷3(共156题)
- 华为ICT大赛中国区(实践赛)-昇腾AI赛道往年考试真题(附答案)
- 工商银行讨论面试题目及答案
- 2025中铁信息工程集团沈阳分公司招聘笔试历年常考点试题专练附带答案详解2套试卷
- 深圳市建设报建流程及资料准备指引
- 房颤合并冠心病的抗凝指南2025
- 2025年农商银行面试题目及答案
- 8.2 敬畏生命(课件) 2025-2026学年道德与法治 七年级上册
- 合伙代理酒水合同范本
评论
0/150
提交评论