资源描述
编号: 基于 java 信息实训开发 实训(论文)说明书题 目:基于 java 信息法院管理系统实训开发 院 (系): 应用科技学院 专 业: 计算机科学与技术 学生姓名: 学 号: 指导教师: 1 摘摘 要要 J2EE 是一种全新概念的企业级应用程序模型,和传统企业应用开发模型相比有不可比拟的优势。J2EE 体系结构提供中间层集成框架用来满足高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,J2EE 降低了开发多层应用的费用和复杂性,增强了安全机制,提高了性能。 本系统是基于轻量级 J2EE 的开发架构,采用 MVC 软件设计模式。我们选择轻量级框架 Spring,它使应用程序不依赖于任何容器,减少开发的复杂度,提高开发的效率。表示层采用开放源代码且较成熟的 Struts。持久层框架使用较为流行的 ORM 组件 Hibernate。 本系统利用 internet 解决档案的查询效率低,查询不方便,以及避免传统的法院档案管理的归档困难、档案容易损坏等问题。关键词 J2EE;MVC ;Struts;Hibernate;设计模式;设计模式2 目目 录录一、一、系统所用技术简介系统所用技术简介 .1(一)(一) Spring 介绍介绍.1(二)(二) Struts 介绍介绍.2二、二、需求分析说明需求分析说明 .3(一)(一) 开发背景开发背景.3(二)(二) 功能性需求分析功能性需求分析.3三、三、数据库分析与设计数据库分析与设计 .10(二)(二) 数据库逻辑设计数据库逻辑设计.10(三)(三) 数据库物理设计数据库物理设计.11四、系统设计与实现系统设计与实现 .12(一)(一) 系统结构系统结构.13(二)(二) 系统的构架设计系统的构架设计.14(四)系统持久层(四)系统持久层 DAODAO 的实现的实现.18(六)用户接口层(六)用户接口层.261 1、登录功能及权限验证登录功能及权限验证.262 2、档案管理及维护档案管理及维护.283 3、法医鉴定档案的管理法医鉴定档案的管理.334 4、当事人管理及维护当事人管理及维护.365 5、用户管理及维护用户管理及维护.37参考文献参考文献.391 基于轻量级基于轻量级 J2EEJ2EE 架构的法院档案架构的法院档案 管理系统的设计与实现管理系统的设计与实现一、一、 系统所用技术简介系统所用技术简介 本系统是基于 J2EE 开发平台,采用 MVC 软件设计模式,表现层框架采用开放源代码且较成熟的 Struts ,业务层组件采用开放源代码的轻量级容器 Spring,持久层框架采用较为流行的 Hibernate。Spring,Struts,Hibernate 三者之间的关系如图: 图 1:Struts,Spring,Hibernate 三者之间的关系(一)(一)Spring 介绍介绍 Spring 框架的核心思想可以用两个字来描述,那就是解耦。应用程序的各个部分之间(包括代码内部和代码与平台之间)尽量形成一种松耦合的结构,使得应用程序有更多的灵活性。应用内部的解耦主要通过一种2称为控制反转(IOC)的技术来实现。控制反转的基本思想就是本来由应用程序本身来主动控制的调用等逻辑转变成由外部配置文件来被动控制。通常我们用一个所谓的好莱坞原则(Dont call me. I will call you.)来比喻这种控制反转的关系。由于控制反转的概念相对比较广泛,很多应用服务器实际上也实现了不同程度的控制反转技术,只是这些应用服务器对应用程序的侵入性太强。因此 Martin Fowler 专门写了一篇文章讨论控制反转这个概念,并提出一个描述更为准确的概念,叫依赖注入(Dependency Injection)16。 Spring 框架中的各个部分都充分使用了这种依赖注入的技术实现,从而给应用以最大的灵活度。 Spring 框架另外一个比较重要的技术是它对于面向切面的编程(AOP)的支持。随着应用复杂度的逐渐上升和对应用灵活性要求的提高,IT 逻辑和业务逻辑尽量分离的呼声也越来越高。AOP 技术作为实现这种分离的一种比较好的途径而越来越受到大家的重视。Spring 提供的是一种动态 AOP 实现,也即通过代理模式动态地在目标对象的方法前后插入相应的处理代码。应用程序与底层应用服务器平台的解耦也可以借助 AOP技术来实现。Spring 内置的 AOP 支持是一种锦上添花的功能。它使得一些本来必须由容器支持的功能,比如事务控制可以脱离开容器运行,从而达到瘦身的目的。这也是为什么 Spring 框架常被人成为轻量级容器的一个原因。(二)(二)Struts 介绍介绍 Struts 框架是 Apache 组织的一个开放源代码的项目。为 Web 应用提供一个通用的 MVC 架构,提供了对开发 MVC 系统的底层支持.它使开发3人员把更多的时间放在如何解决实际问题上。Struts 框架由四个主要部分组成,模型、视图、控制器和 XML 文件。模型通常由 Java Bean 或 EJB组件实现,负责处理业务逻辑;视图包括一组 JSP 文件,这些文件主要由JSP 标签或客户化标签构成,它简化了 JSP 页面的编码工作;在 Struts 框架中控制器主要包括 Action Servlet 类和 Action 类,Action Servlet 是 Struts的核心部件,它接受用户的 Http 请求,根据配置信息将请求转发给适当的Action 对象,Action 类负责调用模型的方法,并帮助控制应用程序的流程;Struts 包括 Web.xml 和 Struts-config.xml 两个配置文件,其中 Web.xml 是Web 应用的发布描述文件,Struts-config.xml 是与 Struts 相关的特殊信息配的描述文件。 图 2 :STRUTS 实现的 MVC 框架二、二、 需求分析说明需求分析说明(一)(一)开发背景开发背景法院在其工作中日集月累产生了大量的档案资料,而且档案资料的数量还在不断的增加之中。在日常的工作里,原始手工管理模式给档案管理工作带来了极大的不便,人员劳动强度大,档案资料管理也困难。而且还有查询效率低,劳动强度大、归档困难、容易损坏等缺点。(二)(二)功能性需求分析功能性需求分析4该系统具有以下一些特征:1) 管理员和普通用户能进行登录2)能显示档案的信息,可进行档案的查询,增加和修改 3)能显示用户信息,可对用户信息进行添加和删除 4)能显示当事人信息,可对当事人进行添加和修改 业务模型和需求分析的目的是对系统进行评估,采集和分析系统的需求,理解系统要解决的问题,重点是充分考虑系统的实用性。结果可以用一个业务用例(Business Use Case)框图表达: 图 4:业务用例图模型中的活动者代表外部与系统交互的单元,包括管理员和普通用户。业务用例框图是对系统需求的描述,表达了系统的功能和所提供的服务,包括添加档案,修改档案,查询档案,添加用户,删除用户,查询当事人,修改用户信息。用例说明:用例说明: 表 1:登录用例5用例名登录前置条件进入系统主页成功状态根据登录角色进入相应界面失败状态返回到登录界面说明用户进行登录表 2:添加档案用例用例名添加档案前置条件管理员已登录成功状态提示档案添加成功失败状态返回到添加档案界面并提示操作不成功说明对录入信息的格式进行合法验证,保存添加档案 表 3:修改档案用例用例名修改档案前置条件管理员已登录成功状态提示修改成功并显示修改后的信息失败状态返回到修改界面并提示修改错误说明对修改的信息进行合法验证,更新档案信息 表 4:查询档案用例用例名查询档案前置条件管理员或普通用户已登录成功状态显示查询到的信息失败状态返回到查询界面并提示查询错误说明对录入查询的信息进行合法验证,显示查询到的档案信息 表 5:添加用户用例用例名添加用户前置条件管理员已登录成功状态显示添加用户成功失败状态返回到添加界面并提示添加错误说明完成普通用户的添加 表 6:删除用户用例用例名删除用户前置条件管理员已登录成功状态显示删除用户成功失败状态返回并提示删除错误说明完成对普通用户的删除 表 7:添加当事人用例6用例名添加当事人前置条件管理员已登录或进入添加档案界面成功状态显示添加成功失败状态返回到添加界面并显示添加错误说明对录入的信息进行合法验证,添加保存当事人信息 表 8:查询当事人用例用例名查询当事人前置条件用户已登录或进入显示档案界面成功状态显示当事人的详细信息失败状态返回到查询界面并显示查询错误说明对录入的查询信息进行合法验证,显示当事人信息 表 9:修改自己信息用例用例名修改自己信息前置条件用户已登录成功状态显示修改成功后的信息失败状态返回到修改界面并显示修改错误说明对录入的修改信息进行合法验证,更新修改当事人信息 顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互。7 图 5:管理员登录及档案管理序列图8 图 6:管理员对当事人管理序列图 图 7:普通用户的操作序列图状态图描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的时间做出反应的。状态图设计一般是在对操作序列的顺序图细化的基础上表达。9 图 8: 管理员维护档案的状态图 图 9 :管理员维护当事人信息状态图10 图 10:普通用户状态图三、三、 数据库分析与设计数据库分析与设计(一)数据库逻辑设计(一)数据库逻辑设计用户用户用户 ID 密码 用户名 角色当事人当事人当事人 ID,姓名性别,身份证出身年月国籍,民族政治面貌文化程度出身地,原籍户籍所在地现址,电话职业,身份特殊身份备注法医档案法医档案档案类型,归档类型归档号,保密级案卷号,目录号主办人,鉴定单位鉴定法医,归档日期年龄,性别当事人,鉴定目的鉴定结果备注档案档案档案 ID,档案类型归档类型,归档号保密级,案卷号目录号,案由当事人,审判长审判员 1,审判员 2 书记员,主办人收案日期,结案日期原审法院,保管日期 一审结果,二审结果再审结果,备注档案档案-当事人当事人当事人 ID档案 ID 11(二)(二) 数据库物理设计数据库物理设计 说明:空缺位置表示无要求,主键在约束栏注明。基本表:用户useruser字段类型长度约束ID文本32主键Password文本32Name 文本10唯一非空Role 文本10基本表:当事人peoplepeople字段类型长度约束ID文本32主键Pid文本32唯一非空Name 文本10非空sex文本4非空Birthday文本12非空Nation文本40非空Race文本10非空Politbg文本10Education文本10Birthplace文本50Bfplace文本50Nowplace文本50Liveplace文本50Tel文本20Occupation文本10Positon文本10Speposition文本10note文本100基本表:档案doucument字段类型长度约束ID文本32主键Filekind文本10非空Archkind文本10非空Archno文本20非空唯一Secretlevel文本6Fileno文本20非空唯一Dirno文本20非空唯一Cause文本400client文本200非空12Chiefjustice文本10非空Judge1文本10非空Judge2文本10非空Clerk文本10非空Sponsor文本10非空Closedate文本12Enddate文本12Formcourt文本20Firstjudge文本200Secjudge文本200Thirdjudge文本200Arhdate文本12Bgqx文本10Note文本100基本表:当事人_档案peopledocument字段类型长度约束peopleid文本32主键documentid文本32主键基本表:法医档案fydocument字段类型长度约束id文本32主键Filekind文本10非空Archkind文本10非空archno文本20非空唯一Fileno文本20非空唯一Dirno文本10非空唯一Purpose文本100Sponsor文本20Client文本20Corporation文本20Doctor文本20非空Result文本200Exandate文本12Archdate 文本12Age文本3Sex 文本2note文本200四、 系统设计与实现系统设计与实现13(一)(一)系统结构系统结构 图 11:系统结构 功能说明:(1)普通档案管理:可以根据档案的一个或多个字段来查询所需的档案。在添加档案信息的同时也可新打开一个添加当事人的页面添加当事人的信息。显示所有档案功能先显示部分档案信息,当需要查看其详细信息时再显示其详细信息,在档案的详细信息中有当事人的链接,可查看当事人详细信息。(2)法医档案管理:可以根据档案的一个或多个字段来查询所需的档案。在添加档案信息的同一页面添加被鉴定人的信息。 显示所有档案功能先显示部分档案信息,当需要查看其详细信息时再显示其详细信息。法医档案管理系统登录法医档案管理当事人管理查询所有档案显示当事人显示所有档案添加添加普通档案管理查询用户管理所有用户修改添加修改当事人信息14(3)用户管理:管理员可查看所有的用户,也可进行用户的添加和删除。(4)当事人管理: 普通用户可查看当事人的详细信息,但不能对其进行修改,管理员不但可查看还可以对其进行修改。(二)(二)系统的构架设计系统的构架设计 系统主要有如下 3 个包:1) 用户接口包(表示层)用户接口包在其他包的顶层次,为系统用户提供访问信息和服务。其主要包括 jsp 和 ActionForm 等文件。 系统所有 Action 类都继承 BaseAction 类,在 BaseAction 类中获得系统 Spring 所配置的业务层 bean 对象的实例。 用户登录及处理的 ACTIONFORM,ACTION 类图:15 图 12:用户登录及处理的 ACTIONFORM,ACTION 类图 档案的 ACTIONFORM,ACTION 类图:16 图 13:档案的 ACTIONFORM,ACTION 类图2) 业务逻辑包(业务层) 主要完成业务逻辑的处理工作,它既要调用持久层的方法来完 成数据的持久化和查询工作也要业务方法暴露给表示层,以便表示层的调用。 系统业务接口及其实现类图如下:17 图 14:系统业务接口及其实现类图183) 数据持久 DAO 包(持久层) 该包实现数据的持久化,也就是与数据库交互,实现数据的存取、修改等操作。Spring 的 HibernateDaoSupport 基类提供了访问与当前事务绑定的 Session 对象的函数。所有 DAO 类都继承 HibernateDaoSupport 这个基类。系统 DAO 封装了各对象域模型进行持久化操作的各种方法,系统DAO 接口及实现类图如下: 图 15:系统 DAO 接口及实现类图19(三)用户接口层(三)用户接口层 用户只能通过系统提供的用户接口来访问系统。1 1、 登录功能及权限验证登录功能及权限验证 用户登录的主要功能是接受用户所输入的密码和用户名及其角色,然后根据其角色跳转到不同的主页。 用户登录页面是系统的入口页面,其图如下: 用户登录功能的后台处理方法主要包括以下步骤:a.得到用户提交的用户名和密码及角色b.根据得到的信息进行查询c.如没有找到相应用户则返回登录界面,找到相应用户则根据角色跳转到相应主页面,并且保存当前用户角色到 session 中以便进行权限验证。 登录的 Action 处理方法的实现如下: User user=(UserService) getBean(UserService).logIn(name, password , role);if(user=null)/没找到相应的用户则跳到登录界面return (new ActionForward(mapping.getInput(); /获得当前对话的sessionHttpSession session=request.getSession();/保存用户名,角色到session中session.setAttribute(user, user);session.setAttribute(role, role);if(role.equalsIgnoreCase(manager) /跳转到管理员主界面 return (mapping.findForward(managerLogIn); /跳转到普通用户界面 return (mapping.findForward(commonLogIn);在进入每个 jsp 页面时都进行权限的验证,只有具有相应权限的用户20才能进入。为了更好的实现这功能,提高代码的重用性,我们采用自定义标签来实现此功能。其类如下:public final class ValidateSessionTag extends TagSupport private String role ; public int doEndTag() throws JspException boolean valid = false;HttpSession session = pageContext.getSession();/获得当前session if (session != null) & (getRole().equals(session.getAttribute(role) &(session.getAttribute(user) != null)/判断当前用户的角色 valid = true;if (valid) return (EVAL_PAGE);else try /当前用户不具有访问当前页面的权限,返回到登录页面pageContext.forward(login.jsp); catch (Exception e) throw new JspException(e.toString(); return (SKIP_PAGE); public int doStartTag() throws JspException return (SKIP_BODY); public String getRole() return (this.role); public void setRole(String role) this.role = role; 其标签的配置为: validateSession cn.fy.tag.ValidateSessionTag empty role true true 21 2 2、 档案管理及维护档案管理及维护当进入管理员主页面时,显示所有档案的主要信息,当需要查看其详细信息时,点击详细信息查看档案的详细信息,其 action 的实现为: Page page=new Page(); /把查询到的档案信息放入Page bean里page=(DocumentService) getBean(DocumentService).getDocument( from Document, page); /把获得的bean保存在request里request.setAttribute(p, page); /转到显示页面return (mapping.findForward(listDocument);档案信息的显示页面如图:点击详细信息,显示档案的详细信息页面如图: 图 18:显示档案的详细信息页面 显示档案详细信息的 action 为: String id=request.getParameter(id); /查询所需要的档案Document doc=(DocumentService) getBean(DocumentService).getDocumentById(id);request.setAttribute(document, doc);22/request.setAttribute(people, doc.getPeople(); /跳到显示档案详细信息的页面return (mapping.findForward(detail); 显示当事人详细信息的页面如图: 图19:显示当事人详细信息的页面 添加法院档案以及在同时添加当事人的信息,添加的当事人必须有唯一的身份证号,添加的档案的归档号,目录号,案卷号也必须唯一且不能为空,否则就出现异常。添加档案的页面如图:23 图 20:添加档案的页面 添加当事人的页面如图: 图 21:添加当事人的页面 当单击保存时,相应的 actionForm 先进行字段的合法性验证,当通过 actionForm 的合法性验证后,由 action 来检查是否存在相同的身份证号,如存在相同的则出现异常且报错,其 action 的实现为: People client=new People();client.setPid(clientForm.getPid();24client.setName(clientForm.getName(); . /判断当前添加的当事人身份证号是否已经存在 if(ClientService) getBean(ClientService).getClientByPid(client.getPid()!=null)errors.add(bad,new ActionMessage(identity.card.exist);saveErrors(request, errors);request.removeAttribute(mapping.getAttribute(); /当事人身份证号已经存在,返回添加当事人页面return (mapping.findForward(addClient); /当事人身份证号不存在,则添加到当事人队列中if(session.getAttribute(peopleList)!=null)ListpeopleList=(List)session.getAttribute(peopleList);peopleList.add(client);session.setAttribute(peopleList, peopleList);elseListpeopleList=new ArrayList();peopleList.add(client);session.setAttribute(peopleList, peopleList);errors.add(success,new ActionMessage(addClient.success);saveErrors(request, errors);request.removeAttribute(mapping.getAttribute();return (mapping.findForward(addClient);档案的查询可根据档案的一个或多个字段进行进行查询,其查询页面如图: 图 22:档案查询页面当用户单击查找按钮后,ActionForm 先对其查询的字段进行合法性检25验,只有通过 ActionForm 的合法性检验才转到 Action 里进行处理,相应的 Action 处理实现为:SearchForm f=(SearchForm)form; /根据提供的查询字段查询档案 Page page=new Page();page=(DocumentService) getBean(DocumentService).getDocument(f.getSql(), page);/HttpSession session=request.getSession();/session.setAttribute(p, page);request.setAttribute(p, page); /转到档案的显示页面return (mapping.findForward(listDocument);档案的修改页面如图: 图 23:档案的修改页面单击提交后也得进行合法性验证,只有验证后才进行更新,其修改更新的 Action 方法的实现为:String id=request.getParameter(id); /取出需要修改的档案对象Document doc=(DocumentService) getBean(DocumentService).getDocumentById(id);DocumentForm f=(DocumentForm)form;26 /修改档案信息doc.setFileKind(f.getFileKind(); ./更新档案信息(DocumentService) getBean(DocumentService).updateDocument(doc);errors.add(sucess,new ActionMessage(update.document.success);saveErrors(request, errors);return (mapping.findForward(document);3 3、 法医鉴定档案的管理法医鉴定档案的管理 先显示法医鉴定档案部分重要的信息,当需要查看其详细信息时再显示其详细信息,显示法医鉴定档案的详细信息的页面为: 显示法医鉴定档案的详细信息 Action 的方法为:String id=request.getParameter(id); /获得档案的详细信息FYDocument doc=(FYDocumentService) getBean(FYDocumentService).getDocById(id);/把档案对象保存在request对象里request.setAttribute(document, doc); /转到显示档案详细信息页面return (mapping.findForward(detail);法医鉴定档案的添加功能,在添加档案信息的同一页面添加被鉴定人的信息,其添加页面如图:27 图25:法医鉴定档案的添加页面 单击提交后,先进入相对应的 ActionForm 进行字段合法性验证,然后进入 Action 进行档案的添加,实现这个功能的 Action 方法为: FYDocument doc=new FYDocument();AddFYDocForm addForm=(AddFYDocForm)form;doc.setFileKind(addForm.getFileKind();doc.setArchKind(addForm.getArchKind(); . doc.setNote(addForm.getNote(); /保存档案(FYDocumentService) getBean(FYDocumentService).saveFYDoc(doc);errors.add(sucess,new ActionMessage(add.fayuan.document.success);saveErrors(request, errors); /转到档案添加成功页面return (mapping.findForward(fydocument); 法医鉴定档案的修改页面如图:28 图 26:法医鉴定档案的修改页面 提交后,由相对应的 ActionForm 进行修改后的字段合法性验证,然后进入 Action 进行档案的添加,实现这个功能的 Action 方法为: String id=request.getParameter(id); /获得需要修改的法医档案对 FYDocument doc=(FYDocumentService) getBean(FYDocumentService).getDocById(id);AddFYDocForm addForm=(AddFYDocForm)form; /重新设置新的档案信息doc.setFileKind(addForm.getFileKind(); . /更新档案信息(FYDocumentService) getBean(FYDocumentService).updateFYDocument(doc);errors.add(sucess,new ActionMessage(update.fayuan.document.success);saveErrors(request, errors); return (mapping.findForward(fydocument); /返回到更新成功页面29参考文献参考文献1孙卫琴.精通 Struts:基于 MVC 的 Java Web 设计与开发M.北京:电子工业出版社,20042孙卫琴.Tomcat 与 Java Web 开发技术详解M .北京:电子工业出版社,20043(美)Cbuck Cavaness 著.OReilly Taiwan 公司译.Jakarta Struts 编程M .北京:中国电力出版社,20054(美)Cay S.Horstmann 著.程峰译.Java 2 核心技术M .北京:机械工业出版社,20035陈天河等.Hibernate 项目开发宝典M .北京:电子工业出版社,2006 6 (美)Rob Harrop ,Jan Machacek 著Redsaga 译. Pro SpringM .北京:电子工业出版 社,2006 7 崔广林,王化雨,白运会著基于 UML 的面向服务体系结构建模方法J .信息技术与信息化,2007,1 8谢天保,李薇.基于 WEB 模式的管理信息系统的设计J.湖南大学报,2002 ,2 9李刚. 基于 UML 和组件的软件开发技术研究及应用A.西安高技术研究所硕士学位论文,200210张永等.基于 Struts 架构的教学辅助系统的设计与实现J.微计算机应用,2007,111吴力文,寇毅.基于 MVC 设计模式的 Struts 框架的应用方法J.计算机应用,2003,2312黄素萍.基于 Struts 和 Hibernate 的网络教学平台的实现J.微型电脑应用,2007,413杨兴春,董文等.基于轻量级 J2EE 架构的高校教务管理系统的设计与实现J.计算机系统应用,2007,314席晓峰,吕良双.使用 J2EE 框架技术构建可重用的 web 应用J.计算机工程应用, 2005,2915Mohamed Fayad,DouglasC.Object-Oriented application frameworks J. Communications of the ACM,1997,4016 martinfowler.Inversion of Control Containers and the Dependency Injection pattern .zhttp:/
展开阅读全文