【php精品源码栏目提醒】:网学会员为广大网友收集整理了,【精品】伍飞-毕业设计 - 其它资料,希望对大家有所帮助!
昆山登云科技职业学院实验报告 课程名: 《Struts2 下文件上传设计与实现》 题目: 《上传和下载》 班级: 计用一班 =#FF0000> 【精品】伍飞为[网学网-网友上传,谢谢支持]。 系、专业: 信息系计算机应用 姓名: 伍 飞 目录 第一章 绪 论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.1 设计上传的 JSP 页面3.3 控制层 3.3.1 设计上传文件的控制层代码 3.3.2 action 中 File 实例的命名规则 3.3.3 设置上传文件的大小 3.3.4 设计配置文件3.4 运行结果 第四章 Struts2 文件的上传总结参考文献 第一章 绪论1.1 MVC 的简介 MVCModel View Controller模型 -视 图-控 制器 MVC 本来 是存在 于 Desktop 程序中 的,M 是 指数 据模型 ,V 是 指用户 界面, C 则 是控制 器。
使用 MVC copyright: Apple Inc.的目的 是将 M 和 V 的 实现代 码分 离,从 而使同 一个 程序可 以使 用不同 的表 现形式 。
比如一 批统计 数据你 可以 分别用 柱状 图、饼图 来表示。
C 存 在的目 的则 是确 保 M 和 V的同步 ,一旦 M 改 变,V 应该同 步更 新。
模型- 视图- 控制器 (MVC) 是 Xerox PARC 在 八十 年代为 编程语 言 Smalltalk-80 发 明的一 种软 件设计 模式 ,至今 已被广 泛使 用。
最 近几年 被推 荐为 Oracle 旗下Sun 公司 Java EE 平 台的 设计模 式,并且受 到越 来越多 的使用 ColdFusion 和
PHP 的开发者 的欢迎 。
模 型- 视图- 控制 器模式 是一个 有用 的工具 箱 ,它有 很多 好处 ,但也有一些 缺点。
MVC 是 一个 设计模 式,它强 制性 的使应 用程序 的输 入、处理 和输出 分开。
使用 MVC应用程 序被分 成三个 核心 部件: 模型 、视图 、控制 器。
它们各 自处 理自己 的任务 。
视图 视 图是用 户看到 并与 之交互 的界 面。
对 老式 的 Web 应 用程序 来说 , 视图就 是由HTML 元素组 成的界 面, 在新式 的 Web 应 用程 序中, HTML 依旧 在视 图 中扮演 着重要的角 色,但 一些新 的技 术已层 出不 穷,它 们包括 Macromedia Flash 和象 XHTML,XML/XSL, WML 等一 些标 识语言 和 Web services. 如 何处理 应用 程序 的界面 变得 越来越 有挑 战性。
MVC 一 个大 的好处 是它能 为你的应用 程序处 理很多 不同 的视图 。
在 视图中 其实 没有真 正的处 理发 生,不 管这些 数据是联机 存储的 还是一 个雇 员列表 ,作 为视图 来讲 ,它只 是作 为一种 输出 数 据并允 许用户操纵 的方式 。
模型 模 型表示 企业数 据和 业务规 则。
在 MVC 的 三个部 件中 ,模型 拥有 最 多的处 理任务。
例 如它可 能用象 EJBs 和 ColdFusion Components 这 样的构 件对象 来处 理数据 库。
被模型 返回的 数据是 中立 的,就 是说 模型与 数据 格式无 关,这样一 个模 型 能为多 个视图提供 数据。
由于 应用于 模型的 代码 只需写 一次 就可以 被多个 视图 重用 ,所以减 少了代码的 重复性 。
控制器 控制器接受用户的输入并 调用模型和视图去完成 用户的需求。
所以 当单击Web 页面 中的超 链接 和发 送 HTML 表单 时,控 制器本 身不 输出任 何东 西 和做任 何处理。
它 只是接 收请 求并决 定调用 哪个 模型构 件去 处理请 求,然后再 确定 用 哪个视 图来显示返 回的数 据。
1.2 Struts2 的开发论述 (1) 基于 MVC 模式的 Java EE 技术 Web 开发框架,可以对使用 Java EE 技术的 Web 项目开发进行代码的分层,优点是有利于维护。
(2) Struts2 来源于 WebWork 框架,是在 WebWork 框架基础上再与 Struts1 的优点进 行整合而设计的新 MVC 分层框架。
(3) Struts2 的优点主要体现在解耦上,其他的附属技术也比 Struts1 有所加强,使 用上更加方便快捷,如取消了 Struts1 的 ActionForm 及简化了配置文件的代码。
(4) 在网站
【精品】伍飞为[网学网-网友上传,谢谢支持]。上可以找到其全部相关资料,包括源代码、 开发帮助文档、Java API 的使用帮助等。
Struts 2 与 Struts 1 相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个赫赫有名的框架: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),以用户的业务逻辑控制器为目标,创建一个控制器代理。
控制器代理负责处理用户请求,处理用户请求时回调业务控制器的 execute 方法,该方法的返回值将决定了 Struts 2 将怎样的视图资源呈现给用户。
图 1.9 显示了 Struts 2 的体系概图。
Struts 2 框架的大致处理流程如下: 浏览器发送请求,例如请求/mypage.action、/reports/myreport.pdf 等。
核心控制器 FilterDispatcher 根据请求决定调用合适的 Action。
WebWork 的拦截器链自动对请求应用通用功能,例如 workflow、validation 或文件上传等功能。
回调 Action 的 execute 方法,该 execute 方法先获取用户请求参数,然后执行某种数据库操作,既可以是将数据保存到数据库,也可以从数据库中检索信息。
实际上,因为 Action 只是一个控制器,它会调用业务逻辑组件来处理用户的请求。
Action 的 execute 方法处理结果信息将被输出到浏览器中,可以是 HTML 页面、图像,也可以是 PDF 文档或者其他文档。
此时支持的视图技术非常多,既支持 JSP,也支持 Velocity、FreeMarker 等模板技术。
1.2.2 Struts 2 的配置文件 当 Struts 2 创建系统的 Action 代理时,需要使用 Struts 2 的配置文件。
Struts 2 的配置文件有两份:— 配置 Action 的 struts.xml 文件。
— 配置 Struts 2 全局属性的 struts.properties 文件。
struts.xml 文件内定义了 Struts 2 的系列 Action,定义 Action 时,指定该 Action 的实现类,并定义该 Action 处理结果与视图资源之间的映射关系。
下面是 struts.xml 配置文件的示例:ltstrutsgt lt-- Struts 2 的 Action 都必须配置在 package 里 --gt ltpackage namequotdefaultquot extendsquotstruts-defaultquotgt 下面是 struts.xml 配置文件的示例: lt-- 定义一个 Logon 的 Action,实现类为 lee.Logon --gt ltaction namequotLogonquot classquotlee.Logonquotgt lt-- struts.xml 返回 input 时转入/pages/Logon.jsp 页面 在上面的 配置 Action 文件中,定义了两个 Action。
定义 Action 时,不仅定义了 Acti ltresult namequotinputquotgt/pages/Logon.jsplt/resultgt on 的实现类,而且的定义 Action 的处理结果时,指定了多个 result,result 元素指定 ex lt-- 配置 Action 返回 cancel 时重定向到 Welcome 的 Action--gt ecute 方法返回值和视图资源之间的映射关系。
对于如下配置片段: ltresult namequotcancelquot typequotredirect-actionquotgtWelcomelt/resultgt ltresult namequotcancelquot typequotredirect-actionquotgtWelcomelt/resultgt lt-- 配置 Action 返回 success 时重定向到 MainMenu 的 Action --gt 表示当 execute 方法返回 cancel 的字符串时,跳转到 Welcome 的 Action。
定义 resul ltresult typequotredirect-actionquotgtMainMenult/resultgt t 元素时,可以指定两个属性: 时进入 ChangePassword 的 Action 链 --gt 其 lt-- 配置 Action 返回 expiredtype 和 name。
中 name 指定了 execute 方法返回的字符串, 而 type 指定转向的资源类型,此处转向的资源可以是 JSP,也可以是 FreeMarker 等,甚至 ltresult namequotexpiredquot typequotchainquotgtChangePasswordlt/resultgt 是另一个 Action——这也是 Struts 2 可以支持多种视图技术的原因。
lt/actiongt 除此之外,Struts 2 还有一个配置 Struts 2 全局属性的 Properties 文件:struts.pr lt-- 定义 Logoff 的 Action,实现类为 lee.Logoff --gt operties。
该文件的示例如下: ltaction namequotLogoffquot classquot lee.Logoffquotgt lt-- 配置 Action 返回 success 时重定向到 MainMenu 的 Action --gt 指定 Struts 2 处于开发状态 ltresult typequotredirect-actionquotgtWelcomelt/resultgt struts.devMode false //指定当 Struts 2lt/actiongt 配置文件改变后,Web 框架是否重新加载 Struts 2 配置文件 lt/packagegt struts.configuration.xml.reloadtruelt/strutsgt 正如上面见到的,struts.properties 文件的形式是系列的 key、value 对,它指定了 S truts 2 应用的全局属性。
1.2.3 Strut 2 的标签库 Struts 2 的标签库也是 Struts 2 的重要组成部分,Struts 2 的标签库提供了非常丰富的功能,这些标签库不仅提供了表现层数据处理,而且提供了基本的流程控制功能,还提供了国际化、Ajax 支持等功能。
通过使用 Struts 2 的标签,开发者可以最大限度地减少页面代码的书写。
看下面的 JSP 页面的表单定义片段:lt-- 定义一个 Action --gtltform methodquotpostquot actionquotbasicvalid.actionquotgt lt-- 下面定义三个表单域 --gt 名字:ltinput typequottextquot namequotnamequot/gtltbrgt 年纪:ltinput typequottextquot namequotagequot/gtltbrgt 喜欢的颜色:ltinput typequottextquot namequotfavoritequot/gtltbrgt lt-- 定义一个输出按钮 --gt ltinput typequotsubmitquot valuequot提交quot/gtlt/formgt 上面页面使用了传统的 HTML 标签定义表单元素,还不具备输出校验信息的功能,但如果换成如下使用 Struts 2 标签的定义方式:lt-- 使用 Struts 2 标签定义一个表单 --gtlts:form methodquotpostquot actionquotbasicvalid.actionquotgt lt-- 下面使用 Struts 2 标签定义三个表单域 --gt lts:textfield labelquot名字quot namequotnamequot/gt lts:textfield labelquot年纪quot namequotagequot/gt lts:textfield labelquot喜欢的颜色quot namequotanswerquot/gt lt-- 定义一个提交按钮 --gt lts:submit/gtlt/s:formgt 则页面代码更加简洁, 图 而且有更简单的错误输出。
1.10 是上面使用 Struts 2 标签执行数据校验后的输出。
提示 Struts 2 的标签库的功能非常复杂,该标签库几乎可以完全替代 JSTL 的 标签库。
而且 Struts 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 为目标。
下面是 Struts 2 的 Action 代码示例:public class LoginAction //封装用户请求参数的 username 属性 private String username //封装用户请求参数的 password 属性 private String password //username 属性的 getter 方法 public String getUsername return username //username 属性的 setter 方法 public void setUsernameString username 通过查看上面的 Action 代码,发现该 Action 比 WebWork 中的 Action 更彻底,该 Action 无需实现任何父接口,无需继承任何 Struts 2 基类,该 Action 类完全是一个 POJO(普通、传统的 Java 对象),因此具有很好的复用性。
归纳起来,该 Action 类有如下优势:— Action 类完全是一个 POJO,因此具有很好的代码复用性。
— Action 类无需与 Servlet API 耦合,因此进行单元测试非常简单。
— Action 类的 execute 方法仅返回一个字符串作为处理结果,该处理结果可映射到任何的视图,甚至是另一个 Action。
第二章 开发环境及相关技术的介绍 2.1 JDK 开发工具包(1)JDK 开发工具包(一):rmicrmic功能说明:rmic 为远程对象生成 stub 和 skeleton。
语法:rmic options package-qualified-class-names补充说明:rmic 编译器根据编译后的 Java 类(含有远程对象实现)名,为远程对象生成 stub 和 。
在 rmic 命令中所给skeleton(远程对象是指实现 java.rmi.Remote 接口的对象)的类必须是经 javac 命令成功编译且是完全包限定的类。
命令选项-classpath路径 指定 rmic 用于查询类的路径。
如果设置了该选项,它将覆盖缺省值或 CLASSPATH 环境变量。
目录用冒号分隔。
-d目录 指定类层次的根目录。
此选项可用来指定 stub 和 skeleton 文件的目标目录。
-depend 使编译器考虑重新编译从其它类引用的类。
一般来说,它只重新编译从源代码引用的遗漏或过期的类。
-g 允许生成调试表格。
调试表格含有行号和局部变量的有关信息,即 Java 调试工具所使用的信息。
缺省情况下,只生成行号。
-J 与 -D 选项联用,它将紧跟其后的选项( -J 与 -D 之间无空格)传给 java 解释器。
-keepgenerated 为 stub 和 skeleton 文件保留所生成的 .java 源文件,并将这些源文件写到与 .class 文件相同的目录中,如果要指定目录,则使用 -d 选项。
-nowarn 关闭警告。
如果使用该选项,则编译器不输出任何警告信息。
-show 显示 rmic 编译器的 GUI(图形用户界面) 。
输入一个或多个包限定类名(以空格分隔),并按回车键或“显示”按钮,创建 stub 和 skeleton。
-vcompat (缺省值)创建与 JDK 1.1 和 1.2 stub 协议版本都兼容的 stub 和 skeleton。
-verbose 使编译器和链接器输出关于正在编译哪些类和正在加载哪些类文件的信息。
-v1.1 创建 JDK 1.1 stub 协议版本的 stub 和 skeleton。
-v1.2 只创建 JDK 1.2 stub 协议版本的 stub。
:rmid(2)JDK 开发工具包(二)rmid功能说明:rmid 启动激活系统守护进程,以便能够在 Java 虚拟机上注册和激活对象。
语法:rmid -port port -log dir补充说明:rmid 工具启动激活系统守护进程。
必须先启动激活系统守护进程,才能向激活系统注册可被激活的对象或在 Java 虚拟机上激活可被激活的对象。
命令选项-Clt某些命令行选项gt 指定一个选项,在创建每个 rmid 的子守护进程(激活组)时,该选项以命令行参数的形式传给该子守护进程。
-log目录 指定目录的名称,激活系统守护进程在该目录中写入其数据库及相关信息。
缺省状态下,将在执行 rmid 命令的目录中创建一个 log 目录。
-port端口 指定 rmid 的注册服务程序所使用的端口。
激活系统守护进程将 ActivationSystem 与该注册服务程序中的名称 java.rmi.activation.ActivationSystem 捆绑在一起。
-stop 停止 -port 选项所指定端口上的当前 rmid 调用。
若未指定端口,则将停止在端口 1098 上运行的 rmid。
:rmiregistry(3)JDK 开发工具包(三)rmiregistry功能说明:rmiregistry 命令可在当前主机的指定端口上启动远程对象注册服务程序。
语法:rmiregistry port补充说明:rmiregistry 命令在当前主机的指定 port 上创建并启动远程对象注册服务程序。
如果省略 port,则注册服务程序将在 1099 端口上启动。
rmiregistry 命令不产生任何输出而且一般在后台运行。
远程对象注册服务程序是自举命名服务。
主机上的 RMI 服务器将利用它将远程对象绑定到名字上。
客户机即可查询远程对象并进行远程方法调用。
注册服务程序一般用于定位应用程序需调用其方法的第一个远程对象。
该对象反过来对各应用程序提供相应的支持,用于查找其它对象。
java.rmi.registry.LocateRegistry 类的方法可用于在某台主机或主机和端口上获取注册服务程序操作。
java.rmi.Naming 类的基于 URL 的方法将对注册服务程序进行操作,并可用于查询远程对象、将简单(字符串)名称绑定到远程对象、将新名称重新绑定到远程对象(覆盖旧绑定)、取消远程对象的绑定以及列出绑定在注册服务程序上的 URL。
:serialver(4)JDK 开发工具包(四)serialver功能说明:serialver 命令返回 serialVersionUID。
语法:serialver 命令选项 补充说明:serialver 以适于复制到演变类的形式返回一个或多个类的 serialVersionUID。
不带参数调用时,它输出用法行。
命令选项-show 显示一个简单的用户界面。
输入完整的类名并按回车键或“显示”按钮可显示 serialVersionUID。
:jarsigner(5)JDK 开发工具包(五)jarsigner功能说明:为 Java 归档 JAR 文件产生签名,并校验已签名的 JAR 文件的签名。
语法:jarsigner 命令选项 jar-file aliasjarsigner -verify 命令选项 jar-file补充说明:jarsigner 工具用于两个目的:1:为 Java 归档 JAR 文件签名2:校验已签名的 JAR 文件的签名和完整性命令选项-keystoreurl 指定密钥仓库的 URL。
缺省值是用户的宿主目录中的 .keystore 文件,它由系统属性“user.home”决定。
-storetypestoretype 指定要被实例化的密钥仓库类型。
默认的密钥仓库类型是安全属性文件中 quotkeystore.typequot 属性值所指定的那个类型,由 java.security.KeyStore中的静态方法 getDefaultType 返回。
-storepasspassword 指定访问密钥仓库所需的口令。
这仅在签名(不是校验)JAR 文件时需要。
在这种情况下,如果命令行中没有提供 -storepass 选项,用户将被提示输入口令。
-keypasspassword 指定用于保护密钥仓库项(由命令行中指定的别名标出)的私钥的口令。
使用 jarsigner 为 JAR 文件签名时需要该口令。
如果命令行中没有提供口令,且所需的口令与密钥仓库的口令不同,则将提示用户输入它。
-sigfilefile 指定用于生成 .SF 和 .DSA 文件的基本文件名。
-signedjarfile 指定用于已签名的 JAR 文件的名称。
-verify 如果它出现在命令行中,则指定的 JAR 文件将被校验,而不是签名。
如果校验 。
如果试图校验未签名的 JAR 文件,或校验被不支持的成功,将显示“jar verified”算法(例如未安装 RSA 提供者时使用的 RSA)签名的 JAR 文件,则将有如下显示: quotjar is unsigned. signatures missing or not parsablequot 。
-certs 如果它与 -verify 和 -verbose 选项一起出现在命令行.
上一篇:
【精品】面向对象
下一篇:
年产30000吨味精厂发酵罐的设计与选型