公共部分:在maven项目pom文件下加入struts.jar包
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.5</version>
</dependency>
公共部分:配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" id="WebApp_1509502455974">
<display-name>Archetype Created Web Application</display-name>
<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>
<welcome-file-list>
<welcome-file>/oneFile.jsp</welcome-file>
</welcome-file-list>
</web-app>
单个文件上传开始:
第一步jsp页面写入
<form action="fileUploadAction" method="post" enctype="multipart/form-data">
<p><input type="text" name="username"></p>
<p>图片:<input type="file" name="upload"></p>
<input type="submit" value="提交">
</form>
<p>显示图片:</p>
<img src="upload/${uploadFileName}" width="300">
第二步:配置struts.xml<constant name="struts.multipart.maxSize" value="5000000"></constant>
<package name="struts" namespace="/" extends="struts-default">
<action name="fileUploadAction" class="org.maven.action.FileUploadAction">
<result name="success">/index.jsp</result>
</action>
</package>
第三步:配置单个文件上传的action类
package org.maven.action;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;
import javax.servlet.ServletContext;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
* @author du
* @version 单文件上传
*/
public class FileUploadAction extends ActionSupport {
private String username;
private File upload;
private String uploadContentType;
private String uploadFileName;
private String savePath;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public File getUpload() {
return upload;
}
public void setUpload(File upload) {
this.upload = upload;
}
public String getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public String getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
public String getSavePath() {
return savePath;
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
@Override
public String execute() throws Exception {
ServletContext application = ServletActionContext.getServletContext();
savePath =application.getRealPath("/upload");
//输入流
FileInputStream fis =new FileInputStream(getUpload());
byte[] bytes =new byte[fis.available()];
fis.read(bytes);
//输出流
FileOutputStream fos = new FileOutputStream(getSavePath()+"\\"+getUploadFileName());
fos.write(bytes);
System.out.println("上传文件结束,请查看");
return super.execute();
}
}
多个文件上传开始:
第一步jsp页面写入,这里遍历集合的方式,用struts2提供的标签 iterator 可以实现
<form action="oneUploadAction" method="post" enctype="multipart/form-data">
<p>图片1:<input type="file" name="upload"></p>
<p>图片2:<input type="file" name="upload"></p>
<input type="submit" value="提交">
</form>
<p>显示图片:</p>
<!-- 遍历值 -->
<s:iterator value="uploadFileName">
<p><img src="upload/<s:property/>" width="300"></p>
</s:iterator>
第二步:配置struts.xml
<constant name="struts.multipart.maxSize" value="5000000"></constant>
<package name="struts" namespace="/" extends="struts-default">
<action name="oneUploadAction" class="org.maven.action.oneUploadAction">
<result name="success">/oneFile.jsp</result>
</action>
</package>
第三步:配置多个文件上传的action类
package org.maven.action;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;
import javax.servlet.ServletContext;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
* @author du
* @version 多文件上传
*/
public class oneUploadAction extends ActionSupport {
private File[] upload;
private String[] uploadContentType;
private String[] uploadFileName;
private String savePath;
public String getSavePath() {
return ServletActionContext.getServletContext().getRealPath("/upload");
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
public File[] getUpload() {
return upload;
}
public void setUpload(File[] upload) {
this.upload = upload;
}
public String[] getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String[] uploadContentType) {
this.uploadContentType = uploadContentType;
}
public String[] getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String[] uploadFileName) {
this.uploadFileName = uploadFileName;
}
@Override
public String execute() throws Exception {
for (int i=0;i<upload.length;i++){
//输入流
FileInputStream fis = new FileInputStream(upload[i]);
byte[] bytes = new byte[fis.available()];
fis.read(bytes);
//输出流
FileOutputStream fos = new FileOutputStream(getSavePath()+"\\"+uploadFileName[i]);
fos.write(bytes);
}
return super.execute();
}
}