Java中Struts2提供了方便的文件上传和下载的功能。下面将详细讲解文件上传和下载的示例。
文件上传示例
文件上传需要使用Struts2中的文件上传拦截器。详细步骤如下:
第一步:引入依赖
在项目的pom.xml文件中添加以下依赖:
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.22</version>
</dependency>
第二步:配置配置文件
在web.xml中添加过滤器:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
添加struts.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.multipart.maxSize" value="10485760" />
<package name="default" extends="struts-default">
<action name="upload" class="com.example.action.FileUploadAction">
<result name="success">/success.jsp</result>
<result name="input">/fileupload.jsp</result>
</action>
</package>
</struts>
配置文件中,struts.multipart.maxSize
用于限制上传文件的大小。
第三步:编写Action
编写Action来处理上传文件:
public class FileUploadAction extends ActionSupport {
private File file;
private String fileFileName;
private String fileContentType;
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public String getFileFileName() {
return fileFileName;
}
public void setFileFileName(String fileFileName) {
this.fileFileName = fileFileName;
}
public String getFileContentType() {
return fileContentType;
}
public void setFileContentType(String fileContentType) {
this.fileContentType = fileContentType;
}
public String execute() throws Exception{
// 保存上传文件逻辑处理
return SUCCESS;
}
}
第四步:编写JSP页面
编写JSP页面,用于上传文件:
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Struts2文件上传示例</title>
</head>
<body>
<s:form enctype="multipart/form-data" action="upload">
<s:file name="file" label="请选择上传文件"></s:file><br/>
<s:submit value="上传"></s:submit>
</s:form>
</body>
</html>
第五步:运行示例
在浏览器中访问上传文件的JSP页面,选择一个文件,上传即可。
文件下载示例
文件下载需要在struts.xml中配置一个Action来进行文件下载。详细步骤如下:
第一步:引入依赖
在项目的pom.xml文件中添加以下依赖:
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.22</version>
</dependency>
第二步:配置配置文件
在web.xml中添加过滤器:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
添加struts.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<package name="default" extends="struts-default">
<action name="download" class="com.example.action.FileDownloadAction">
<param name="filePath">/tmp/foo.txt</param>
<result name="success" type="stream">
<param name="contentType">application/octet-stream</param>
<param name="inputName">fileInputStream</param>
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="bufferSize">1024</param>
</result>
</action>
</package>
</struts>
第三步:编写Action
编写Action来进行文件下载:
public class FileDownloadAction extends ActionSupport {
private InputStream fileInputStream;
private String fileName;
private String filePath;
public InputStream getFileInputStream() {
return fileInputStream;
}
public void setFileInputStream(InputStream fileInputStream) {
this.fileInputStream = fileInputStream;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
public String execute() throws Exception {
fileName = new File(filePath).getName();
fileInputStream = new FileInputStream(new File(filePath));
return SUCCESS;
}
}
第四步:运行示例
在浏览器中访问下载文件的Action链接,即可下载对应的文件。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java中Struts2 的文件上传和下载示例 - Python技术站