英语原文共 4 页,剩余内容已隐藏,支付完成后下载完整资料
MVC Model, Struts Framework and File upload Issues in
. .
Web Applications Based on J2EE Platform
-J.Wojciechowski, B.Sakowicz, K.Dura, A. Napieralski Department of Microelectronics and Computer Science, Technical University ofL6dz, Poland
本文描述了基于J2EE平台的Web应用程序,指出了MVC模型、Struts框架和文件上传问题。标准化互联网应用程序实现中使用的主题机制的意愿基于J2EE平台开发的基础背景。
国际办公室TUL互联网服务项目是基于上述环境的应用程序。 该项目的规格与国际办公室工作人员的活动和需求密切相关。 本文以开放源代码Apacherfomcat应用服务器和数据库管理系统systein MySql为例,介绍了在J2EE平台上使用MVC模型的情况。
关键词:MVC, Struts, J2EE, JSP, servlet, file upload,JavaBeans, TO~Cat.,
- 导言
J2EE规范与Java语言密不可分。基于Java 2 platfonn的解决方案创建了一个强大,牢固,独立于硬件的基础,人们可以在此基础上成功构建提供交互式和动态Internet站点的系统。 J2EE是在多层环境中工作的平台体系结构,分层服务跨平台实现始终可用于J2EE应用程序。 J2EE平台在其本身运行的J2SE平台之上运行。在主机操作系统之上。在Web层中,J2EE Web容器提供与服务Web请求相关的服务。客户使用根据J2EE标准设计的系统所需的原始应用程序是WWW浏览器。由于整个系统是位于服务器而不是客户端计算机上的新系统可以轻松,高效地升级和开发。 Java语言以其核心功能(即实现应用程序时的多任务处理和完全控制)成为Web解决方案的基本标准,并且还通过CORRA结合了异构应用程序
- MVC-Web层应用框架设计
模型视图控制器(“ MVC”)是用于交互式应用程序的体系结构设计模式。 MVC将交互式应用程序组织为三个独立的模块:一个用于具有数据表示和业务逻辑的应用程序模型,第二个用于提供数据表示和用户输入的视图,第三个用于控制器调度请求和控制流。大多数Web层应用程序框架使用MVC设计模式的某些变体。
模型I体系结构[1][2]由直接访问Web层JSP页面的Web浏览器组成。 JSP页面访问代表应用程序模型的Web层JavaBean,并且要显示的下一个视图是由源文档中选择的超链接或请求参数确定的。由于正在显示的当前页面确定了要显示的下一页,因此Model I应用程序控件是分散的。另外,每个JSP页面或servlet处理自己的输入(来自GET或POST的参数)。
这种方法在国际办公室TUL Internet服务项目中部分实现。 Internet应用程序管理的这种方法适用于小型项目,但整个通信模型的结构背景必须由程序员设计。此技术仅仅只适用于高级开发人员
模型2体系结构[2]引入了一种稍有不同的方法,其中将控制器servlet放置在浏览器和JSP页面之间。 控制器基于请求的URL,输入参数和应用程序的状态集中处理将请求派发到下一个页面。Model 2应用程序更易于维护和扩展,因为页面不会直接相互引用。 模型2控制器Servlet提供了用于安全性和日志记录的单点控制,并且通常将传入的数据封装到后端MVC模型可用的格式中。
- Structs框架
MVC应用程序框架可以大大简化实施Model 2应用程序的过程。 诸如Apache Struts [2]和JavaServer Facestrade;(可配置的前端控制器servlet)之类的应用程序框架提供了可以扩展以处理请求分派的抽象类。 核心的方案基于Servlet,其用于处理请求和选择视图。 Front Controller架构设计模式将应用程序的请求处理和页面选择集中在一个组件中。 每种类型的Web客户端都向单个URL发送请求并从中接收响应,这简化了客户端开发。 前端控制器从客户端接收请求,然后将它们调度到应用程序模型。
在J2EE平台中,前端控制器通常实现为servlet。 样本应用程序的Front Controller Servlet处理所有HTTP请求。
页面视图:JSP页面和演示
基于Struts的应用程序的“视图”部分通常是使用JavaServer Pages(JSP)技术构建的。 JSP页面可以包含静态HTML JSP环境包括一组标准的action·标签,例如lt;jsp:useBeangt;。 除了内置动作之外,还有一个标准的方法去定义您自己的标签,这些标签将被组织到“自定义标签库”中,供于使用。
应用程序模型:业务逻辑
该模型主要是应用程序的逻辑,因此Struts不支持该模型,因为逻辑取决于应用程序的目的。 无论如何,模型应与两层分开。 获得分离并不是很困难,因为我们可以将模型作为单个对象进行编程,而无需关注Internet应用程序的其余部分。
控制器:ACTIONSERVLET和ACTIONMAPPING
应用程序的控制器部分专注于从客户端(通常是运行Web浏览器的用户)接收请求,确定要执行的业务逻辑功能,然后将负责将用户界面的下一个阶段产生的职责派发给适当的用户视图组件。 在Struts中,控制器是ActionServlet类的Servlet。
初始化后,控制器将解析配置文件(struts-config.xml)同时使用它来部署其他控制层对象。 这些对象一起构成Struts配置。 Struts配置(其中包括)为应用程序定义了ActionMappings [org.apache.struts.action.ActionMappings]。
Struts控制器Servlet在将HTTP请求发送到框架中的其他组件时会查询ActionMappings。 通常,会首先将请求转发给Action,然后转发给JSP(或其他表示页面)。 映射帮助控制器会将HTTP请求转换为应用程序操作。
- STRUTS文件上传示例
文件上传必须以HTML表单开始,该表单包括tile类型的lt;inputgt;元素,默认为与当前表单相关联的bean的指定值或指定属性。 对于相应的HTML lt;inputgt;元素,封闭的form元素必须指定“ POST”方法属性,并且必须为“ multipart / form-data”指定enctype属性。 例如:
lt;htrnl:form method='POST' enctype='multipart/form-data'gt;
lt;html:file property='theFile' /gt;
lt;/htrnl:formgt;
处理多部分表单是要提供多个“文件”类型的输入。 创建多部分表单的第一步是利用struts-html taglib创建演示页面:
lt;%@page language='java'gt;
%@taglib uri='!WEB-INF!struts-html.tld' .prefix='html '
lt;html:form action='uploadAction.do'gt;
Please Input Text:
lt;html:text property='myText'gt;lt;br/gt;
Please Input The File You Wish to Upload:lt;br/gt; lt;html:file property='myFile'gt;lt;br /gt;
lt;htrnl:submit /gt; · ·
lt;/html:formgt;
·
下一步是创建ActionForm bean:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServietResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FonnFile;
public class UploadForm extends ActionForm {
protected String myText;
protected FormFile myFile;
public void setMyText(String text) {
myText = text;
l
public String getMyText() {
return myText;
l
public void setMyFile(FormFile file) { myFile = file;
}
public FormFile getMyFile() {
return my File;
)
FormFile类提供了在文件上传中操作文件的方法。 想要恢复FormFile应在action类中调用一个方法(znowu nie rozumiem!)
((UploadForm) form).getMyFile();
- 使用BEAN上传文件
org.apache.struts.upload.FormFile的作用如下所述。 HTTP请求至关重要,因为处理上传的文件时,您需要处理从HttpServletRequest对象的方法(例如
ServletlnputStream in = request.getlnputStream();
客户端部分
Multipart / form-data定义了新的MIMEmedia类型[4],并在解释带有enctype =“ multipart / form-data”或lt;input type =“ tile” /gt;标记的形式时指定了HTML用户代理的行为。 根据RFC 1867“基于表单的文件上传”的文档,HTML样式应该具有enctype参数。 顺便说一下,Struts定义了自己的标签,例如,在上面的例子中。 因此,如果我们不使用此框架,应编写以下代码:
lt;FORM ACTJON='uploadjsp ENCTYPE='multipart/form-data' METHOD=POSTgt;
What is your name? lt;INPUT TYPE=TEXT NAME=submitter/gt;
What files are you sending? lt;INPUT TYPE=FILE NAME=pics/gt;
lt;/FORMgt;
当遇到“ FILE”类型的输入标签时,浏览器可能会显示先前选择的文件名以及Browse按钮或选择模式。
如果用户指示一个文件(file l.txt)作为选择,则客户端可能发送回以下数据[3](省略了HTTP标头):
Content-type: multipart/form-data, boundary=AaB03x
--AaB03x
content-disposition: form-data; name='field l'
Joe Blow
--AaB03x
contcfnt-disposition: form-data; name='pics'; filename= 11 file 1.txt'
Content-Type: text/plain
... contents of file l.txt ...
--AaB03x—
如果用户指示选择了两个文件(file 1.txt和file2.gif),则客户端可能会发回以下.data [3](省略HTTP标头):
- Content-type: multipart/fonn-data,
boundary=AaB03x
--AaB03x
content-disposition: fonn-data; name=“ field 1'
Joe Black
--AaB03x
content-disposition: form-data; name='pics“
Content-type: multipart/mixed, boundary=BbC04y
<p
剩余内容已隐藏,支付完成后下载完整资料</p
资料编号:[254535],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。