`
jsczxy2
  • 浏览: 1273316 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

struts2初学之form上传

阅读更多

以前struts1使用的FormFile我不是很喜欢,这下好了,struts2现在直接拿到File了,OK,上代码!

需要上传的话要用到2个jar包:commons-io-x.jar和commons-fileupload-x.jar导入到lib后即可。

PS:我的工程名字叫TestStruts

1.写action:(BaseAction.java见第一章节)

FormFileStruts2.java:

package com.xuyi.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FormFileStruts2 extends BaseAction {
	
	public static final String ROOT = "upload\\";
	
	private String username;
	
	//可以拿到file的流,使用tmp文件
	private File image;
	
	//固定格式取file的真实文件名
	private String imageFileName;
	
	//固定格式
	private String imageContentType;
	
	private String msg;
	
	@Override
	public String execute() throws Exception {
		//配置src下面的struts.properties中加入struts.multipart.saveDir = /tmp
		//否则在上传文件时会出现Unable to find 'struts.multipart.saveDir' property setting的错误
		
		String rootPath = getSession().getServletContext().getRealPath("/");
		rootPath += ROOT;
		mkDirectory(rootPath);
		System.out.println(rootPath);
		try {
			upload(imageFileName, rootPath, image);
		} catch (RuntimeException e) {
			e.printStackTrace();
		}
		
		msg = imageFileName;
		return SUCCESS;
	}
	
	/**
	 * 根据路径创建一系列的目录
	 * 
	 * @param path
	 */
	boolean mkDirectory(String path) {
		File file = null;
		try {
			file = new File(path);
			if (!file.exists()) {
				return file.mkdirs();
			}
		} catch (RuntimeException e) {
			e.printStackTrace();
		} finally {
			file = null;
		}
		return false;
	}
	
	/**
	 * 上传文件
	 * 
	 * @param savePath
	 *            文件的保存路径
	 * @param uploadFile
	 *            被上传的文件
	 * @return uploadFileName
	 */
	String upload(String uploadFileName, String savePath, File uploadFile) {
		FileOutputStream fos = null;
		FileInputStream fis = null;
		try {
			fos = new FileOutputStream(savePath + uploadFileName);
			fis = new FileInputStream(uploadFile);
			byte[] buffer = new byte[1024];
			int len = 0;
			while ((len = fis.read(buffer)) > 0) {
				fos.write(buffer, 0, len);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try {
				fos.close();
				fis.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return uploadFileName;
	}

	public File getImage() {
		return image;
	}

	public void setImage(File image) {
		this.image = image;
	}
	
	public String getImageContentType() {
		return imageContentType;
	}

	public void setImageContentType(String imageContentType) {
		this.imageContentType = imageContentType;
	}

	public String getImageFileName() {
		return imageFileName;
	}

	public void setImageFileName(String imageFileName) {
		this.imageFileName = imageFileName;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getMsg() {
		return msg;
	}

	
}
 

src下面新建一个struts.properties文件:

struts.multipart.saveDir = /tmp

 

2.配置struts.xml

<!DOCTYPE struts PUBLIC 
	"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
	"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
	<!--package: name可以随便指定  namespace指定页面的目录(/为根目录) extends指定为 struts-default.xml文件(此文件包含默认的设置和定义) -->
	<package name="struts" namespace="/" extends="struts-default">
		<!--action:name是访问action的名称 class是action的类 method是访问的action里的方法等同于struts1的method result是返回url-->
			
		<!-- struts2 file_upload begin -->
		<action name="formFileStruts2" class="com.xuyi.action.FormFileStruts2">
			<result name="success">/pages/struts2_form_file_result.jsp</result>
		</action>		
		<!-- struts2 file_upload end -->
	</package>
</struts>
 

3.在WebRoot下建立pages文件夹中创建jsp

struts2_form_file_submit.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Struts2-form上传示例-提交页</title>
</head>
<body>
	<form action="../formFileStruts2.action" method="post" enctype="multipart/form-data">
		用户名:<input type="text" name="username"><br/><br/>
		图片:<input type="file" name="image"><br/><br/>
		<input type="submit" value="提交">
	</form>
</body>
</html>

 struts2_form_file_result.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Struts2-form上传示例-结果页</title>
</head>
<body>
	${username}上传图片${msg}成功!
</body>
</html>

 4.访问:http://localhost:8080/TestStruts/pages/struts2_form_file_submit.jsp即可操作

1
1
分享到:
评论

相关推荐

    Struts2 单个、批量文件上传 精简源码

    Struts2提供了强大的文件上传支持,包括单个文件上传和批量文件上传。在这个精简源码案例中,我们将探讨这两种模式的实现方式。 首先,我们来了解一下Struts2单个文件上传的基本概念。在Struts2中,文件上传主要...

    struts2文件上传源码和步骤

    Struts2 是一个基于 MVC 设计模式的 Java Web 开发...对于初学者来说,理解这些内容有助于掌握 Struts2 框架和文件上传的基本操作。在实际开发中,可能还需要考虑更多细节,如多文件上传、文件重命名策略、错误处理等。

    用Struts框架实现多文件上传功能(初学者的入门项目案例)

    在Struts框架中,文件上传主要依赖于两个关键组件:`Commons FileUpload`库和`Struts2上传插件`。`Commons FileUpload`是Apache的一个子项目,负责处理HTTP请求中的多部分数据,而Struts2上传插件则整合了这一库,...

    Struts2文件上传程序示例

    这个示例程序旨在帮助初学者理解如何在Struts2框架下实现文件上传。 首先,我们需要了解Struts2文件上传的核心概念和组件。在Struts2中,文件上传主要依赖于Apache Commons FileUpload库。这个库提供了处理HTTP多...

    struts练习 初学者入门

    4. **JSP**:视图层主要由JSP页面构成,通过使用Struts标签库(Struts Tags)如&lt;s:form&gt;、等,可以轻松地创建动态页面,同时与ActionForm进行数据交互。 5. **Tiles**:在更复杂的项目中,Struts还可以结合Tiles...

    整合了struts2 jquery的formValidator表单验证的页面代码

    Struts2和jQuery是两种非常流行的Java Web开发技术。Struts2是一个强大的MVC框架,用于构建企业级的Web应用程序,而jQuery则是一个...对于初学者来说,深入研究这个示例有助于掌握Struts2和jQuery在实际开发中的应用。

    struts2学习小项目(很适合初学者)

    在Struts2中,视图通常由JSP页面完成,它们通过Struts2标签库(例如s:form, s:textfield等)与Action进行交互,显示和收集用户输入。控制器部分则通过Action类实现,Action类通常继承自Struts2提供的抽象类或实现...

    Struts2 上传图片

    在Struts2中实现图片上传功能是常见的需求,对于初学者和有经验的开发者来说,掌握这一技能都非常有价值。本篇文章将深入探讨如何在Struts2框架下实现图片上传功能。 首先,我们需要在Struts2的配置文件`struts.xml...

    struts2简单例子

    这个“struts2简单例子”是初学者理解Struts2工作原理和核心概念的一个很好的起点。让我们深入探讨一下Struts2的基础知识。 1. **MVC架构**: MVC模式是软件设计中的一个经典模式,它将应用逻辑分为三个主要部分:...

    用Struts框架实现单文件上传功能(初学者的入门项目案例)

    本项目案例“用Struts框架实现单文件上传功能”旨在帮助初学者掌握如何在Struts框架下处理文件上传的需求,这对于理解和实践Java Web开发中的常见操作非常有帮助。 首先,我们需要理解Struts框架的核心组件。Action...

    struts2多文件上传

    这个项目提供的代码应该包含了这些步骤的完整实现,对于初学者来说,这是一个很好的学习资源,可以深入理解Struts2文件上传的工作原理和最佳实践。记得在实际应用中,一定要注意安全性和性能优化。

    struts2 上传 示例

    在Struts2中,文件上传功能是常见的需求之一,它允许用户通过网页上传各种类型的文件,例如图片、文档等。这个"struts2 上传 示例"是一个用于演示如何在Struts2框架下实现文件上传的示例项目。 首先,我们要了解...

    struts2相关书籍

    该文档可能详细介绍了Struts2提供的各种内置标签库,如s:form、s:textfield、s:textarea、s:submit等,这些都是在JSP页面中用于构建动态用户界面的关键元素。标签库帮助开发者避免直接使用Java脚本和HTML,使代码更...

    struts2 学习资料

    它还会介绍如何创建和配置Struts2应用,以及如何处理表单提交、文件上传、国际化等常见任务。 "struts2标签简单说明"则专门讨论Struts2提供的JSP标签库。这些标签简化了视图层的开发,使得开发者可以更高效地与模型...

    struts2 文件上传,也可以多文件上传

    Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括文件上传。在Web开发中,文件上传是一项常见的需求,比如用户可能需要上传图片、文档等。Struts2提供了简单易用的API来实现这一功能。下面我们将...

    Struts2上传文件源码

    总结一下,这个"Struts2上传文件源码"示例主要涵盖了以下知识点: 1. Struts2的拦截器机制和`FileUploadInterceptor`。 2. 配置文件中启用文件上传拦截器。 3. 创建Action类处理文件上传,包括接收和处理上传文件。...

    struts2 上传下载

    1. **Struts2上传功能**: - Struts2提供了内置的文件上传支持,这使得在Web应用中处理用户上传的文件变得非常方便。 - 在Action类中,我们需要定义一个类型为`List&lt;CommonsFileUpload&gt;`或`FileItem[]`的字段来...

    struts2图片上传并生成缩略图,展示缩略图点击显示大图

    在这个场景中,我们将关注如何使用Struts2框架结合FileUpload库来实现图片上传,并通过生成缩略图来优化用户体验。Struts2是一个流行的Java Web框架,它提供了一种结构化的方式来处理用户请求,而FileUpload则是处理...

    Struts2 code jar+实现struts2步骤文档

    这个压缩包包含了核心库(core)的jar文件和一个实现Struts2工程的步骤文档,这对于初学者或者开发者来说是极其有价值的资源。 1. **Struts2核心库(Core Jars)**: - Struts2的核心库提供了框架的基本功能,包括...

    strtuts2文件上传的demo,仅仅含有struts2技术

    Struts2是一个非常流行...但对于初学者来说,它是了解Struts2文件上传机制的一个良好起点,可以帮助他们快速理解并部署到实际项目中。通过深入研究和扩展这个demo,可以掌握更多的高级特性,如多文件上传、异步上传等。

Global site tag (gtag.js) - Google Analytics