大学生信息管理系统的设计与实现工程硕士学位80243444.doc

上传人:本田雅阁 文档编号:2059220 上传时间:2019-02-09 格式:DOC 页数:74 大小:1.28MB
返回 下载 相关 举报
大学生信息管理系统的设计与实现工程硕士学位80243444.doc_第1页
第1页 / 共74页
大学生信息管理系统的设计与实现工程硕士学位80243444.doc_第2页
第2页 / 共74页
大学生信息管理系统的设计与实现工程硕士学位80243444.doc_第3页
第3页 / 共74页
亲,该文档总共74页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《大学生信息管理系统的设计与实现工程硕士学位80243444.doc》由会员分享,可在线阅读,更多相关《大学生信息管理系统的设计与实现工程硕士学位80243444.doc(74页珍藏版)》请在三一文库上搜索。

1、De 电 子 科 技 大 学 UNIVERSITY OF ELECTRONIC SCIENCE AND TECHNOLOGY OF CHINA 工程硕士学位论文 ENGINEERING MASTER DISSERTATION 论 文 题 目 大学生信息管理系统的设计与实现 - 2 - 学 位 论 文 StrutsStruts 框架在大学生信息管理系统中的应用框架在大学生信息管理系统中的应用 指导教师姓名 教 授 成 都 申请专业学位级别 硕士 专业学位类别 工程硕士 工程领域名称 软 件 工 程 提交论文日期 论文答辩日期 学位授予单位和日期 电 子 科 技 大 学 答辩委员会主席 评阅人 2

2、011 年 月 日 注 1:注明国际十进分类法 UDC的类号 独 创 性 声 明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作 及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地方 外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为 获得电子科技大学或其它教育机构的学位或证书而使用过的材料。与 我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的 说明并表示谢意。 签名: 日期: 年 月 日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘, 允许论文被查阅和借阅

3、。本人授权电子科技大学可以将学位论文的全 部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描 等复制手段保存、汇编学位论文。 (保密的学位论文在解密后应遵守此规定) 签名: 导师签名: 日期: 年 月 日 摘要 2 摘摘 要要 随着 Internet 技术的迅速发展及 Web 应用的范围越来越广。在今天的 Web 应用系统 中,存在着诸多的不足之处,比如维护的工作比较繁琐,可重用的程度较低1,应变能力 比较薄弱等,这些问题都迫切需要改进与完善。但是随着实践中使用,Web 被人们所看重并 广泛使用。随着 Web 的使用加剧,对应用中的各种那个需求是越来越复杂,也是越来越高了, 同时对开

4、发上也提出周期短的要求。目前,对 Web 的应用不但要求提高了,就是系统的扩展 性、稳定性以及可维护性也提出更高的目标。在开发 Web 应用程序的时候,以提高开发效率, 考虑到应用系统的安全性,灵活性和实用性的过程中,需要采用一个良好的设计环境,用一 个比较好的系统框架来解决这一常见的问题。也只有解决了常见的问题,才能给维护该设计 能够正常使用。现在,随着中国高等教育招生规模的日益扩大,大学生的信息管理的信息数 据是日渐剧增,且如果还按照传统的人工管理,不但处理不了如此庞大的数据,就是能够处 理也是经常出现各种各样的错误。在这样的情形之下,迫切需要开发出一种管理学生信息的 管理系统。 因此,基

5、于网络的大学生信息管理系统己经适应高等教育规模,成为了发展先进的关键 人员的跨世纪工程,而且还是顺利发展高等教育的基本条件。同时为学生管理建立相应的信 息管理系统,必将促进高等教育的发展。同时采用基于 Web 的信息管理系统,成为了研究高 等教育发展的跨世纪工程,也是现在高校扩大招生规模的必备基础条件,因为只有这样才能 够应对庞大的信息数据。从实际情况可以看出来,学生信息管理系统融合管理、信息科学与 技术一体的系统,是现代通信技术和计算机技术为一体先进的管理手段,也是一门实用性比 较强是技术。近年来,随着信息技术、计算机技术及管理技术的进展。对于高校学生信息管 理系统的发展,从理论上讲,已经取

6、得了很大的改善和发展,其应用也是越来越广泛,成为 了高校每个部门使用的管理体制。并对大学生的实时信息跟踪,高校学生的信息整合,以及 信息共享提供了保障,同时也提高了高校学生信息管理上的便利,促进管理效率。因此,在 导师的指引下做了如下工作: (1)需求的分析 所谓的需求分析主要是根据用户要求开发软件,并且要评估项目的代价与软件的风险, 让整个开发计划得以实现。在这个过程之中,用户占据了主要的地位,开发人员要根据用户 摘要 III 的要求进行数据分析,通过数据整理、分析与验证等用户需要的工程。也就是开发软件中的 该软件开发出来之后,究竟要解决一个什么问题。笔者在构思这个文章之前,就深入到学校 中

7、进行实地了解,熟知大中专学校对学生信息管理的复杂与困难。而笔者又在软件工程系统 中学习,所以才产生了做一个大学生信息管理系统的毕业设计的想法。在广泛听取了学校一 线管理教师的需要与需求,以及其他的一些使用者的意见,并且根据如今的大学生管理工作 作出了该开发系统的需求分析。 (2)该系统的设计和实现 经过对开发该系统的需求分析之后,笔者头脑中对大学生信息管理系统已经有一个大概 的轮廓。紧接着再对这个系统进行了全面的规划和设计,并做出了系统主框架,才着手对信 息管理系统进行最后的设计。对于一个可行高效的系统来说,统一的规划设计是非常重要的。 如果没有规划设计,设计出来的系统可能能够完成相应的功能并

8、在实践中使用,但是后期的 维修费用相当昂贵且测试也比较困难。对于一个开发设计来说,必须具备直接实现、易于维 护以及易懂与可靠,也只有具备这个特征的开发系统才具有市场价值。 本文就是依据目前中国大学生的管理制度作为开发的背景,将 J2EE 架构使用到高校学 生信息管理系统中去。并且对 MVC 模式的设计思想进行深入的分析,了解基于 MVC 的 Web 应 用程序的发展优势和劣势。研究 Struts 框架基于 MVC 模型的工作原理和实施机制;发展注重 实际应用程序的 StrutsWeb 应用程序框架的过程。在发展过程中,通过应用 MVC 设计模式的 实现逻辑和业务逻辑的发展,体现出更大的灵活性和

9、更好的管理系统维护的分离。经过实践 证明,基于 MVC 设计模式和 Struts 框架不但可以有效地解决传统 Web 应用程序开发中存在 的问题,还可以采用分层和模块化设计,使得系统流程清晰,易于扩展和维护。 关键词:J2EE 模式 MVC Struts 信息管理系统 ABSTRACT ABSTRACT I ABSTRACT With dramatic development of Internet technology, Web applications have drawn wider attention than ever before. Nevertheless, low mainta

10、inability and reusability, and inflexibility are very common phenomena in Web applications. Consequently, hierarchical designing, the framework of each sub-tier, and selection of development technology become more and more important with complexity of requirement analysis. Constraints of R import or

11、g.apache.struts.action.*; import org.apache.struts.validator.*; import com.lixin.graduate.model.*; public class CourseForm extends ActionForm private int courseid = 0; private String coursename=“; /以上定义了这个 Bean 类的五个私有字段,与课程表的五个字段对应。 public Int getCourseid() return courseid; public String getCoursena

12、me()return coursename; /定义了五个私有字段的公有 Get 方法 public void setCourseid(Int courseid) this.courseid= courseid; /以上定义了五个私有字段的公有 Set 方法 成都电子科技大学学位论文 40 this.courseid=0; /以上定义了 reset 方法,它用于把属性值重新设置为默认值。 public ActionErrors validate() ActionErrors errors=new ActionErrors(); if(courseid=0)|(courseid=null)/课程

13、编号不能为空或者为0 errors.add(“courseid“ new ActionMessage(“course.no.courseid.error“); return errors; /以上定义了 validate 方法,用于表单验证信息 运行的时候,控制器接收到了传送过来的请求,就会对这个请求进行判断,经过搜索发现这 个实例不存在的时候,控制器就会自己创建出一个新的实用实例。 ActionForm 实例的生命周期如图5.14所示。 图 5.14 ActionForm 的生命周期 5.3 设计与实现模型组件 在整个框架之中,模型应该算是比较重要的一部分了,模型之中一定要包含业务规则与 第

14、五章 系统测试 41 业务的实体两个部分,主要是为了负责去访问与更新那些持久化的数据。开发者是开发系统 的时候,就要将开发中涉及到的一切模型组件放在系统之中同一个位置。 从分层框架的结构之中可以看出,处于最上层的视图与控制器都必须依赖处于下层的模型才 能够实现。STRUTS 框架中的应用各个层次之间也存在一些依赖关系,其依赖关系如图5.15 所示。 图 5.15 Struts 应用的各个层次之间的依赖关系 事实上,STRUTS 框架根本就没有为创建模型的组件以及设计提供现成的模型,必须要 开发者自己构建才行。但是 STRUTS 的兼容性比较好,它能够运行开发者采用其他的模型框 架,进来处理 W

15、EB 的应用28。比如 JDO(JAVA DATA OBJECT) 、EJB、JAVABEAN 与 ORM(OBJECT-RELATION MAPPING) 。 本文开发的系统中采用的模型就是由 JAVABEAN 来实现的。也是由 JAVABEAN 来实现系统 的业务规则与业务实体。下面以课程信息管理模块来讲述模型组件的构建过程。 课程管理功能实现了对课程的管理,是大学生信息管理系统的一个基础数据管理模块。它包 括对课程表的添加、维护和查询等操作。数据表包括以下字段:课程号、课程名称、课程类 型、课程学时、课程学分。 模型 COURSE.JAVA 类,定义包名为 COM.LIXIN.GRADU

16、TAE.MODEL,主要是对表 COURSE 的封装,实现了对于表中字段的 GET 和 SET 方法。 其中系统的业务层采用了 DATAACCESSOBJECT 的设计模式,并且通过封装了系统业务逻 辑,还针对系统之中出现的不同操作来实现相对应的业务逻辑,达到开发的目的。 COURSE.JAVA 的功能相对比较强大,它能够实现开发系统中所有业务逻辑实现,就因为去功 能的强大而被广泛使用。 其实现的方法很多,本文就阐释一下这种方法: list():从系统表中取出所有记录; 成都电子科技大学学位论文 42 list(int offset,int limit):从课程表中按照参数 offset 和

17、limit 来取出数据; insert(Course course):实现了课程增加的操作; update(Course course):实现了课程更新的操作; delete(Course course):实现了针对课程表中记录的删除操作; retrieve(String str):实现了从课程表中查询记录的功能。 在具体的操作中,根据不同的要求来调用不同的方法。我们以 list()方法为例来讲述模型 的构建过程。 以下是 List list()方法的实现代码: public List list() throws SQLException String objKeys = “Course“,

18、“list“; String objKey = CacheManager.createKey(objKeys); ArrayList list = (ArrayList) DAOCacheManager.getCache(objKey); if (list != null) return list; list = new ArrayList(); Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try conn = ds.getConnection();/建立数据库连接 String sq

19、l = “SELECT * FROM course“;/查询数据库 sql 语句 pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); while(rs.next() Course course = new course();/建立 Course 类的实例对象 populate(course, rs); list.add(course); /将 Course 实例对象添加到集合变量中 第五章 系统测试 43 close(rs); close(pstmt); catch (SQLException e) /若查询出错,执行以

20、下语句 close(rs); close(pstmt); rollback(conn); e.printStackTrace(); finally close(conn); /关闭数据库的连接 DAOCacheManager.putCache(list, objKey, 1); return list; /返回集合对象 上面的 LIST LIST()方法通过访问数据库将所有保存在课程表中的信息读入到动态集合 变量 LIST 中,以便 ACTION 组件 COURSEACTION.JAVA 读取,将检索到的结果显示给用户。 从上面的程序运行情况可以看出来,在 STRUTS 框架之中所采用了其他模

21、型组件,展现出了 这种方式的优势。同时这种模型还将业务逻辑实现与应用和其他的一些组件部分分离开来, 这样就能够提高整个模型应用具备了可重用性、灵活性以及可扩张性。 5.4 控制器的设计和实现 开发系统中,负责接受客户的请求和更新模型由 STRUTS 的控制器组件所作用, STRUTS 框架的控制器组件主要包括以下几个部分: REQUESTPROCESSOR 组件:这个组件主要充分的处理功能,这样就可以对每一个子应用 模块发出的请求进行处理。 ACTIONSERVLET 组件:充当 STRUTS 框架的中央控制器。 ACTION 组件:这个组件主要是处理具体的业务,处理众多的项目中的具体一项业务

22、。 STRUTS 框架所采用的控制器组件,主要是对用户发送来的请求进行预处理,其功能主要体 现在如下的两个方面: 其一,控制器所扮演的角色比较特殊,它主要是在模型与用户输送的数据之间提供一些 成都电子科技大学学位论文 44 有针对用户的具体请求,控制器都必须要承担重要的任务;在运行的时候如何这些通用的功 能发生变更的时候,根本没有必要去修改整个控制器中的应用,只是对出现变更的控制器组 件局部进行一些修改就行了。 其二,控制器并不是一味的接受请求,还会根据一些标注对用户的请求进行甄别并过滤, 这样就可以提升到每一个组件具备的相互对立性。处理结果出来之后,控制器的组件还会比 较合适的视图组件重新返

23、回到用户,这样就能够减少视图组件之间的相对独立性29。 将哪种视图组件返回到用户由控制器组件经过处理之后再决定,这样视图组件之间直接的与 错综复杂的连接关系就可以减少,提高了整个系统的灵活性与可维护性。 STRUTS 框架控制器组件功能,多是以下一些任务: (1)接收用户的请求; (2)处理用户的请求,并根据用户的请求将比较合适模型组件从组件中去调用,让其执行 出相应业务逻辑,实现开发的目标。 (3)用户的请求处理完毕之后,控制器组件就要从中获取业务逻辑结果,并返回到用户。 (4)控制器组件必须要根据实际的状态,返给用户合适的视图组件,等待用户的下一步指 示。 5.4.1创建 ActionSe

24、rvlet 类 所有的用户请求必须要先经过 ACTIONSERVLET 的处理,接着再经过 ACTIONSERVLET 将用 户的请求转给其他的控制组件。在运行之中,STRUTS 框架只能同意一个 ACTIONSERVLET 类 中使用一个相应的应用配置。在整个应用生命的周期之中,只能够创建出 ACTIONSERVLET 的 实例,就是这个 ACTIONSERVLET 的实例就能够同时对多个用户发出的请求作出响应。 SERVLET 容器启动的时候,或者的用户首次发出请求 ACTIONSERVLET 的时候,必须都去 加载 ACTIONSERVLET 类。只要出现了上面的两种情况的时候,SERV

25、LET 容器就会主动的去加 载 ACTIONSERVLET,并让它立刻去执行所包含的 INIT()方法,这样运行就能够确保当 ACTIONSERVLET 在处理用户的请求时会主动的进行初始化。 HTTP 发出请求并直接传送到 ACTIONSERVLET 实例中。ACTIONSERVLET 实例就会采用相应 的措施,无论是采用何种方法,都会去调用 PROCESS()方法来处理接收到的请求。 STRUTS 框架还有一个较大的优势就是能够创建扩展子类。 用中都没有整个必要,根据没有必要对 ActionServlet 进行相应的扩展。 第五章 系统测试 45 5.4.2 创建 RequestProce

26、ssor 类 在有一些开发中采用了多应用的 Struts 模块,这样的模块中每一个子模块都具有自己的 RequestProcessor,如果还是采用 ActionServlet 的方式,只要选中了合理的子模块,那么 这些子模块就会自动的从 RequestProcessor 中去调用 process()来处理,达到用户的请求 标准。同时 ActionServlet 不但调用了这种方法,还要将目前的请求与处理情况传递回去。 5.4.3 创建 Action 类 控制器的组件不仅仅只有一类,它包括了 ACTIONSERVLET 类与 ACTION 类。其中的 ACTIONSERVLET 类是 STRU

27、TS 框架自己所拥有的,也是整个框架中的主要成分,一般情况之 下是不需要进行扩展的。但是 ACTION 类且不是这样了,它是 STRUTS 框架种可扩展的类型, 主要是用来对特定 HTTP 请求进行相应的处理。而且这一种扩展的类型也是业务逻辑与用户 发出的请求之间的桥梁纽带, ACTION 类的实例有自己创建出,接着调用自身的 PROCESSACTIONPERFORM()方法,再用这种方法去调用 ACTION 类的 EXECUTE()方法。 课程管理的请求转发由 COURSEACTION.JAVA 实现,作用是处理 COURSEFORM 的请求。对 ADD、REMOVE、LIST、VIEW、T

28、RASH、EDIT、SAVE 等实现不同的要求,增加、删除、浏览、 编辑、保存等实现相应的控制。下面是 COURSEACTION 类的部分实现代码。 package com.lixin.graduate.controller; /这里导入系统需要的包 /此处为 execute()方法的具体实现 /接下来定义的 performView()、performSave()、performEdit()、 / performEdit()、performAdd()、performRemove()、performTrash() /方法同 performList()方法基本一致。 private void sq

29、lDuplicateError(HttpServletRequest request, String objName) /此处为 sqlDuplicateError ()方法的具体实现 private void generalError(HttpServletRequest request, Exception e) /此处为 generalError ()方法的具体实现 5.4.3.1 Action 类的工作机制 org.apache.struts.action.Action 的子类包括所有的 Action 类。父类的 execute() 成都电子科技大学学位论文 46 应该由()Actio

30、n 子类覆盖。当创建 ActionForm Bean,并且顺利通过表单验证后, Action 类的 execute()方法就会被 Struts 框架调用。下面是 CourseAction 类的 execute()方法的 具体实现。 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) ActionForward myforward = null; String myaction = mapping

31、.getParameter(); if (isCancelled(request) if (_log.isInfoEnabled() _log.info(“Course“ +mapping.getAttribute() + “ - action was cancelled“); return mapping.findForward(“cancel“); if (_log.isInfoEnabled() _log.info(“ Course action: “+myaction); if (“.equalsIgnoreCase(myaction) myforward = mapping.find

32、Forward(“failure“); else if (“VIEW“.equalsIgnoreCase(myaction) myforward = performView(mapping, form, request, response); /这里省略的是其他方法的实现代码,同 performView()方法 else myforward = mapping.findForward(“failure“); return myforward; 由上述代码可以看出,Action 类的方法返回一个 ActionForward 对象。ActionForward 对象 代表了 Web 资源的逻辑对象,

33、这里的资源可以是 JSP 页、Java Servlet 或 Action。 第五章 系统测试 47 myforward = mapping.findForward(“failure“); return myforward; 以上代码表示 ActionMapping 的 findForward()方法的参数值为“failure“。它和 name 属性为“failure“的 ActionForward 对象匹配。findForward()方法先在 Action 级别(即 元素内的子元素)寻找匹配的 ActionForward 对象。然后再在全局级别 (即元素内的子元素)中寻找匹配的 ActionF

34、orward 对象。如 果 findForward()方法没有找到匹配的 ActionForward 对象,它不会抛出异常,而是返回 null。在浏览器端,用户将接收到一个空白页。 5.4.3.2 访问模型组件 CourseAction 类创建了一个模型组件并用它进行数据库连接。 CourseDAO courseDAO = new CourseDAO(ds); 在实际应用中,要完成更加复杂的功能,Action 类会访问模型组件,如: 被视图组件显示需从模型组件中读取数据; 交互多个模型组件; 界定返回视图组件要依据的信息。 5.4.3.3 向视图组件传递数据 以便向视图组件传递信息,把数据被

35、Action 类存放在 request 或 session 范围内。向 视图组件传递数据的 CourseAction.java 代码如下: request.setAttribute(“COURSES“, courses); 5.4.3.4 把 HTTP 请求转发给合适的视图组件 最后 CourseAction 类通过下行语句把流程转发给合适的视图组件: return mapping.findForward(“success“); 5.4.3.5 CourseAction 的另外方法 课程管理的请求转发由 CourseAction.java 实现,为了对 ADD、REMOVE、LIST、VIEW

36、、TRASH、EDIT、SAVE 等实现不同的要求,CourseAction 类设计 实现了 performAdd()、performRemove()、performList()、performView()、 performTrash()、performEdit()和 performSave()方法。由于这七个方法在编写风格上基 本一致,所以我们针对 performList()方法来说明 CourseAction 类的构建过程。下面是 成都电子科技大学学位论文 48 CourseAction 类的部分实现代码。 private ActionForward performList(ActionM

37、apping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) try /首先设置数据库的连接类 DataSource ds =(DataSource) servlet.getServletContext().getAttribute (Action.DATA_SOURCE_KEY); CourseDAO courseDAO = new CourseDAO(ds); /设置要显示的页面变量 int offset; int length = PAGE_LENGTH;

38、String pageOffset = request.getParameter(“pager.offset“); if (pageOffset = null | pageOffset.equals(“) offset = 0; else offset = Integer.parseInt(pageOffset); /调用 courseDAO.list(offset, length)方法,将返回结果保存到集合变量。 List courses = courseDAO.list(offset, length); /通过 CacheManager 类来设置显示信息 String objKeys =

39、“Course“, “list“; String objKey = CacheManager.createKey(objKeys); Integer size = (Integer)SizeCacheManager.getCache(objKey); if(size = null) size = new Integer(courseDAO.getSize(“course“, “); SizeCacheManager.putCache(size, objKey, 1); /设置要显示页面的路径信息 第五章 系统测试 49 String url = request.getContextPath()

40、+“/“+mapping.getPath()+“.do“; String pagerHeader = Pager.generate(offset, size.intValue(), length, url); request.setAttribute(“pagerHeader“, pagerHeader); request.setAttribute(“COURSES“, courses); catch (Exception e) /如果抛出异常,则返回到错误的页面处 generalError(request, e); return mapping.findForward(“failure“);

41、 /如果没有错误,则会执行下面语句,将页面转移到正确的页面中显示。 return mapping.findForward(“success“); 5.5 创建的配置文件 STRUTS 框架采用的配置应用也不的单一的,而且从基于 XML 情况之下采用了两个配置 文件,即 WEB.XML 与 STRUTS-CONFIG.XML。属于 WEB 应用中的发布描述文件是 WEB.XML,其 在对开发者、组装者及发布者之间来回传递着相应的配置信息,是整个运行网站中的核心文 件。 而 STRUTS-CONFIG.XML 且不一样了,它是 STRUTS 应用程序中的配置描述文件,该文件 集中体应用程序中的所有

42、请求页面作为了导航的定义,是整个 STRUTS 框架系统中的核心, 且将 MVC 结构中各种组件有机的结合起来的也是它。 ,对整个开发过程中进行适当的更改与 充实。如此重要的两个文件,必须要做出相应的操作原理阐述以及如何配置过程。 5.5.1 创建 Web 应用的配置文件 对于任何 Java Web 应用配置都必须是 web.xml 文件。如配置 Struts 应用时,就必须在 web.xml 文件中配置和 Struts 相关的配置选项。在大学生信息管理系统中,首先要进行配 置文件的创建。 5.5.1.1 Struts 的 ActionServlet 的配置 配置 ActionServlet

43、是首先同时也是最重要的一步是。在 web.xml 中配置 ActionServlet 分两个步骤完成。用元素来声明 ActionServlet 是第一步。 成都电子科技大学学位论文 50 action org.apache.struts.action.ActionServlet 上述 Servlet 的名称由元素来定义,用来指定 Servlet 的完整类名为 元素。 配置是配置 ActionServlet 的第二步,它的作用是指定 ActionServlet 可以处理那些 URL。 action *.do 值得注意的是,和元素中的子元素匹配的必须是元素中的子元素。属性是“*.do” ,表明所有

44、以 “*.do”扩展名结尾的 URL 应由 ActionServlet 负责处理。 5.5.1.2 初始化参数的声明 初始化参数用来对 Servlet 的运行时环境进行初始配置。的子 元素用于配置 Servlet 的初始化参数。 config /WEB-INF/struts-config.xml 用来声明 Servlet 初始化参数的子元素,它以“参数名/参数值”的形式的格 式成对出现。 5.5.1.3 欢迎文件菜单的配置 客户访问 Web 应用时,给出 Web 应用的如果仅仅是 Root URL,指定具体的文件名不存 在时, Web 应用的欢迎文件会被 Web 容器自动调用。 第五章 系统测

45、试 51 welcome.jsp index.jsp 元素可以包含有多个子元素,当 Web 应用的欢迎文件 被 Web 容器调用时,首先要寻找第一个子元素指定的文件,然后依次寻找下一个欢迎文件, 直到找到文件为止;假如元素指定的所有文件都不存在时,服务器将 把 “HTTP 404 Not Found”的出错信息向客户端返回。 5.5.1.4 对配置错误的处理 虽然 Struts 框架提供了功能强大的通用错误处理机制,但也不能保证处理所有的错误 和异常。当发生错误时, Struts 框架如果不能处理这种错误,就会把错误抛给 Web 容器。 Web 容器在默认情况下会向用户浏览器直接返回原始的错误

46、信息。在 Web 应用的发布描述文 件中配置元素,就可以避免直接让用户看到原始的错误信息。 404 /common/404.jsp 假如在 web.xml 文件中做了上述配置,当 HTTP 404错误被 Web 容器捕获到时,Web 容器 将根据错误代码来检索元素,如果发现有匹配项,就会返回子元素 指定的文件。依据以上代码,如果发生 HTTP 404错误,将返回404.jsp 网页。 5.5.1.5 Struts 标签库的配置 Struts 框架可以提供一些实用的客户化标签库。假如这些标签库在应用中使用了,就 必须在 Web 应用发布描述文件中去配置它们,配置为元素。我们在进行视图组件的 开发

47、时,一定会涉及到 Bean 标签的配置。 /WEB-INF/struts-bean.tld /WEB-INF/struts-bean.tld 上述的元素指定了标签库的相对或绝对 URL 地址,Web 应用会根据这一 URL 访 成都电子科技大学学位论文 52 问标签库;元素则用来指定标签库描述文件在文件系统资源中的物理位 置。 5.5.2 Struts 框架的配置文件的创建 STRUTS 支持把应用化分为多个组件,从而提高开发速度。STRUTS 框架的配置文件 STRUTS-CONFIG.XML 允许把这些组件组装起来,并决定如何使用它们。STRUTS 框架在启动时 还会把 STRUTS 配置

48、文件的配置信息读到内存并同时将其存放在与 CONFIG 包相关的 JAVABEAN 类的实例中,然后根据它来创建和配置各种 STRUT 组件。 开发过程中的一个重点就是合理配置 STRUTS-CONFIG.XML 文件各种元素。STRUTS- CONFIG.XML 的作用是建立 CONTROLLER 和 MODEL 之间关系的。它描述了 CONTROLLER 所使用 的把请求对应到具体操作的法则,同时也把各组件组装起来,并指定如何使用它们。如果是 大型的 WEB 项目,通过此配置文件可迅速把握其脉络,这对于前期的开发,还是后期的维护 或升级都是大有好处的。下面提供的是大学生信息管理系统的 STRUTS-CONFIG.XML 文件的部 分源代码,在每一段代码的后面都有相关的说明。 5.5.2.1 系统数据源设计 上面所列代码是用来配置应用所需要的数据源。数据源的作用则是负责建立和特定数据库之 间的连接,数据源一般采用连接池机制来实现,从而提高数据库的访问功能。JAVA 语言会 提供 JAVAX.SQL.DATASOURCE 接口,所有的数据源一定要实现该接口。具体的连接池内容已 经在第四章讲过,这里就不再讲述。 5.5.2.2 ActionForm Bean 的设计 以上代码是

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1