import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.interceptor.SessionAware;
import com.opensymphony.xwork2.ActionSupport;
public class CommonAction extends ActionSupport implements ServletResponseAware,
ServletRequestAware, SessionAware, RequestAware {
private HttpServletRequest request;
private HttpServletResponse response;
private HttpSession session;
@SuppressWarnings("unchecked")
private Map requestmap;
@SuppressWarnings("unchecked")
private Map sessionmap;
public HttpServletRequest getRequest() {
return request;
}
public void setRequest(HttpServletRequest request) {
this.request = request;
}
public HttpServletResponse getResponse() {
return response;
}
public void setResponse(HttpServletResponse response) {
this.response = response;
}
@SuppressWarnings("unchecked")
public Map getRequestmap() {
return requestmap;
}
@SuppressWarnings("unchecked")
public void setRequestmap(Map requestmap) {
this.requestmap = requestmap;
}
@SuppressWarnings("unchecked")
public Map getSessionmap() {
return sessionmap;
}
@SuppressWarnings("unchecked")
public void setSessionmap(Map sessionmap) {
this.sessionmap = sessionmap;
}
public HttpSession getSession() {
return session;
}
public void setSession(HttpSession session) {
this.session = session;
}
public void setServletResponse(HttpServletResponse arg0) {
this.response = arg0;
}
public void setServletRequest(HttpServletRequest arg0) {
this.request = arg0;
this.session = request.getSession();
}
@SuppressWarnings("unchecked")
public void setSession(Map arg0) {
this.sessionmap = arg0;
}
@SuppressWarnings("unchecked")
public void setRequest(Map arg0) {
this.requestmap = arg0;
}
}
package com.chinasoft.action;
import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.struts2.ServletActionContext;
import com.chinasoft.db.UFile;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class DownloadAction extends ActionSupport {
private String fileName;// 现在文件名称fileName
private String filepath;// 下载文件路径
private List<UFile> ufileList = new ArrayList<UFile>();
public List<UFile> getUfileList() {
return ufileList;
}
public void setUfileList(List<UFile> ufileList) {
this.ufileList = ufileList;
}
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 allFile() {
String downpathString = ServletActionContext.getServletContext()
.getRealPath(filepath);
File file = new File(downpathString);
File[] fs = file.listFiles();
for (File f : fs) {
UFile uFile = new UFile();
uFile.setName(f.getName());
uFile.setSize(f.length());
ufileList.add(uFile);
}
return "success";
}
public InputStream getInputStream(){
try {
String downName=new String(fileName.getBytes("8859_1"),"UTF-8");
return ServletActionContext.getRequest().getSession().getServletContext().getResourceAsStream(filepath+"/"+downName);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
package com.chinasoft.action;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class SaveFile extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = -4303075894481781406L;
private static final int BUFFER_SIZE = 16 * 1024;
private File saveFile;
private String saveFileFileName;
private String saveFileContentType;
public File getSaveFile() {
return saveFile;
}
public void setSaveFile(File saveFile) {
this.saveFile = saveFile;
}
public String getSaveFileFileName() {
return saveFileFileName;
}
public void setSaveFileFileName(String saveFileFileName) {
this.saveFileFileName = saveFileFileName;
}
public String getSaveFileContentType() {
return saveFileContentType;
}
public void setSaveFileContentType(String saveFileContentType) {
this.saveFileContentType = saveFileContentType;
}
/**
* 复制文件
* @param src
* @param dsc
*/
private static void copy(File src,File dsc){
InputStream in=null;
OutputStream out=null;
try {
in=new BufferedInputStream(new FileInputStream(src),BUFFER_SIZE);
out=new BufferedOutputStream(new FileOutputStream(dsc),BUFFER_SIZE);
byte[] buffer=new byte[BUFFER_SIZE];
while(in.read(buffer)>0){
out.write(buffer);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if(in!=null){
in.close();
}
if(out!=null){
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 获取文件的扩展名
* @param fileName
* @return
*/
@SuppressWarnings("unused")
private static String returnExtension(String fileName){
int pos=fileName.lastIndexOf(".");
return fileName.substring(pos);
}
/**
* 文件上传
* @return
*/
public String saveFile(){
this.saveFileFileName=new Date().getTime()+returnExtension(this.saveFileFileName);
File filePath=new File(ServletActionContext.getServletContext().getRealPath("/uploadFiles"));//获取服务器路径,而不是本地路径
if(!filePath.exists()){
filePath.mkdir();
}
File uploadFile=new File(filePath+"/"+this.saveFileFileName);
copy(this.saveFile, uploadFile);
return "success";
}
public static void main(String[] args) {
String string="abc.jps";
System.out.println(returnExtension(string));
}
}
<?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>
<package name="file" extends="struts-default">
<action name="savefile"
class="com.chinasoft.action.SaveFile" method="saveFile">
<result name="success">/index.jsp</result>
</action>
<action name="allfile"
class="com.chinasoft.action.DownloadAction" method="allFile">
<param name="filepath">/uploadFiles</param>
<result name="success">/file_list.jsp</result>
</action>
<action name="downloadfile"
class="com.chinasoft.action.DownloadAction">
<param name="filepath">/uploadFiles</param>
<result type="stream">
<param name="inputStream">getInputStream</param><!--getInputStream和下载方法名一样-->
<param name="contentDisposition">attachment;filename="${fileName}";</param>
</result>
</action>
</package>
</struts>