仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 539|回复: 13
打印 上一主题 下一主题

[学习教程] JAVA网页编程之用Struts上传多个文件的办法

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:10:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
C#是不行的,比如说美国的航天飞船里就有java开发的程序以上是我的愚见,其实不管那种语言,你学好了,都能找到好的工作,上传比来在做Struts项目时碰到了上传多个文件的成绩。在网上查了很多材料,也没有找到用Struts上传多个文件的例子。我经由几天的研讨,完成了用Struts上传多个文件的功效。如今贴出来让人人共享!
一。创建ActionForm
packagecom.cnehu.struts.form;
importjavax.servlet.http.HttpServletRequest;
importorg.apache.struts.action.ActionError;
importorg.apache.struts.action.ActionErrors;
importorg.apache.struts.action.ActionForm;
importorg.apache.struts.action.ActionMapping;
importorg.apache.struts.upload.FormFile;
importorg.apache.struts.upload.MultipartRequestHandler;
/**
*<p>
*Title:UpLoadForm
*</p>
*<p>
*Copyright:Copyright(c)2005techyanghttp://blog.csdn.net/techyang
*</p>
*@authortechyang
*@version1.0
*/
publicclassUpLoadFormextendsActionForm
{
publicstaticfinalStringERROR_PROPERTY_MAX_LENGTH_EXCEEDED="org.apache.struts.webapp.upload.MaxLengthExceeded";
protectedFormFiletheFile;
protectedFormFiletheFile2;
publicFormFilegetTheFile()
{
returntheFile;
}
publicvoidsetTheFile(FormFiletheFile)
{
this.theFile=theFile;
}
publicActionErrorsvalidate(ActionMappingmapping,
HttpServletRequestrequest)
{
ActionErrorserrors=null;
//hasthemaximumlengthbeenexceeded?
BooleanmaxLengthExceeded=(Boolean)request
.getAttribute(MultipartRequestHandler.ATTRIBUTE_MAX_LENGTH_EXCEEDED);
if((maxLengthExceeded!=null)&&(maxLengthExceeded.booleanValue()))
{
errors=newActionErrors();
errors.add(ERROR_PROPERTY_MAX_LENGTH_EXCEEDED,newActionError(
"maxLengthExceeded"));
}
returnerrors;
}
/**
*@returnReturnsthetheFile2.
*/
publicFormFilegetTheFile2()
{
returntheFile2;
}
/**
*@paramtheFile2ThetheFile2toset.
*/
publicvoidsetTheFile2(FormFiletheFile2)
{
this.theFile2=theFile2;
}
}

二。创建ActionServlet
packagecom.cnehu.struts.action;
importjava.io.*;
importjavax.servlet.http.*;
importorg.apache.struts.action.*;
importorg.apache.struts.upload.FormFile;
importcom.cnehu.struts.form.UpLoadForm;
/**
*<p>
*Title:UpLoadAction
*</p>
*<p>
*Copyright:Copyright(c)2005techyanghttp://blog.csdn.net/techyang
*</p>
*@authortechyang
*@version1.0
*/
publicclassUpLoadActionextendsAction
{
publicActionForwardexecute(ActionMappingmapping,ActionFormform,
HttpServletRequestrequest,HttpServletResponseresponse)
throwsException
{
Stringencoding=request.getCharacterEncoding();
if((encoding!=null)&&(encoding.equalsIgnoreCase("utf-8")))
{
response.setContentType("text/html;charset=gb2312");//假如没有指定编码,编码格局为gb2312
}
UpLoadFormtheForm=(UpLoadForm)form;
FormFilefile=theForm.getTheFile();//获得上传的文件

FormFilefile2=theForm.getTheFile2();
try
{
/*
*取以后体系路径D:Tomcat5webappscoka个中coka为以后context
*/
StringfilePath=this.getServlet().getServletContext()
.getRealPath("/");
InputStreamstream=file.getInputStream();//把文件读进

ByteArrayOutputStreambaos=newByteArrayOutputStream();

/*
*创建一个上传文件的输入流假如是linux体系请把UploadFiles后的""换成"/"
*/
OutputStreambos=newFileOutputStream(filePath+
"UploadFiles"+file.getFileName());

//D:Tomcat5webappscokaUploadFilesDSC01508.JPG
/*System.out.println(filePath+
"UploadFiles"+file.getFileName());
System.out.println(filePath);*/
request.setAttribute("fileName",filePath+"/"
+file.getFileName());
intbytesRead=0;
byte[]buffer=newbyte[8192];
while((bytesRead=stream.read(buffer,0,8192))!=-1)
{
bos.write(buffer,0,bytesRead);//将文件写进服务器
}
bos.close();
stream.close();

InputStreamstream2=file2.getInputStream();//把文件读进
ByteArrayOutputStreambaos2=newByteArrayOutputStream();
OutputStreambos2=newFileOutputStream(filePath+
"UploadFiles"+file2.getFileName());//创建一个上传文件的输入流
intbytesRead2=0;
byte[]buffer2=newbyte[8192];
inti=0;
while((bytesRead2=stream2.read(buffer2,0,8192))!=-1)
{
bos2.write(buffer2,0,bytesRead2);//将文件写进服务器
}
bos2.close();
stream2.close();

}catch(Exceptione)
{
System.err.print(e);
}
returnmapping.findForward("display");

}
}

三。创建上传用的JSP文件upload.jsp
<%@tagliburi="http://jakarta.apache.org/struts/tags-html"prefix="html"%>
<html:html>
<head>
<title>用Struts上传文件</title>
</head>
<body>
<html:formaction="/uploadsAction"enctype="multipart/form-data">
<html:fileproperty="theFile"/>
<html:fileproperty="theFile2"/>
<html:submit/>
</html:form>
</body>
</html:html>
四。设置struts-config.xml文件
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEstruts-configPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration1.1//EN""http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<data-sources/>
<form-beans>
<form-beanname="uploadsForm"type="com.cnehu.struts.form.UpLoadForm"/>
</form-beans>
<global-exceptions/>
<global-forwards>

</global-forwards>
<action-mappings>

<actionname="uploadsForm"type="com.cnehu.struts.action.UpLoadAction"path="/uploadsAction">
<forwardname="display"path="/display.jsp"/>
</action>
</action-mappings>

</struts-config>
全文完!

Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。Oracle收购Sun后Java前途未卜。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-20 15:41:25 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
不帅 该用户已被删除
板凳
发表于 2015-1-20 19:11:49 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
山那边是海 该用户已被删除
地板
发表于 2015-1-26 20:10:26 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
只想知道 该用户已被删除
5#
发表于 2015-2-2 21:42:23 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
分手快乐 该用户已被删除
6#
发表于 2015-2-2 21:47:09 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
飘飘悠悠 该用户已被删除
7#
发表于 2015-2-5 03:34:37 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
爱飞 该用户已被删除
8#
发表于 2015-2-6 00:50:05 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
小女巫 该用户已被删除
9#
发表于 2015-2-6 17:29:49 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
简单生活 该用户已被删除
10#
发表于 2015-2-10 13:40:22 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
海妖 该用户已被删除
11#
发表于 2015-3-1 10:58:58 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
透明 该用户已被删除
12#
发表于 2015-3-10 14:59:03 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
第二个灵魂 该用户已被删除
13#
发表于 2015-3-17 08:09:45 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
精灵巫婆 该用户已被删除
14#
发表于 2015-3-24 02:54:52 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 00:19

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表