伍飞-毕业设计.doc

上传人:飞****2 文档编号:57183571 上传时间:2022-11-04 格式:DOC 页数:37 大小:360KB
返回 下载 相关 举报
伍飞-毕业设计.doc_第1页
第1页 / 共37页
伍飞-毕业设计.doc_第2页
第2页 / 共37页
点击查看更多>>
资源描述

《伍飞-毕业设计.doc》由会员分享,可在线阅读,更多相关《伍飞-毕业设计.doc(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、昆山登云科技职业学院实验报告课程名: Struts2下文件上传设计与实现题目: 上传和下载班级: 计用一班学号: 系、专业: 信息系计算机应用姓名: 伍 飞 目录第一章 绪 论1.1 MVC的简介1.2 Struts2 的开发论述.1.2.1 Struts2框架架构1.2.2 Struts2的配置文件1.2.3 Struts2的标签库1.2.4 Struts2的控制器组件第二章 开发环境及相关技术的介绍2.1 JDK开发工具包2.2 Tomcat服务器2.3 安装与配置Eclipse第三章 Struts2文件上传设计与实现3.1 Struts2 上传功能的底层依赖3.2视图层的设计与实现3.2

2、.1 设计上传的JSP 页面3.3控制层的设计与实现3.3.1设计上传文件的控制层代码3.3.2 action 中File实例的命名规则3.3.3 设置上传文件的大小3.3.4 设计配置文件3.4 运行结果第四章 Struts2 文件的上传总结参考文献第一章 绪论1.1 MVC的简介MVC(Model View Controller)模型视图控制器 MVC本来是存在于Deskt op程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC copyright: Apple Inc.的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状

3、图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。 模型视图控制器(MVC)是Xerox PARC在八十年代为编程语言Smalltalk80发明的一种软件设计模式,至今已被广泛使用。最近几年被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到越来越多的使用 ColdFusion 和 PHP 的开发者的欢迎。模型视图控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。 视图视图是用户看到并与之交

4、互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services. 如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。 模型模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如

5、它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。 控制器控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。1.2 Struts2的开发论述(1) 基于MVC模式的Java EE技术Web开发框架,可以对使用Java

6、EE技术的Web项目开发进行代码的分层,优点是有利于维护。(2) Struts2来源于WebWork框架,是在WebWork框架基础上再与Struts1的优点进行整合而设计的新MVC分层框架。(3) Struts2的优点主要体现在解耦上,其他的附属技术也比Struts1有所加强,使用上更加方便快捷,如取消了Struts1的ActionForm及简化了配置文件的代码。(4) 在网站http:/struts.apache.org/上可以找到其全部相关资料,包括源代码、开发帮助文档、Java API 的使用帮助等。Struts 2与Struts 1相比,确实有很多革命性的改进,但它并不是新发布的新框

7、架,而是在另一个赫赫有名的框架:WebWork基础上发展起来的。从某种程度上来讲,Strut2没有继承Struts 1的血统,而是继承了WebWork的血统。或者说,WebWork衍生出了Struts 2,而不是Struts 1衍生了Struts 2。因为Struts 2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证;而且吸收了Struts 1和WebWork两者的优势,因此,是一个非常值得期待的框架。1.2.1 Struts2的框架架构从数据流图上来看,Struts 2与WebWork相差不大,Struts 2同样使用拦截器作为处理(Advice),以用

8、户的业务逻辑控制器为目标,创建一个控制器代理。控制器代理负责处理用户请求,处理用户请求时回调业务控制器的execute方法,该方法的返回值将决定了Struts 2将怎样的视图资源呈现给用户。图1.9显示了Struts 2的体系概图。Struts 2框架的大致处理流程如下:浏览器发送请求,例如请求/mypage.action、/reports/myreport.pdf等。核心控制器FilterDispatcher根据请求决定调用合适的Action。WebWork的拦截器链自动对请求应用通用功能,例如workflow、validation或文件上传等功能。回调Action的execute方法,该e

9、xecute方法先获取用户请求参数,然后执行某种数据库操作,既可以是将数据保存到数据库,也可以从数据库中检索信息。实际上,因为Action只是一个控制器,它会调用业务逻辑组件来处理用户的请求。Action的execute方法处理结果信息将被输出到浏览器中,可以是HTML页面、图像,也可以是PDF文档或者其他文档。此时支持的视图技术非常多,既支持JSP,也支持Velocity、FreeMarker等模板技术。1.2.2 Struts 2的配置文件当Struts 2创建系统的Action代理时,需要使用Struts 2的配置文件。Struts 2的配置文件有两份: 配置Action的struts.

10、xml文件。 配置Struts 2全局属性的struts.properties文件。struts.xml文件内定义了Struts 2的系列Action,定义Action时,指定该Action的实现类,并定义该Action处理结果与视图资源之间的映射关系。下面是struts.xml配置文件的示例: !- 配置Action返回input时转入/pages/Logon.jsp页面 /pages/Logon.jsp Welcome MainMenu ChangePassword Welcome 下面是struts.xml配置文件的示例:在上面的struts.xml文件中,定义了两个Action。定义A

11、ction时,不仅定义了Action的实现类,而且的定义Action的处理结果时,指定了多个result,result元素指定execute方法返回值和视图资源之间的映射关系。对于如下配置片段:Welcome表示当execute方法返回cancel的字符串时,跳转到Welcome的Action。定义result元素时,可以指定两个属性:type和name。其中name指定了execute方法返回的字符串,而type指定转向的资源类型,此处转向的资源可以是JSP,也可以是FreeMarker等,甚至是另一个Action这也是Struts 2可以支持多种视图技术的原因。除此之外,Struts 2还

12、有一个配置Struts 2全局属性的Properties文件:struts.properties。该文件的示例如下:#指定Struts 2处于开发状态struts.devMode = false/指定当Struts 2配置文件改变后,Web框架是否重新加载Struts 2配置文件struts.configuration.xml.reload=true正如上面见到的,struts.properties文件的形式是系列的key、value对,它指定了Struts 2应用的全局属性。1.2.3 Strut 2的标签库Struts 2的标签库也是Struts 2的重要组成部分,Struts 2的标签库

13、提供了非常丰富的功能,这些标签库不仅提供了表现层数据处理,而且提供了基本的流程控制功能,还提供了国际化、Ajax支持等功能。通过使用Struts 2的标签,开发者可以最大限度地减少页面代码的书写。看下面的JSP页面的表单定义片段: 名字: 年纪: 喜欢的颜色: 上面页面使用了传统的HTML标签定义表单元素,还不具备输出校验信息的功能,但如果换成如下使用Struts 2标签的定义方式: 则页面代码更加简洁,而且有更简单的错误输出。图1.10是上面使用Struts 2标签执行数据校验后的输出。 提示 Struts 2的标签库的功能非常复杂,该标签库几乎可以完全替代JSTL的标签库。而且Struts

14、 2的标签支持表达式语言,这种表达式语言支持一个强大和灵活的表达式语言:OGNL(Object Graph Notation Language),因此功能非常强大。1.2.4 Struts 2的控制器组件Struts 2的控制器组件是Struts 2框架的核心,事实上,所有MVC框架都是以控制器组件为核心的。正如前面提到的,Struts 2的控制器由两个部分组成:FilterDispatcher和业务控制器Action。实际上,Struts 2应用中起作用的业务控制器不是用户定义的Action,而是系统生成的Action代理,但该Action代理以用户定义的Action为目标。下面是Strut

15、s 2的Action代码示例:public class LoginAction /封装用户请求参数的username属性 private String username;/封装用户请求参数的password属性 private String password;/username属性的getter方法 public String getUsername() return username; /username属性的setter方法 public void setUsername(String username) this.username = username; /password属性的gett

16、er方法 public String getPassword() return password; /password属性的setter方法 public void setPassword(String password) this.password = password; /处理用户请求的execute方法 public String execute() throws Exception /如果用户名为scott,密码为tiger,则成功 if (getUsername().equals(scott) & getPassword().equals(tiger) ) return succes

17、s; else return error; 通过查看上面的Action代码,发现该Action比WebWork中的Action更彻底,该Action无需实现任何父接口,无需继承任何Struts 2基类,该Action类完全是一个POJO(普通、传统的Java对象),因此具有很好的复用性。归纳起来,该Action类有如下优势: Action类完全是一个POJO,因此具有很好的代码复用性。 Action类无需与Servlet API耦合,因此进行单元测试非常简单。 Action类的execute方法仅返回一个字符串作为处理结果,该处理结果可映射到任何的视图,甚至是另一个Action。第二章 开发环

18、境及相关技术的介绍2.1 JDK开发工具包(1)JDK开发工具包(一):rmic rmic 功能说明: rmic 为远程对象生成 stub 和 skeleton。 语法: rmic options package-qualified-class-name(s) 补充说明: rmic 编译器根据编译后的 Java 类(含有远程对象实现)名,为远程对象生成 stub 和 skeleton(远程对象是指实现 java.rmi.Remote 接口的对象)。在 rmic 命令中所给 的类必须是经 javac 命令成功编译且是完全包限定的类。 命令选项 -classpath路径 指定 rmic 用于查询类

19、的路径。如果设置了该选项,它将覆盖缺省值 或 CLASSPATH 环境变量。目录用冒号分隔。 -d目录 指定类层次的根目录。此选项可用来指定 stub 和 skeleton 文件的目标目录 。 -depend 使编译器考虑重新编译从其它类引用的类。 一般来说,它只重新编译从源代码 引用的遗漏或过期的类。 -g 允许生成调试表格。调试表格含有行号和局部变量的有关信息,即 Java 调试工具所 使用的信息。缺省情况下,只生成行号。 -J 与 -D 选项联用,它将紧跟其后的选项( -J 与 -D 之间无空格)传给 java 解释器 。 -keepgenerated 为 stub 和 skeleton

20、 文件保留所生成的 .java 源文件,并将这些源 文件写到与 .class 文件相同的目录中,如果要指定目录,则使用 -d 选项。 -nowarn 关闭警告。如果使用该选项,则编译器不输出任何警告信息。 -show 显示 rmic 编译器的 GUI(图形用户界面)。输入一个或多个包限定类名(以空 格分隔),并按回车键或“显示”按钮,创建 stub 和 skeleton。 -vcompat (缺省值)创建与 JDK 1.1 和 1.2 stub 协议版本都兼容的 stub 和 skele ton。 -verbose 使编译器和链接器输出关于正在编译哪些类和正在加载哪些类文件的信息。 -v1.1

21、 创建 JDK 1.1 stub 协议版本的 stub 和 skeleton。 -v1.2 只创建 JDK 1.2 stub 协议版本的 stub。(2)JDK开发工具包(二):rmid rmid 功能说明: rmid 启动激活系统守护进程,以便能够在 Java 虚拟机上注册和激活对象。 语法: rmid -port port -log dir 补充说明: rmid 工具启动激活系统守护进程。必须先启动激活系统守护进程,才能向激活系统注册 可被激活的对象或在 Java 虚拟机上激活可被激活的对象。 命令选项 -C 指定一个选项,在创建每个 rmid 的子守护进程(激活组)时,该 选项以命令行参

22、数的形式传给该子守护进程。 -log目录 指定目录的名称,激活系统守护进程在该目录中写入其数据库及相关信息。 缺省状态下,将在执行 rmid 命令的目录中创建一个 log 目录。 -port端口 指定 rmid 的注册服务程序所使用的端口。激活系统守护进程将 Activat ionSystem 与该注册服务程序中的名称java.rmi.activation.ActivationSystem 捆绑在 一起。 -stop 停止 -port 选项所指定端口上的当前 rmid 调用。若未指定端口,则将停止在端 口 1098 上运行的 rmid。(3)JDK开发工具包(三):rmiregistry rm

23、iregistry 功能说明: rmiregistry 命令可在当前主机的指定端口上启动远程对象注册服务程序。 语法: rmiregistry port 补充说明: rmiregistry 命令在当前主机的指定 port 上创建并启动远程对象注册服务程序。如果 省略 port,则注册服务程序将在 1099 端口上启动。rmiregistry 命令不产生任何输出 而且一般在后台运行。远程对象注册服务程序是自举命名服务。主机上的 RMI 服务器将 利用它将远程对象绑定到名字上。客户机即可查询远程对象并进行远程方法调用。注册 服务程序一般用于定位应用程序需调用其方法的第一个远程对象。该对象反过来对各

24、应 用程序提供相应的支持,用于查找其它对象。java.rmi.registry.LocateRegistry 类的 方法可用于在某台主机或主机和端口上获取注册服务程序操作。java.rmi.Naming 类的 基于 URL 的方法将对注册服务程序进行操作,并可用于查询远程对象、将简单(字符串 )名称绑定到远程对象、将新名称重新绑定到远程对象(覆盖旧绑定)、取消远程对象 的绑定以及列出绑定在注册服务程序上的 URL。(4)JDK开发工具包(四):serialver serialver 功能说明: serialver 命令返回 serialVersionUID。 语法: serialver 命令选

25、项 补充说明: serialver 以适于复制到演变类的形式返回一个或多个类的 serialVersionUID。不带参 数调用时,它输出用法行。 命令选项 -show 显示一个简单的用户界面。输入完整的类名并按回车键或“显示”按钮可显示 s erialVersionUID。(5)JDK开发工具包(五):jarsigner jarsigner 功能说明: 为 Java 归档 (JAR) 文件产生签名,并校验已签名的 JAR 文件的签名。 语法: jarsigner 命令选项 jar-file alias jarsigner -verify 命令选项 jar-file 补充说明: jarsign

26、er 工具用于两个目的: 1:为 Java 归档 (JAR) 文件签名 2:校验已签名的 JAR 文件的签名和完整性 命令选项 -keystoreurl 指定密钥仓库的 URL。缺省值是用户的宿主目录中的 .keystore 文件 ,它由系统属性“user.home”决定。 -storetypestoretype 指定要被实例化的密钥仓库类型。默认的密钥仓库类型是安全 属性文件中 keystore.type 属性值所指定的那个类型,由 java.security.KeyStore 中的静态方法 getDefaultType 返回。 -storepasspassword 指定访问密钥仓库所需的口

27、令。这仅在签名(不是校验)JAR 文 件时需要。在这种情况下,如果命令行中没有提供 -storepass 选项,用户将被提示输 入口令。 -keypasspassword 指定用于保护密钥仓库项(由命令行中指定的别名标出)的私钥的 口令。使用 jarsigner 为 JAR 文件签名时需要该口令。如果命令行中没有提供口令, 且所需的口令与密钥仓库的口令不同,则将提示用户输入它。 -sigfilefile 指定用于生成 .SF 和 .DSA 文件的基本文件名。 -signedjarfile 指定用于已签名的 JAR 文件的名称。 -verify 如果它出现在命令行中,则指定的 JAR 文件将被校

28、验,而不是签名。如果校验 成功,将显示“jar verified”。如果试图校验未签名的 JAR 文件,或校验被不支持的 算法(例如未安装 RSA 提供者时使用的 RSA)签名的 JAR 文件,则将有如下显示: jar is unsigned. (signatures missing or not parsable) 。 -certs 如果它与 -verify 和 -verbose 选项一起出现在命令行中,则输出将包括 JAR 文件的每个签名人的证书信息。 -verbose 如果它出现在命令行中,则代表“verbose”模式,它使 jarsigner 在 JAR 签名或校验过程中输出额外信息。

29、 -internalsf 过去,JAR 文件被签名时产生的 .DSA(签名块)文件包含一个同时产生的 .SF 文件(签名文件)的完整编码副本。这种做法已被更改。为了减小输出 JAR 文件 的整个大小,缺省情况下 .DSA 文件不再包含 .SF 文件的副本。但是如果 -internals f 出现在命令行中,将采用旧的做法。该选项主要在测试时有用;实际上不应使用它, 因为这样将消除有用的优化。 -sectionsonly 如果它出现在命令行中,则 JAR 文件被签名时生成的 .SF 文件(签名 文件)将不包括含有整个清单文件的散列的头。它仅包含 与 JAR 中每个单独的源文件 相关的信息和散列。

30、该选项主要在测试时有用;实际上不应使用它,因为这样将消除有 用的优化。 -Jjavaoption 将指定的 javaoption 串直接传递到 Java 解释器。((jarsigner 实 际上是解释器的一个 “wrapper”)。该选项不应含有任何空格。它有助于调整执行环 境或内存使用。要获得可用的解释器选项的清单,可在命令行键入 java -h 或 java - X。(6)JDK开发工具包(六):keytool keytool 功能说明: 管理由私钥和认证相关公钥的 X.509 证书链组成的密钥仓库(数据库)。还管理来自可 信任实体的证书。 语法: keytool 命令 补充说明: key

31、tool 是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书, 用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认 证服务。它还允许用户储存他们的通信对等者的公钥(以证书形式)。(7)JDK开发工具包(七):native2ascii native2ascii 功能说明: 将含有本地编码字符(既非 Latin1 又非 Unicode 字符)的文件转换为 Unicode 编码 字符的文件。 语法: native2ascii options inputfile outputfile 补充说明: Java 编译器和其它 Java 工具只能处理含有 Lati

32、n-1 和/或 Unicode 编码(udddd 记 号)字符的文件。native2ascii 将含有其它字符编码的文件转换成含 Latin-1 和/或 Unicode 编码字符的文件。若省略 outputfile,则使用标准输出设备输出。此外,如果 也省略 inputfile,则使用标准输入设备输入。 命令选项 -reverse 执行相反的操作:将含 Latin-1 和/或 Unicode 编码字符的文件转换成含本 地编码字符的文件。 -encodingencoding_name 指定转换过程使用的编码名称。缺省的编码从系统属性 fi le.encoding 中得到。(8)JDK开发工具包(

33、八):appletviewer appletviewer 功能说明: Java applet 浏览器。appletviewer 命令可在脱离万维网浏览器环境的情况下运行 ap plet。 语法: appletviewer threads flag 命令选项 urls . 补充说明: appletviewer 命令连接到 url 所指向的文档或资源上,并在其自身的窗口中显示文档 引用的每个 applet。注意:如果 url 所指向的文档不引用任何带有 OBJECT、EMBED 或 APPLET 标记的 applet,那么 appletviewer 就不做任何事情。 命令选项 -debug 在 J

34、ava 调试器 jdb 中启动 appletviewer,使您可以调试文档中的 applet。 -encoding编码名称 指定输入 HTML 文件的编码名称。 -Jjavaoption 将 javaoption 字符串作为单个参数传给运行 appletviewer 的 Java 解释器。参数不能含有空格。由多重参数组成的字符串,其中的每个参数都必须以前缀 -J 开头,该前缀以后将被除去。这在调整编译器的执行环境或内存使用时将很有用。(9)JDK开发工具包(九):extcheck extcheck 功能说明: extcheck 检测目标 jar 文件与当前安装方式扩展 jar 文件间的版本冲突

35、。 语法: extcheck -verbose targetfile.jar 补充说明: extcheck 实用程序检查指定 Jar 文件的标题和版本与 JDK TM 软件中所安装的扩展是 否有冲突。在安装某个扩展前,可以用该实用程序查看是否已安装了该扩展的相同版本 或更高的版本。 extcheck 实用程序将 targetfile.jar 文件清单的 specification-title 和 specifi cation-version 头与当前安装在扩展目录下所有 Jar 文件的相对应的头进行比较(缺 省扩展目录为 jre/lib/ext)。extcheck 实用程序比较版本号的方式与

36、java.lang.Pa ckage.isCompatibleWith 方法相同。若未检测到冲突,则返回代码为 0。如果扩展目录 中任何一个 jar 文件的清单有相同的 specification-title 和相同的或更新的 speci fication-version 号,则返回非零错误代码。如果 targetfile.jar 的清单中没有 sp ecification-title 或 specification-version 属性,则同样返回非零错误代码。 命令选项 -verbose 对扩展目录中的 Jar 文件进行检查时,列出文件。此外,还报告目标 jar 文 件的清单属性及所有冲突

37、的 jar 文件。(10)JDK开发工具包(十):jar jar 功能说明: Java归档工具 语法: jar 命令选项 manifest destination input-file input-files 补充说明: jar工具是个java应用程序,可将多个文件合并为单个JAR归档文件。jar是个多用途的存 档及压缩工具,它基于ZIP和ZLIB压缩格式。然而,设计jar的主要目的是便于将java a pplet或应用程序打包成单个归档文件。将applet或应用程序的组件(.class 文件、图像 和声音)合并成单个归档文件时,可以用java代理(如浏览器)在一次HTTP事务处理过程中 对它们进行下载,而不是对每个组件都要求一个新连接。这大大缩短了下载时间。jar还 能压缩文件,从而进一步提高了下载速度。此外,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁