最近开始研究Struts2,感觉Struts2在封装性上比Struts1好许多,尤其是Struts2的标签和支持的多语言(ognl等)。
今天与大家分享一下,自己制作的Struts2文件上传下载的实例,希望能对大家有所帮助!
首先,建立action处理类FileUploadAction,并实现模型驱动化接口ModelDriven<FileInfo>:
public class FileUploadAction extends ActionSupport implements ModelDriven<FileInfo>
{
FileInfo fileinfo=new FileInfo(); //封装文件信息
public FileInfo getModel()
{
return fileinfo;
}
@Override
public String execute() throws Exception
{
//获得服务器上保存上传文件的目录updfile的绝对路径
String realpath=ServletActionContext.getServletContext().getRealPath("/updfile");
//设置保存文件的路径
fileinfo.setTargetdir(realpath);
//设置目标文件名
fileinfo.setTargetfilename(generateFileName(fileinfo.getDocFileName()));
//把doc内容复制到target
FileUtils.copyFile(fileinfo.getDoc(), new File(fileinfo.getTargetdir(),fileinfo.getTargetfilename()));
return SUCCESS;
}
//产生唯一的文件名
private synchronized String generateFileName(String filename)
{
int position=filename.lastIndexOf(".");
String ext=filename.substring(position);
return System.nanoTime()+ext;
}
}
附:javabean实体类:
public class FileInfo
{
private File doc; //封装上传文件的属性
private String docFileName; //封装上传文件的名称属性
private String docContentType; //封装上传文件的类型属性
private String targetdir; //保存路径
private String targetfilename; //保存的文件名
public File getDoc() {
return doc;
}
public void setDoc(File doc) {
this.doc = doc;
}
public String getDocFileName() {
return docFileName;
}
public void setDocFileName(String docFileName) {
this.docFileName = docFileName;
}
public String getDocContentType() {
return docContentType;
}
public void setDocContentType(String docContentType) {
this.docContentType = docContentType;
}
public String getTargetdir() {
return targetdir;
}
public void setTargetdir(String targetdir) {
this.targetdir = targetdir;
}
public String getTargetfilename() {
return targetfilename;
}
public void setTargetfilename(String targetfilename) {
this.targetfilename = targetfilename;
}
}
至此任务已经完成了一大半,接下来就是配置Struts.xml文件即可
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.i18n.encoding" value="GBK"></constant>
<package name="action" extends="struts-default">
<action name="fileupload" class="action.FileUploadAction">
<result>/success.jsp</result>
<result name="input">/index.jsp</result>
</action>
</package>
</struts>
ok,jsp操作即可:
index.jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<!--enctype="multipart/form-data"用来指定表单数据的编码方式 -->
<s:form action="fileupload" method="post" enctype="multipart/form-data">
上传文件:<s:file name="doc"></s:file><br/>
<s:submit value="上传"></s:submit>
</s:form>
</body>
</html>
操作成功界面 success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
上传文件类型:<s:property value="docContentType"/><br>
上传成功后文件位置:<s:property value="targetdir"/><br>
上传图片:<img src="<s:property value="'updfile/'+targetfilename"/>"><br>
</body>
</html>
供大家参考,还望批评指教
分享到:
相关推荐
在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...
在这个特定的项目中,我们关注的是"struts2文件上传下载"的功能,这涉及到用户通过Web界面上传文件到服务器,以及从服务器下载文件到用户的设备。 文件上传是Web应用中的常见需求,例如用户可能需要提交图片、文档...
对于初学者,阅读这些文档能更好地理解Struts2的用法以及文件上传下载的具体步骤。 总的来说,Struts2文件上传下载实例涵盖了Web开发中常见的两个重要功能。通过使用Maven管理依赖,编写Action类处理业务逻辑,并在...
本篇文章将详细探讨如何在Struts2框架下实现文件的上传与下载。 首先,我们需要了解Struts2中的文件上传机制。Struts2提供了`FileUploadInterceptor`拦截器来处理文件上传请求。在处理文件上传时,开发者需要在...
综上所述,Struts2文件上传下载和表单重复提交涉及多个技术点,包括Struts2的配置、文件操作、HTTP响应头设置、安全性和异常处理。理解并熟练掌握这些知识点,对于构建健壮的Web应用程序至关重要。
在本项目中,我们关注的是Struts2中的文件上传和下载功能,这些功能是Web开发中常见的需求,尤其在处理用户数据提交或提供资源下载时。下面将详细介绍这个“struts2文件上传下载(注解版)”项目的关键知识点。 1. ...
在Struts2中,文件上传和下载是常见的功能需求,主要用于处理用户在Web表单中提交的文件,如图片、文档等。下面将详细介绍Struts2中文件上传和下载的实现方法。 ### 1. 文件上传 #### 1.1 配置Struts2 首先,我们...
Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括处理用户表单提交、进行文件上传和下载。在Web应用中,文件上传和下载是常见的需求,例如用户上传头像、下载文档等。Struts2通过其Action类和...
第八章:struts2文件上传下载.ppt
在Struts2中,文件上传和下载是常见的功能,它们使得用户能够交互地处理文件,如上传图片、文档或者下载资源。下面我们将深入探讨如何利用Struts2实现文件上传和下载。 一、文件上传 1. 配置Struts2核心拦截器:...
在Struts2中,文件上传和下载是常见的功能,它们允许用户从服务器上下载文件或向服务器上传文件。理解并掌握这一部分的知识对于开发交互性强的Web应用至关重要。 ### 一、文件上传 1. **使用Struts2的FileUpload...
Struts2 文件上传是Web开发中的一个重要功能,它允许用户通过网页上传文件到服务器。Struts2 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,提供了丰富的特性和强大的控制层功能,使得文件上传...
在Struts2框架中,文件上传和下载是常见的功能需求,但处理中文文件名或内容时,可能会遇到中文乱码的问题。这个问题主要涉及到字符编码的处理,包括HTTP请求的编码、文件名的编码以及文件内容的编码。接下来,我们...
Struts 2是通过Commons FileUpload文件上传。Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中。从而我们就能够以本地文件方式的操作浏览器上传的...