英语原文共 4 页,剩余内容已隐藏,支付完成后下载完整资料
基于J2EE的Web应用中MVC模型、Struts框架和文件上传问题
约翰沃伊茨豪斯基萨科维奇杜拉纳皮尔斯基
微电子和计算机科学系,
波兰埃比迪技术大学
摘要:本文描述了基于J2EE中的MVC模型、Struts框架和文件上传问题。 因特网使用J2EE平台的开发使得互联网技术的发展变得标准化。国际办公室TUL互联网服务项目也是基于上述的应用环境,项目的规格与国际办公室的设计人员操作有着重要的联系。本文介绍MVC的使用方法基于开源实例的JZEE平台模型研究apachenomore应用程序服务器和数据库管理系统。
关键词:MVC,Struts,JZEE,JSP,小服务程序,文件上传,Java, Tomcat.
一、导言
J2EE与java语言密不可分,在Java 2平台在可以成功创建一个强大的、坚固的、独立于硬件的交互式动态系统网站。J2EE是一个多层工作的平台体系结构、分层系统服务集JZEE应用程序,在以下方面始终可用于实施:J2EE可以在自身以及比自身版本高的平台上进行运行,在主机可操作主要的系统。在Web层中,J2EE Web容器提供与服务Web请求相关的服务,根据应用客户端使用设计的系统唯一所需J2EE标准是一个WWW浏览器。由于整个系统位于服务器上,而不是客户端的计算机上,系统可以轻松高效地升级和开发。Java语言的核心功能是多任务处理和实现应用程序时的完全控制成为针对web的解决方案的非正式标准,它还通过浏览器访问接口组合异构应用程序。
二 、多层应用框架设计
模型-视图-控制器(“MVC”)是体系结构交互式应用程序的设计模式。制造业增值组织交互式应用程序分为三个单独的模块,第一个应用模型其数据表示和业务逻辑,第二个用于提供数据表示和用户输入,第三个用于控制器调度请求和控制流程。大多数Web层应用程序框架使用转变类型的MVC设计模式。
模型1体系结构由一个Web组成浏览器直接访问网页层的JSP页面。联合战略计划网页访问表示应用程序的Web层Java语言模型,并且要显示的下一个在源文档中或按请求选择的超链接参数视图,模型1应用控制分散,因为正在显示的当前页面可以确定下一页要显示的页面。此外,每个JSP页面或servlet的输入都由自己处理(来自GET或POST的参数)。这种方法对互联网应用的管理项目有好处,在国际互联网服务公司的项目中得到了实施,但整体的结构——沟通的背景模型必须由程序员设计,这项技术是为了高级开发人员所应用的。
图1多视图模型1
模型2架构[1][2]介绍了一个控制器小服务程序放置在浏览器和JSP页面。控制器可以控制根据请求的URL、输入参数和应用程序状态。模型2应用程序更易于维护和扩展,因为视图不直接引用彼此。模型2控制器servlet为提供单点控制安全性和日志记录,并将封装传入的数据转换为后端MVC模型可用的形式。
三、支柱框架
MVC应用程序工作可以大大简化实现模型2应用程序。应用程序框例如Apache Struts [ 2 ]和JavaSeNer FacesTM 中的一个可配置前端confxoller小服务程序,可以提供抽象类扩展到处理请求派单。key方案基于用于处理请求的servlets,并且选择视图。前端控制器架构设计模式集中应用程序的请求处理可以查看单个组件中的选择,每种类型的网络客户端向单个URL发送请求和从单个URL接收响应,这简化了客户端开发,将前控制器接收来自客户端的请求并将其分派给应用模型。在J2EE平台中,前控制器通常实现为一个sewlet,示例应用程序的前端控制器servlet处理所有的HTTP请求。
视图: JSP页和演示文稿
基于关闭的应用程序的视图部分是通常使用JavaServer页面( JSP )构建技术。JSP页面可以包含静态的超文本标记语言环境,也可以包含一组标准动作标签,例如lt;jsp:useBeangt; 。除了内置操作之外,还有一个用于定义您自己的标记的标准设施进入“自定义标记库”。
模型:商业逻辑
该模型主要是逻辑的应用程序所以不支持关闭,因为逻辑依赖于申请的目的。无论如何,模型应该是与两层分离。这不是很难获得分离,因为我们可以将模型编程为单个对象,而不关注Internet应用程序的其余部分。
控制器:动作servlet和动作映射聚焦
应用程序的控制器部分在接收到来自客户端(通常是运行的用户web浏览器)消息,决定什么是业务逻辑功能执行,然后委派生产责任用户界面的下一阶段到适当的视图组成部分。在Struts中的主要组件控制器是类操作sewlet的一个小服务程序初始化时,控制器解析配置文件(struts-config.xml) ,并使用它进行部署其他控制层对象,这些对象一起形成关闭配置。支柱配置定义(除其他外)动作映射应用程序的控制器小服务程序查询将HTTP请求路由到其他请求时的操作映射框架中的组件。通常,首先是请求转发到操作,然后转发到JSP (或其他介绍页)。映射有助于控制器将HTTP请求转换为应用程序操作。
四、STRUTS文件上传示例
文件上载必须使用HTML表单启动包括类型文件的lt;inputgt;元素,默认指定的值或bean的指定属性与我们当前的表单相关联。与对应的HTML lt; input gt;元素,封闭表单元素必须指定的“POST”方法属性和'multipart/form-data' 附件类型属性。例如:
lt;html:form method=“POST”enctype=”multipart/form-date”gt;
lt;html:file property=”theFile”/gt;
lt;/html:formgt;
处理多部分表单将提供多个“文件”类型的输入。创建多部分表单的第一步是要使用struts-html 标记库创建演示页面,请执行以下操作:
FormFile类提供了操作文件的方法,在文件上传中,检索应该调用的表单文件方法在行动类。
五、用BEAN上传文件
上传表单文件的作用是如下所述。HTTP请求至关重要,因为在处理上传的文件时,使用获得的原始数hnspervletrequest对象的方法(例如servletlputstream in= resquset.getlputstream ( );
客户部分
Multipadform-data 定义新的MIME媒体类型[ 4 ]并指定HTML用户代理在以下情况下的行为使用enctype = multipdform-data 或解释表单lt;input type=“file”gt;标记。一个HTML表单应该具有enctype参数根据RFC 1867 '基于表单的文件上传'文件。顺便说一下,Struts定义了它自己的标记,例如在上面的例子中所以如果我们不使用这个框架应该执行以下代码:
当遇到“file”类型的输入标记时,浏览器可能显示以前选择的文件名和“浏览”按钮或选择方法。如果用户将一个文件( filel . txt )指示为响应,客户端可能会发回以下数据[ 3 ] (中省略了HTTP标头) :
如果用户指示用于答案的两个文件(filel.txt and file2.gi0),客户端可能会将以下是数据[ 3 ] (省略了HTTP标头) :
测试设备接口
服务请求接口是一个通用接口,它由HttpServletRequest扩展以请求HTTP小服务程序的信息。hnspervletrequest接口具有以下特点:公共接口扩展服务请求Servlet容器创建一个HttpServletRequest对象并将它作为参数传递给Servlet的服务方法(doGet, doPost, etc)。在提出的实施方案中HttpServletRequest对象是由Servlet / JSP创建的容器,并传递给文件上载Bean以便进一步处理。此对象表示包含表单和上载文件中的元素名称-值,此方法是从获取servletlputstream对象开始使HttpServletRequest中的getlnputStieam方法,可以执行操作对象。这些输入值通过分隔符称为边界,此分隔符由破折号字符后跟一个随机数。所有HTML表单元素都以边界开头后面是列字符。
内容配置:形式数据
名称和表单元素有两种类型:文件和非文件(文本或隐藏元素等常规表单元素),两者之间的差异基于文件元素,其中包含以下字符串Filename=rsquo;filenamersquo;因此,这些信息使我们能够区分文件从非文件输入使用以下两个'if statements'。
如果发送更多文件,情况会更复杂,但这一问题在本文中将不予讨论;在解析指示适当读取的命令之后文件上载bean的位置,程序应写文件到磁盘。
文件保存的位置取决于是否设置了rwcl的“ntlr”字段。如果未设置,其值为空,文件应保存在默认目录。如果设置了信用证,信用证字段,其值不会为空,因此必须将上载的文件上载到给定目录[ 3 ]。然后,我们可以使用一段时间来提取文件内容一次读取一行并使用将其写入磁盘的循环列印写入器的写入方法。文件的最后一行包括两个回车符。因此,保存到磁盘的字节不得包括这两个字节字符。如果行读取不是文件的最后一行,将读取的所有字节写入磁盘。如果是,则写入所有字节读最后两个字符。下一行是文件内容的另一行边界。如果文件是最后一个HTh4L表单元素,则下一行是边界,后面跟着两个破折号字符。因此,通过检查下一行是否是边界我们将知道如何退出while循环。到确定文件的结尾可以比较字节数组,后者应等于边界长度 2。如果它是I ittpseivlpiilletluep中的最后一行对象,它应该等于边界长度 4,因为最后两个破折号字符。
六、参考
[1]J.Goodwill,PURE Java server Pages,Sams,Paperback,Published JUNE 2000
[2]The Apache Jakarta Project-docunmentation, http://jakarta.apache.org/struts/
[3]B.KARNIVAN,”Uploading File with Beans” http://www.oreillynet.com/pub/au/136
[4]Network Working Group,RFC 1867-Form-based File Upload in HTML,November 1995,http://www.faas.ore/rfcs/
[5]The Struts console http://www.jamesholmes.com/struts/console/
七、结论
本文介绍的模型-视图-控制器(MVC)对于servlets方法是是一种设计,手动调节通过自己的方案模拟到因特网应用中或使用struts实现。将此模型应用于我们的代码将无疑是把表示层和逻辑层分开使其更加灵活和可扩展。在struts框架上强制运行。程序员面向对象编程技术,从而减少代码。虽然Struts不是J2EE平台的一部分,但提出了很好的解决方案,尤其是当项目变得越来越大,方法就更具有优势。当然支柱也有一些缺点,它的弱点是对于用户而言的,互联网驱动应用程序的程序员应考虑并发事件驱动的Java服务器面对环境。struts标记库支持文件上载,但可以由程序员自己实现。
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[23477],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。