基于Java的学习管理系统(LMS)——后台程序设计-毕业论文_第1页
基于Java的学习管理系统(LMS)——后台程序设计-毕业论文_第2页
基于Java的学习管理系统(LMS)——后台程序设计-毕业论文_第3页
基于Java的学习管理系统(LMS)——后台程序设计-毕业论文_第4页
基于Java的学习管理系统(LMS)——后台程序设计-毕业论文_第5页
免费预览已结束,剩余65页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于 Java 的学习管理系统(LMS)后台程序设计 I 基于 JAVA 的学习管理系统(LMS) 后台程序设计 摘要 E-learning 又称电子化学习,是指通过计算机、网络等数字化方法进行学习与教 学的活动。它充分利用 IT 技术为教学活动提供具有全新沟通机制与丰富资源的学习环境, 实现了一种新的学习方式。学习管理系统(Learning Management System)是一个 E- learning 平台。基于 Java 的学习管理系统是在 Java 平台上实现的一个电子化学习平台, 主要提供了学生,老师交流学习的环境,使得管理教学方便,高效。 该系统主要采用了 Struts 开源框架,MVC 模式实现。系统分为前台和后台部分。前台 部分即 Web 界面部分,提供系统与用户交流的用户接口,采用模块化的方法设计和开发,各 个功能模块之间既相互独立又相互有数据参数传递。系统后台部分主要完成系统业务逻辑, 响应用户请求。 本文首先对系统采用的 J2EE,STRUTS 和 MVC 技术的概念,组织架构等进行了简单的介 绍,接着对详细介绍了系统总体设计,包括对系统目标,系统特性的描述,接下来再对系统 模块的划分作了大致的介绍。 其次,对系统的详细设计进行了描述。系统主要可划分为四个模块,即控制器模块, FORMBEAN 模块,安全模块和数据库模块,本文对上述四个模块的设计和实现进行了详细的 说明。 最后,本文展示了系统运行结果,并对运行结果作了详细的介绍。 关键词学习管理系统 STRUTS J2EE MVC 基于 Java 的学习管理系统(LMS)后台程序设计 II JAVA based learn management system (LMS) background module design Abstract E-learning implements a nearly new way to study through computer,network and so on digital method to do teaching and studying activity. E-learning relies on IT technology. this supplies students and teachers a environment with rich resources and convenient way to communicate each other. Learning Management is a subset of E-learning systems. Our project is “Java Bases Learning Management System”. This system is running on java platform, it supplies a environment that students and teachers can communicate with each other conveniently, this system help them studying and teaching more efficiently. This system is implemented on Struts framework and MVC design pattern. It can divided into two parts,foreground and background. The first part mainly supplies the web user interface, so the user can interact with this system. The second part mainly completes the userss requests, and sends the responses to the web part and displays the information to the user in web pages. This system is high modularization, It can be divided into several separated model, every model is separated, but some data and arguments transformed among them. This article first introduces the concept and architecture of J2EE,STRUTS and MVC which used in this system. And then describes the globle designing of this system. Secondly, the background part of this system is consisted of four models, Controller model, FormBean Model, Security Model and Database Model. Each of them was introduced in this article. Last, the running result of this system was introduced. Keywords Learning Management J2EE STRUTS MVC 基于 Java 的学习管理系统(LMS)后台程序设计 III 目录目录 引言引言1 1 第一章第一章 J2EE,STRUTS,MVCJ2EE,STRUTS,MVC 介绍介绍 2 2 1.1 J2EE 平台的介绍2 1.1.1 J2EE 的概念.2 1.1.2 J2EE 的优势.3 1.1.3 J2EE 体系架构概述.4 1.1.4 J2EE 主要技术.6 1.2 STRUTS框架的介绍7 1.2.1 Struts 的概念和体系结构.7 1.2.2 Struts 框架的工作原理和组件.9 1.2.3 Struts 标签库15 1.3 MVC 模式的介绍16 1.3.1 MVC 的概念和体系结构.16 1.3.2 为什么使用 MVC .17 1.3.3 MVC 的优缺点.18 第二章第二章 系统总体设计系统总体设计1919 2.1 系统目标19 2.2 系统特性19 2.3 模块设计20 第三章第三章 系统详细设计系统详细设计2222 3.1 控制器模块详细设计22 3.2 FORMBEAN模块详细设计24 3.3 安全模块详细设计27 3.4 数据库模块设计.31 第四章第四章 运行结果运行结果4949 结论结论5858 致谢语致谢语5959 参考文献参考文献 6060 附附 录录6161 基于 Java 的学习管理系统(LMS)后台程序设计 IV Content PREFACE .1 CHAPTER 1 INTRODUCTION OF J2EE,STRUTS AND MVC.2 1.1 INTRODUCTION OF J2EE PLATFORM.2 1.1.1 Concept of J2EE .2 1.1.2 Advantage of J2EE3 1.1.3 Architecture of J2EE4 1.1.4 Main Techniques of J2EE .6 1.2 INTRODUCTION OF STRUTS FRAMEWORK.7 1.2.1 Concept and Architecture of Struts .7 1.2.2 Conponent of Struts 9 1.2.3 Tag Library of Struts15 1.3 INTRODUCTION OF MVC.16 1.3.1 Concept and Architecture of MVC.16 1.3.2 Why Use MVC.17 1.3.3 Advantages and Disadvantages of MVC 18 CHAPTER 2 GLOBAL DISGNING.19 2.1 TARGET OF SYSTEM.19 2.2 FEATURES OF SYSTEM 19 2.3 MODULE DESIGNING.20 CHAPTER 3 DETAIL DESIGNING.22 3.1 DETAIL DESIGNING OF CONTROLLER MODULE22 3.2 DETAIL DESIGNING OF FORMBEAN MODULE 24 3.3 DETAIL DESIGNING OF SECURITY MODULE 27 3.4 DETAIL DESIGNING OF DATABASE MODULE .31 CHAPTER 4 RUNNING RESULTS.49 CHAPTER 5 CONCLUSION.58 ACKNOWLEDGEMENT .59 REFERENCES60 APPENDIX61 基于 Java 的学习管理系统(LMS)后台程序设计 1 引言 互联网的高速发展正改变着人类的生活,它的多姿多彩正一点一滴的渗透到人们生活的 每个方面,Internet 覆盖的广阔性是世界各地人们利用互联网进行互通信息的重要手段。 学习管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来 说都至关重要,所以学习管理系统应该能够为用户提供充足的信息和快捷的交流手段。但一 直以来人们使用传统人工的方式管理教学活动,这种管理方式存在着许多缺点,如:效率低, 另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。 计算机 Web 通信编程的一个主要平台是 Java。虽然其他开发工具如 Delphi、PHP 等也 可以进行 Web 编程,但是在程序运行效率以及灵活性方面,却远远比不上 Java。因此,为 了满足人们相互沟通的需要,我们基于 Java 平台开发了该学习管理系统。 本系统基于 Java 平台,Struts 框架和 MVC 设计模式来实现,整个系统由客户端(前台) 和服务器端(后台)程序组成,并通过对 Java,Struts 网络编程技术的详细介绍,深入地探 讨了该学习管理系统的设计与实现的过程。用户可以快捷与方便地登陆用户端程序,从而进 行网上交流。 基于 Java 的学习管理系统(LMS)后台程序设计 2 第一章第一章 J2EE,STRUTS,MVCJ2EE,STRUTS,MVC 介绍介绍 1.11.1 J2EEJ2EE 平台的介绍平台的介绍 .1 J2EEJ2EE 的概念的概念 Sun Microsystems 公司在 1996 年推出了一种新的纯面向对象的编程语言,命名为 Java。Java 技术已成为 20 世纪软件业界出现的最重要的技术 之一,这种与平台无关的编 程语言的出现,立刻掀起了软件工业的一场革命,如今已是互联网上最为流行的编程语言。 Java 是一种通过解释方式来执行的语言, 其特点为:简单、面向对象、不依赖于机器的结 构,具有可移植性、鲁棒性、安全性,并且提供了并发的机制以及与现代网络技术的完美结 合。目前,按照 Sun Microsystems 官方网站()公布的标准,根据不 同的应用领域将 Java 语言被划分为三大平台: “Java 2 Platform Micro Edition ” 简称 J2ME,Java 2 平台微型版。用于开发掌上 电脑、手机等移动通信设备上使用的嵌入式系统。 “Java 2 Platform Standard Edition” 简称 J2SE,Java 2 平台标准版。主要用于开 发一般台式机应用程序。 “Java 2 Platform Enterprise Edition” 简称 J2EE,Java 2 平台企业版。主要用于 快速设计、开发、部署和管理企业级的软件系统。 J2EE 是使用 Java 进行企业开发的一套扩展规范,它提供基于组件设计、开发、部署和 管理企业应用的解决方案。J2EE 规范必须基于 J2SE 平台,它不仅巩固了 标准版中的许多 优点,例如“一次编译、随处运行”的跨平台特性、方便高效的数据库提供无缝连接的技术 JDBC(Java Data Base Connectivity,Java 数据库连接)、能够在 Internet 应用中确保 数据完整性的安全模式以及支持多线程技术等,同时还针对 Servlet/JSP、EJB、JMS、JTS/JTA、JCAT 和 XML 等技术提供了全面的支持。J2EE 已建立了 一套能够使企业级应用开发者缩短软件产品开发周期的标准架构体系。 事实上,J2EE 已成为企业级开发的工业标准和主流平台。J2EE 为建立具有高可用性、 高可扩充性、易维护性的企业级系统提供了完美的机制和架构模型。在 J2EE 提供的统一开 发平台下,可以大大降低开发多层应用的成本和复杂性,对于需要获得高可用性、高安全性 基于 Java 的学习管理系统(LMS)后台程序设计 3 以及高可扩充性软件服务而又缺乏资金的企业来 说,J2EE 的中间层集成框架完全可以胜任 并满足其要求。同时,J2EE 自身具备的完备的目录服务支持、高度的安全机制、高效的性 能展现等众多优势技术, 为企业平滑集成已有应用系统发挥了巨大作用。 基于 J2EE 的企业级应用系统,不受任何特定操作系统、网络环境、硬件平台的束缚。 应用系统可开发并部署在异构的环境中,并能确保系统的可移植性。因此,只 要符合 J2EE 规范的系统开发一次即可部署到各种操作系统平台和网络平台上。J2EE 作为长期的性能稳 定的企业级应用系统平台,能保障 724 小时的不间 断服务,以满足企业客户、合作伙伴 的需要,是企业理想的运行平台也是 Internet 全球化发展的客观必然要求。J2EE 高伸缩性 的特点在如今“随需应 变”(IBM 公司 2002 年底提出)电子商务战略大行其道的时代,做 出了卓越贡献。J2EE 采用负载平衡策略,使系统软硬件资源利用率及性能表现最大化, 消 除了系统中的瓶颈。允许多台服务器集成部署,实现可高度伸缩的系统,在保存企业现有 IT 资产减少重复性投入的同时也满足了未来商业应用的需要。 .2 J2EEJ2EE 的优势的优势 J2EE 为搭建具有可伸缩性、灵活性、易维护性的商务系统提供了良好的机制: 1.保留现存的 IT 资产: 由于企业必须适应新的商业需求,利用已有的企业信息系统方面的 投资,而不是重新制定全盘方案就变得很重要。这样,一个以渐进的(而不是激进的,全盘 否定的)方式建立在已有系统之上的服务器端平台机制是公司所需求的。J2EE 架构可以充 分利用用户原有的投资,如一些公司使用的 BEA Tuxedo、IBM CICS、 IBM Encina、Inprise VisiBroker 以及 Netscape Application Server。这之所以成为可能是 因为 J2EE 拥有广泛的业界支持和一些重要的企业计算领域供应商的参与。每一个供应商 都对现有的客户提供了不用废弃已有投资,进入可移植的 J2EE 领域的升级途径。由于基于 J2EE 平台的产品几乎能够在任何操作系统和硬件配置上运行,现有的操作系统和硬件也能 被保留使用。 2.高效的开发: J2EE 允许公司把一些通用的、很繁琐的服务端任务交给中间件供应商去完 成。这样开发人员可以集中精力在如何创建商业逻辑上,相应地缩短了开发时间。高级中间 件供应商提供以下这些复杂的中间件服务: o 状态管理服务 - 让开发人员写更少的代码,不用关心如何管理状态,这样能够更 快地完成程序开发。 o 持续性服务 - 让开发人员不用对数据访问逻辑进行编码就能编写应用程序,能生 基于 Java 的学习管理系统(LMS)后台程序设计 4 成更轻巧,与数据库无关的应用程序,这种应用程序更易于开发与维护。 o 分布式共享数据对象 CACHE 服务 - 让开发人员编制高性能的系统,极大提高整体 部署的伸缩性。 3.支持异构环境: J2EE 能够开发部署在异构环境中的可移植程序。基于 J2EE 的应用程序 不依赖任何特定操作系统、中间件、硬件。因此设计合理的基于 J2EE 的程序只需开发一次 就可部署到各种平台。这在典型的异构企业计算环境中是十分关键的。J2EE 标准也允许客 户订购与 J2EE 兼容的第三方的现成的组件,把他们部署到异构环境中,节省了由自己制订 整个方案所需的费用。 4.可伸缩性: 企业必须要选择一种服务器端平台,这种平台应能提供极佳的可伸缩性去满 足那些在他们系统上进行商业运作的大批新客户。基于 J2EE 平台的应用程序可被部署到各 种操作系统上。例如可被部署到高端 UNIX 与大型机系统,这种系统单机可支持 64 至 256 个 处理器。(这是 NT 服务器所望尘莫及的)J2EE 领域的供应商提供了更为广泛的负载平衡策 略。能消除系统中的瓶颈,允许多台服务器集成部署。这种部署可达数千个处理器,实现可 高度伸缩的系统,满足未来商业应用的需要。稳定的可用性: 一个服务器端平台必须能全 天候运转以满足公司客户、合作伙伴的需要。因为 INTERNET 是全球化的、无处不在的,即 使在夜间按计划停机也可能造成严重损失。若是意外停机,那会有灾难性后果。J2EE 部署 到可靠的操作环境中,他们支持长期的可用性。一些 J2EE 部署在 WINDOWS 环境中,客户也 可选择健壮性能更好的操作系统如 Sun Solaris、IBM OS/390。最健壮的操作系统可达到 99。999%的可用性或每年只需 5 分钟停机时间。这是实时性很强商业系统理想的选择。 .3 J2EEJ2EE 体系架构概述体系架构概述 J2EE 使用多层的分布式架构模型,模型由组件组成,应用程序的逻辑根据功能划分被 封装在各组件中。由于是采用分布式架构,J2EE 应用中的大量组件部署在不同的 机器中, 通常这些机器具有不同的物理地址。J2EE 架构一般分为 4 层:客户层、Web 应用层、企业组 件层(业务层)、企业信息系统层。如图 1-4 所示描述 了 J2EE 架构中典型的多层应用架构 模型。 基于 Java 的学习管理系统(LMS)后台程序设计 5 图 1-1 J2EE 架构的多层应用模型 一 个 J2EE 客户层软件可以是基于 Web 的,也可以是基于 Application(应用)的。 Web 客户端由 Web 应用层的 Web 组件动态生成 Web 页面, 主要是 HTML 文件和 XML 文件。客 户端用户在使用 J2EE 服务时,无需安装多余软件,只要计算机上装有一个 Web 浏览器即可, 如 MS Internet Explorer、NetScape、Mozilla Firefox,等等。基于应用程序的客户端, 可以为用户展示比 Web 客户端更为丰富的人性化的图形界面,如 Java AWT/Swing 开发的图 形用户界面。Web 客户端通过 Web 应用层中的 JSP/Servlet 进行通信,而应用程序客户端则 可以跳过 Web 组件层直接 访问运行在企业组件层的 Enterprise JavaBeans。 Web 应用组件层提供的服务主要依赖于 JSP 页面或是 Servlet.JSP 和 Servlet 都是 J2EE 应用技术中的重要组成部分。JSP 页面由 HTML 文 件、Java 程序片段和 JSP 标签构成, 以 Servlet 的方式执行。Servlet 是 Web 应用开发的基础。它完全用 Java 语言开发,是 Java 平台 上的 CGI 技术。它运行于服务器端的 J2EE 容器中,具有很高的效率,能够动态 地加载,动态地生成 Web 页面。Servlet 擅长于流程控制和事务处理, 提供的扩展服务功 能可为企业定制灵活的开发策略。Web 应用层主流的服务器有:Tomcat、Resin 等。 企业组件层中主要是负责处理企业的业务流,并且将相关的业务逻辑封装在 Enterprise JavaBeans 中。这一层提供了 EJB 的开发、部署和运行时管理环境。每一个 EJB 都是一个可重用的组件。EJB 架构定义了 3 种 Enterprise JavaBean 类型:会话 Bean、实体 Bean 和消息驱动 Bean。其中,会话 Bean 又分为有状态会话 Bean 和无状态会话 Bean。实体 Bean 可以进行自行状态管理,也可以交由 EJB 容器进行管理,两种方式都为了完成实体 Bean 的持久性。消息驱动 Bean 始终处于无状态。三种类型的 Enterprise JavaBean 有着不 同的生命周期。企业组件层采用的主流服务器有:Weblogic、JBoss、Sun Application Server、WebSphere,等等。 基于 Java 的学习管理系统(LMS)后台程序设计 6 企业信息系统层的特点是有数据库系统的支持。企业信息系统软件主要包括企业内传统 信息系统如财务系统、CRM 系统、数据库系统和 ERP 等。 .4 J2EEJ2EE 主要技术主要技术 在 J2EE 平台中,包括了众多的技术,以便对开发者提供更为全面的支持。 “Servlet 技术 Servlet 是 Web 应用开发的基础。它完全用 Java 语言开发,是 Java 平台上的 CGI 技术。它运行于服务器端的 J2EE 容器中,具有很高的效率, 能够动态地加载, 动态地生成 Web 页面。Servlet 擅长于流程控制和事务处理,提供的扩展服务功能可为企业 定制灵活的开发策略。 “JSP 技术 其本质仍是 Servlet,只是两者创建方式不同。JSP 文件由 HTML 文件、 Java 程序片段和 JSP 标签构成。JSP 将首先通过分析器生成相应的 Servlet 源文件,然后 再对此 Servlet 文件进行编译运行。JSP 与 Servlet 一样,具有相当高的运行效率。 “EJB 技术 Enterprise Java Bean 简称 EJB,它运行在 EJB 服务器上,是由客户端调 用的非可视化远程对象。EJB 拥有一系列协议,允许自身被远程访问或在特定服务器上进行 安装或 部署。允许将服务安全性、事务行为、并发性(支持多个客户端同时访问的情况) 和持久性(其状态的生命周期)的主要方面授权给 EJB 服务器上其所在的容器。EJB 提供 的事务机制非常周全,但事务机制带来的缺点是性能的降低。EJB 支持分部式应用系统。在 EJB 中定义了三种不同类别的 Enterprise Bean:会话 Bean、实体 Bean、消息驱动 Bean。EJB 的完整执行过程为:客户端通过 JNDI 检索 Home 对象的引用,JNDI 返回 Home 对 象的引用,请求创建一个新的 EJB 对象,创建 EJB 对象,返回 EJB 对象,调用相关业务逻辑 方法,调用 Enterprise Bean。一般 J2EE 应用服务器都是 EJB 服务器,比如: Weblogic、Jboss、Sun Application Server、WebSphere 等。 “JMS 技术 Java Message Service,Java 消息服务。JMS 是 J2EE 平台的重要组成部 分。它是一组标准 Java 应用接口,可以在各种企业通信系统间使用,提供创建、发 送、接 收、读取消息等服务。为确保 Java 应用能够和各种消息中间件进行异步通信,JMS 定义了 一组公共的应用程序接口和相应语法来满足开发需求。通过使 用统一的 JMS 接口集,开发 人员可以无须掌握消息产品的使用方法,就来编写和操纵各种消息中间件。JMS 支持点对点、 发布/订阅式的异步消息通信机制,并 能够最大限度地提升消息应用的可移植性。 “JNDI 技术 Java Naming and Directory Interface ,简称 JNDI。J2EE 应用程序组 件通常分布在不同物理地址的机器上,所以需要一种机制以方便客户端使用者查找和引用 J2EE 组件及企业系统资源。在 J2EE 体系中,使用 JNDI 技术定位各种对象,包括 EJB 对象、 基于 Java 的学习管理系统(LMS)后台程序设计 7 数据库驱动对象、JDBC 数据源对象及消息连接对象等。JNDI 函数库为应用程序提供了一个 统一的接口来完成规范定义的目录操作,如通过对象属性来查找和定位该对象。 1.21.2 StrutsStruts 框架的介绍框架的介绍 .1 StrutsStruts 的概念和体系结构的概念和体系结构 Struts 有一组相互协作的类、Serlvet 以及 Jsp TagLib 组成。基于 Struts 构架的 web 应用程序基本上符合 JSP Model2 的设计标准,可以说是 MVC 设计模式的一种变化类型。根 据上面对 framework 的描述,我们很容易理解为什么说 Struts 是一个 web framwork,而不 仅仅是一些标记库的组合。但 Struts 也包含了丰富的标记库和独立于该框架工作的实用程 序类。Struts 有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型 层(Model)和视图层(View)。在模型层,Struts 可以很容易的与数据访问技术相结合, 包括 EJB,JDBC 和 Object Relation Bridge。在视图层,Struts 能够与 JSP, Velocity Templates,XSL 等等这些表示层组件想结合。 StrutsStruts 的与的与 WebWeb AppApp 的关系的关系 既然 struts 叫做 web framework,那么其肯定主要基于 web 层的应用系统开发。按照 J2EE Architecture 的标准,struts 应当和 jsp/servlet 一样,存在于 web container 一层。 图 1-2 Struts 与 WebApp 的关系 StrutsStruts 的体系结构的体系结构 我们说 struts framework 是 MVC 模式的体现,下面我们就从分别从模型、视图、控制 来看看 struts 的体系结构(Architecture)。下图显示了 struts framework 的体系结构响 应客户请求时候,各个部分工作的原理。 基于 Java 的学习管理系统(LMS)后台程序设计 8 图 1-3 Struts 体系结构 从视图角度(从视图角度(ViewView) 首先,Struts 提供了 Java 类 org. apache.struts.action.ActionForm,Java 开发者 将该类细分来创建表单 bean。在运行时,该 bean 有两种用法: 当 JSP 准备相关的 HTML,表单以进行显示时,JSP 将访问该 bean(它保存要放入表 单中的值)。那些值是从业务逻辑或者是从先前的用户输入来提供的。 当从 Web 浏览器中返回用户输入时,该 bean 将验证并保存该输入以供业务逻辑或 (如果验证失败的话)后续重新显示使用。 其次,Struts 提供了许多定制 JSP 标记,它们的使用简单,但是它们在隐藏信息方面 功能强大。例如,除了 bean 名称和给定 bean 中每个段的名称之外,页面设计者不需要知道 有关表单 bean 的更多信息。 从模型角度(从模型角度(ModelModel) Struts 虽然不直接有助于模型开发。在 Struts 中,系统模型的状态主要由 ActiomForm Bean 和值对象体现。 从控制器角度(从控制器角度(ControllerController) 在 Struts framework 中, Controller 主要是 ActionServlet,但是对于业务逻辑的操 作则主要由 Action、ActionMapping、ActionForward 这几个组件协调完成(也许这几个组 件,应该划分到模型中的业务逻辑一块)。其中,Action 扮演了真正的控制逻辑的实现者, 而 ActionMapping 和 ActionForward 则指定了不同业务逻辑或流程的运行方向。 StrutsStruts 的基本组件包的基本组件包 整个 struts 大约有 15 包,近 200 个类所组成,而且数量还在不断的扩展。在此我们不 能一一介绍,只能列举几个主要的简要的介绍一下。下表说明了目前 struts api 中基本的 几个组件包,包括 action、actions、config、util、taglib、validator。下图则显现了 这几个组件包之间的关系。其中 action 是整个 struts framework 的核心 基于 Java 的学习管理系统(LMS)后台程序设计 9 表 1-1 核心组件包的关系 Org.apache.struts.actionOrg.apache.struts.action 基本上,控制整个 struts framework 的运行的核心类、组件都在这个包中,比如我 们上面提到的控制器 ActionServlet。已经 Action,ActionForm,ActionMapping 等等。struts1.1 比 1.0 多了 DynaActionForm 类。增加了动态扩展生成 FormBean 功能 Org.apache.struts.actionsOrg.apache.struts.actions 这个包是主要作用是提供客户的 http 请求和业务逻辑处理之间的特定适配器转换功 能,而 1.0 版本中的部分动态增删 FromBean 的类,也在 struts1.1 中被 Action 包 的 DynaActionForm 组件所取代 Org.apache.struts.configOrg.apache.struts.config 提供对配置文件 struts-config.xml 元素的映射。这也是 sturts1.1 中新增的功能 Org.apache.struts.utilOrg.apache.struts.util Strtuts 为了更好支持 web application 的应用,体统了一个些常用服务的支持, 比如 Connection Pool 和 Message Source。详细信息请参考 http:/J/struts/api/org/apache/struts/util/package- summary.html Org.apache.struts.taglibOrg.apache.struts.taglib 这不是一个包,而是是一个客户标签类的集合。下面包括 Bean Tags、HTML Tags、Logic Tags、Nested Tags、Template Tags 这几个用于构建用户界面的标签 类。 Org.apache.struts.validatorOrg.apache.struts.validator Struts1.1 framework 中增加了 validator framework,用于动态的配置 from 表单 的验证。详细信息请参阅 /dwinterfeldt/ a ac ct ti io on n ( (c co or re e) ) a ac ct ti io on ns s c co on nf fi ig g t ta ag gl li i v va al li id da at to or r u ut ti il l 图 1-4 struts 的基本组件关系图 .2 StrutsStruts 框架的工作原理和组件框架的工作原理和组件 对于 Struts 如何控制、处理客户请求,让我们通过对 struts 的四个核心组件介绍来 具体说明。这几个组件就是:ActionServlet.Action Classes,Action Mapping(此处包括 ActionForward),ActionFrom Bean。 基于 Java 的学习管理系统(LMS)后台程序设计 10 StrutsStruts ActionServletActionServlet 控制器对象控制器对象 ActionServlet 继承自 javax.servlet.http.HttpServlet 类,其在 Struts framework 中扮演的角色是中心控制器。它提供一个中心位置来处理全部的终端请求。控制器 ActionServlet 主要负责将 HTTP 的客户请求信息组装后,根据配置文件的指定描述,转发 到适当的处理器。 按照 Servelt 的标准,所有得 Servlet 必须在 web 配置文件(web.xml)声明。同样, ActoinServlet 必须在 Web Application 配置文件(web.xml)中描述,有关配置信息如下。 action org.apache.struts.action.ActionServlet 全部的请求 URI 以*.do 的模式存在并映射到这个 servlet,其配置如下: action *.do 一个该模式的请求 URI 符合如下格式: http:/www.my_site_/mycontext/actionName.do 中心控制器为所有的表示层请求提供了一个集中的访问点。这个控制器提供的抽象概念 减轻了开发者建立公共应用系统服务的困难,如管理视图、会话及表单数据。它也提供一个 通用机制如错误及异常处理,导航,国际化,数据验证,数据转换等。 当用户向服务器端提交请求的时候,实际上信息是首先发送到控制器 ActionServlet, 一旦控制器获得了请求,其就会将请求信息传交给一些辅助类(help classes)处理。这些 辅助类知道如何去处理与请求信息所对应的业务操作。在 Struts 中,这个辅助类就是 org.apache.struts.action.Action。通常开发者需要自己继承 Aciton 类,从而实现自己的 Action 实例。 StrutsStruts ActionAction ClassesClasses 基于 Java 的学习管理系统(LMS)后台程序设计 11 ActionServlet 把全部提交的请求都被控制器委托到 RequestProcessor 对象。 RequestProcessor 使用 struts-config.xml 文件检查请求 URI 找到动作 Action 标示符。 一个 Action 类的角色,就像客户请求动作和业务逻辑处理之间的一个适配器 (Adaptor),其功能就是将请求与业务逻辑分开。这样的分离,使得客户请求和 Action 类 之间可以有多个点对点的映射。而且 Action 类通常还提供了其它的辅助功能,比如:认证 (authorization)、日志(logging)和数据验证(validation)。 Action 最为常用的是 execute()方法。(注意:以前的 perform 方法在 struts 1.1 中 已经不再支持),还有一个 execute()方法,请参考 apidoc,在此不在说明。 public ActionForward execute(ActionMapping mapping, ActionForm form, Javax.servlet.ServletRequest request, Javax.servlet.ServletResponse response) throws java.io.IOException,javax.servlet.ServletException 当 Controller 收到客户的请求的时候,在将请求转移到一个 Action 实例时,如果这个 实例不存在,控制器会首先创建,然后会调用这个 Action 实例的 execute()方法。 Struts Framework 为应用系统中的每一个 Action 类只创建一个实例。因为所有的用户都使 用这一个实例,所以你必须确定你的 Action 类运行在一个多线程的环境中。下图显示了一 个 execute()方法如何被访问: 图 1-5 Action 实例的 execute()方法 注意,客户自己继承的 Action 子类,必须重写 execute()方法,因为 Action 类在默 认情况下是返回 null 的。 StrutsStruts ActionAction MappingMapping 上面讲到了一个客户请求是如何被控制器转发和处理的,但是,控制器如何知道什么样 的信息转发到什么样的 Action 类呢?这就需要一些与动作和请求信息相对应的映射配置说 明。在 struts 中,这些配置映射信息是存储在特定的 XML 文件(比如 struts- config.xml)。 这些配置信息在系统启动的时候被读入内存,供 struts framework 在运行期间使用。 在内存中,每一个元素都与 org.apache.struts.action.ActionMapping 类的一个 实例对应。下表就显示了一个登陆的配置映射。 上面的配置表示:当可以通过/logonAction.do(此处假设配置的控制器映射为*.do) 提交请求信息的时候,控制器将信息委托 com.test.LogonAction 处理。调用 LogonAction 实例的 execute()方法。同时将 Mapping 实例和所对应的 LogonForm Bean 信息传入。其中 name=LogonForm,使用的 form-bean 元素所声明的 ActionForm Bean。有关 form-bean 的申明如下显示。 使用使用 ActionForwardActionForward 导航导航 元素则表示了当 Action 实例的 execute()方法运行完毕或,控制器根据 Mapping 可将响应信息转到适当的地方。如上面现实,如果客户登陆成功,则调用 welcome forward,将成功信息返回到/welcome.jsp 页面。在你的 execute()方法的结尾可以使用下 面的实例代码而返回 welcome forward。当然你的 welcome forward 必须在 action 元素属 性中定义,正如上面所声明的那样。 return (mapping.findForward(“welcome“); ActionForward 对象是配置对象。这些配置对象拥有独一无二的标识以允许它们按照有 意义的名称如“success”,“failure”等来检索。ActionForward 对象封装了向前进的 基于 Java 的学习管理系统(LMS)后台程序设计 13 URL 路径且被请求处理器用于识别目标视图。ActionForward 对象建立自元素位于 struts-config.xml。下面是一个 Struts 中元素例子,属于元素范围。 基于执行请求处理器的 execute()方法的结果,当传递一个值匹配指定于 元素中 name 属性的值的时候,下一个视图可以在 execute()方法中被开发者用方便的方 法 org.apache.struts.action.ActionMapping.findForward()选择。 ActionMapping.findForward()方法既从它的本地范围又从全局范围提供一个 ActionForward 对象,该对象返回至 RequestProcessor 以 RequestDispatcher.forward() 或 response.sendRedirect()调用下一个视图。当元素有 redirect=“false” 属性或 redirect 属性不存在的时候,RequestDispatcher.forward()被执行;当 redirect=“true”是,将调用 sendRedirect()方法。下例举例说明了 redirect 属性的 用法: 如果 redirect=true,URL 建立如/contextPath/path 因为 HttpServletResponse.sendRedirect()中解释 URL 采用”/”开头相对于 servlet 容器根 目录。 如果 redirect=false, URI 建立如/path 因为 ServletContextgetRequestDisptacher()采用虚拟目录相关 URL。 在此稍说一下有关 global-forwards 的概念。其在配置文件中描述了整个应用系统可以 使用的 ActionForward,而不是仅仅是一个特定的 Action。 StrutsStruts ActionFormActionForm BeanBean 捕获表单数据捕获表单数据 基于 Java 的学习管理系统(LMS)后台程序设计 14 一个应用系统的消息转移(或者说状态转移)的非持久性数据存储,是由 ActionForm Bean 的负责保持的。ActionForm 派生的对象用于保存请求对象的参数,因此它们和用户紧 密联系。一个 ActionForm 类被 RequestProcessor 建立。这是发生在已完成向前进到一个 URL,该 URL 为映射到控制器 servlet 而不是 JSP 和相应的动作映射指定的表单属性的。在 这个情况下,如果没有在指定的活动范围内找到,RequestProcessor 将尝试寻找可能导致 创建一个新 ActionForm 对象的表单 bean。该 ActionForm 对象在指定的活动范围内被用 元素的 name 属性找到; RequestProcessor 将随后重新安排表单属性,用请求时参数填充表单,随即调用表单 对象的 validate()方法以履行服务器端用户输入验证。仅当 ActionMapping 对象中 validate 属性被设为 true 时,validate()方法被调用;这就是默认的行为。 Request.getParameterValues(parameterName)被用于得到一个 String对象,它用来表单 填充;验证的结果应该是一个 ActionErrors 对象,用 org.apache.struts.taglib.html.ErrorsTag 来显

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论