笨鸟先飞之Java(一)--使用struts2框架实现文件上传
无论是.net还是Java,我们最常接触到的就是文件的上传和下载功能,在Java里要实现这两个经常使用功能会有非常多种解决方案,可是struts2的框架却能给我们一个比較简单的方式,以下就一起来看吧:
文件上传:
首先来看实现上传功能的表单。Index.jsp:
<span style="font-family:FangSong_GB2312;font-size:18px;"><%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<form>
标题:<input type="text" name="title"><br>
文件:<input type="file" name="myFile"><br>
<input type="submit" value="上传">
</form>
</body>
</html></span>
当我们上传成功之后须要一个jsp来显示上传文件的相关信息,所以我们新建一个jsp文件,代码例如以下:
<span style="font-family:FangSong_GB2312;font-size:18px;"><%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
title:${title }<br>
fileName:${myFileFileName }<br>
</body>
</html></span>
在struts2这个框架中,有了jsp,我们还要使用Action来接受和处理这些数据,也很easy,仅仅是我们要遵守对应的规则:
<span style="font-size:18px;"><span style="font-family:FangSong_GB2312;">package com.bjpowernode.struts2; import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream; import com.opensymphony.xwork2.Action; /**
* 文件上传的Action
* @author chao
*
*/
public class UploadTestAction { private String title; //能够得到上传文件的名称
//规则:输入域的名称+固定字符串FileName
private String myFileFileName; //取得文件数据
//规则:File输入域的名称
private File myFile; //取得内容类型
//规则:输入域的名称+固定字符串ContextType
private String myFileContextType; public String getMyFileFileName() {
return myFileFileName;
} public void setMyFileFileName(String myFileFileName) {
this.myFileFileName = myFileFileName;
} public String getTitle() {
return title;
} public void setTitle(String title) {
this.title = title;
} public File getMyFile() {
return myFile;
} public void setMyFile(File myFile) {
this.myFile = myFile;
} public String getMyFileContextType() {
return myFileContextType;
} public void setMyFileContextType(String myFileContextType) {
this.myFileContextType = myFileContextType;
} public String execute() throws Exception{
//初始化输入流和输出流
InputStream is =null;
OutputStream os = null;
try{
//读入文件
is = new BufferedInputStream(
new FileInputStream(myFile));
//读出文件到既定位置
os = new BufferedOutputStream(
new FileOutputStream("c:\\" + myFileFileName));
//实例化一个byte数组
byte[] buffer = new byte[1024];
int len = 0;
while((len=is.read(buffer)) > 0){
os.write(buffer,0,len);
}
}finally{
if(is != null){is.close();}
if(os != null){os.close();}
}
return Action.SUCCESS;
</pre><pre name="code" class="java">
当jsp和Action都已经具备,我们还要通过配置文件将他们二者联系起来。也就是通过以下的这些代码:
</pre><pre name="code" class="java"><span style="font-family:FangSong_GB2312;font-size:18px;">
</span>
</pre><pre>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>
<!--当struts.xml配置文件发生改动。会立马载入。在生产环境下最好不要配置 -->
<constant name="struts.configuration.xml.reload" value="true"/>
<!--设置该配置能够展现更友好的错误提示界面 -->
<constant name="struts2.devMode" value="true"/>
<!--须要继承struts-default包。这样就拥有了最主要的功能 -->
<package name="upload-package" extends="struts-default">
<action name="upload" class="com.bjpowernode.struts2.UploadTestAction">
<result>/success.jsp</result>
</action>
</package>
</struts>
这样一来,我们就能够将Action接手到的数据反馈到Index.jsp中;而当我们将信息输入好之后,点击“上传”button。数据又会被传送到Action中,假设上传成功,则会转向到配置文件里的seccess.jsp中。
所以。使用struts2的框架来实现文件的上传功能并不难,主要是利用IO流来实现。看到这里,您有没有想过假设要实现多文件的上传,又该怎样?以下一起来看:
在struts2中,多文件上传和单文件上传原理同样,仅仅是要使用多个<s:file/>标签绑定Action的数组。绑定到数组的Action代码就应该是:
private File[] uploads;
private String[] uploadFileNames;
private String[] uploadContentTypes; public File[] getUpload() { return this .uploads; }
public void setUpload(File[] upload) { this .uploads = upload; } public String[] getUploadFileName() { return this .uploadFileNames; }
public void setUploadFileName(String[] uploadFileName) { this .uploadFileNames = uploadFileName; }
//上传文件的类型
public String[] getUploadContentType() { return this .uploadContentTypes; }
public void setUploadContentType(String[] uploadContentType) { this .uploadContentTypes = uploadContentType; }
注意:
1、struts2默认採用了apache commons-fileupload
2、struts2支持三种类型的上传组件
3、须要引入commons-fileupload相关的jar包
* commons-io-1.3.2.jar
* commnos-fileupload-1.2.1.jar
4、表单中须要採用post提交方式,编码类型须要使用multipart/form-data
5、struts2的Action
取得文件名---->>>规则:输入域的名称+固定字符串FileName
取得文件数据---->>>规则:File输入域的名称
取得内容类型---->>>规则:输入域的名称+固定字符串ContextType
6.得到输入流,採用输出流写文件
使用struts2框架实现文件上传的功能解说就先到这里。希望能够帮到大家!假设大家有什么问题或者更好的建议。欢迎大家指正或者联系我!
笨鸟先飞之Java(一)--使用struts2框架实现文件上传的更多相关文章
- struts2框架之文件上传(参考第三天学习笔记)
上传 1. 上传对表单的要求 * method=post * enctype=multipart/form-data 2. 上传对servlet要求 * getParameter()不能再使用! -- ...
- struts2中的文件上传,文件下载
文件上传: Servlet中的文件上传回顾 前台页面 1.提交方式post 2.表单类型 multipart/form-data 3.input type=file 表单输入项 后台 apache提交 ...
- [转]Struts2多个文件上传
转载至:http://blog.csdn.net/hanxiaoshuang123/article/details/7342091 Struts2多个文件上传多个文件上传分为List集合和数组,下面我 ...
- layUI框架中文件上传前后端交互及遇到的相关问题
下面我将讲述一下我在使用layUI框架中文件上传所遇到的问题: 前端jsp页面: <div class="layui-form-item"> <label cla ...
- node.js使用express框架进行文件上传
关于node.js使用express框架进行文件上传,主要来自于最近对Settings-Sync插件做的研究.目前的研究算是取得的比较好的进展.Settings-Sync中通过快捷键上传文件,其实主要 ...
- 关于我使用spring mvc框架做文件上传时遇到的问题
非常感谢作者 原文:https://blog.csdn.net/lingirl/article/details/1714806 昨天尝试着用spring mvc框架做文件上传,犯了挺多不该犯的毛病问题 ...
- SpringMVC框架06——文件上传与下载
1.文件上传 Spring MVC框架的文件上传是基于commons-fileupload组件的文件上传,只不过Spring MVC框架在原有文件上传组件上做了进一步封装,简化了文件上传的代码实现. ...
- 基于spring 3.0mvc 框架的文件上传实现
Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框 ...
- Struts2 之 实现文件上传和下载
Struts2 之 实现文件上传和下载 必须要引入的jar commons-fileupload-1.3.1.jar commons-io-2.2.jar 01.文件上传需要分别在struts.xm ...
随机推荐
- SWT 全接触
http://www.ibm.com/developerworks/cn/opensource/os-swt/index.html 1.SWT简介 SWT-"Standard Widget ...
- struts2中<welcome-file>index.action</welcome-file>直接设置action,404的解决方案
这几天的项目页面的访问全部改为.action访问,在修改首页时遇到了问题.将web.xml文件中<welcome-file>index.action</welcome-file> ...
- Servlet字符编码过滤器
在Java Web程序开发中,由于Web容器内部使用编码格式并不支持中文字符集,所以,处理浏览器请求中的中文数据就会出现乱码的现象.由于Web容器使用了ISO-8859-1的编码格式,所以在Web应用 ...
- AngularJS driective 封装 自动滚动插件
1.ui-smooth-scroll.js文件内容 angular.module('app') .directive('uiSmoothScroll', ['$location', '$anchorS ...
- JS中应用正则表达式转换大小写
JS中应用正则表达式转换大小写,代码很简单,看代码: 以下首字母大写,其它字母小写 <script type="text/javascript"> function r ...
- IOS把图片做成圆形效果
利用CAShapeLayer能够制作出随意的几何图形,把它作为UIImageView的遮罩,达到把图片做成圆形效果. imgView = [[UIImageView alloc]initWithFra ...
- android 随手记 摄像头录像
1 xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:androi ...
- UITabBarController — 标签视图控制器
UITabBarController - 标签视图控制器 UITabBarController 分为三层结构: (1).tab bar (2.)Custom Content (3.). Tab bar ...
- .net反编译工具ILSpy
下载地址:http://www.fishlee.net/service/softarchive/57
- 分享几个.NET 下的计划任务组件
Quartz http://www.quartz-scheduler.net/(现项目在使用,可以看我之前的文章) Hangfire http://hangfire.io/ Install-Packa ...