java struts2 (注解方式) 文件下载

来源:互联网 发布:西古德森数据 编辑:程序博客网 时间:2024/06/06 00:59
package com.jshop.action;


import java.io.FileInputStream;

import java.io.File;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;


import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.ServletActionContext;

import org.apache.struts2.json.annotations.JSON;
import org.springframework.stereotype.Controller;

import com.jshop.action.tools.BaseTools;
import com.jshop.action.tools.Validate;
import com.jshop.dao.sqlite.SQLiteDBHelper;
import com.jshop.entity.ArticleT;
import com.jshop.service.ArticleTService;
import com.opensymphony.xwork2.ActionSupport;
@ParentPackage("jshop")
@Controller("fileDownloadAction")
@Action(value="download",results={@Result(name = "success", type = "stream", params = { "contentType",
"application/octet-stream;charset=ISO8859-1", "inputName",
"inputStream", "contentDisposition",
"attachment;filename=${downloadFileName}", "bufferSize", "4096" })})

public class FileDownloadAction extends ActionSupport {

/**
*
*/
private static final long serialVersionUID = 1L;
private final static String DOWNLOADPATH="PDF";
// private String fileName;// 初始的通过param指定的文件名属性
private ArticleTService articleTService;
private String articleid;
private String contentvalue;
private String dbmanagemernt;
private ArticleT bean = new ArticleT();
private SQLiteDBHelper db=new SQLiteDBHelper();

private String fileName;
public String getContentvalue() {
return contentvalue;
}

public void setContentvalue(String contentvalue) {
this.contentvalue = contentvalue;
}

@JSON(serialize = false)
public ArticleTService getArticleTService() {
return articleTService;
}

public void setArticleTService(ArticleTService articleTService) {
this.articleTService = articleTService;
}

public String getArticleid() {
return articleid;
}

public void setArticleid(String articleid) {
this.articleid = articleid;
}
public void setFileName(String fileName) {
this.fileName = fileName;

}
public String getDbmanagemernt() {
return dbmanagemernt;
}

public void setDbmanagemernt(String dbmanagemernt) {
this.dbmanagemernt = dbmanagemernt;
}

public InputStream getInputStream() throws Exception {
try {
if(Validate.StrNotNull(this.getArticleid())){
bean=this.getArticleTService().findArticleByarticleid(this.getArticleid().trim());
fileName=bean.getTitle()+".PDF";//文件名
return new FileInputStream(ServletActionContext.getServletContext().getRealPath("")+"/PDF/"+fileName);
}else if(Validate.StrNotNull(this.getDbmanagemernt())){
fileName="general.sql";
return new FileInputStream(ServletActionContext.getServletContext().getRealPath("")+"/backupDatabase/"+fileName);

}else{
try {
fileName="jshopmactive.db";
// String path=ServletActionContext.getServletContext().getRealPath("")+"/sqliteDB/"+fileName;
// File f= new File(path);
// if(!f.exists()){
return new FileInputStream(ServletActionContext.getServletContext().getRealPath("")+"/sqliteDB/"+fileName);
// }else{
// return new FileInputStream(path);
// }
} catch (Exception e) {
throw e;
}
}
} catch (Exception e) {
throw e;
}
// return null;
}

public String execute() throws Exception {

return SUCCESS;

}



/** 提供转换编码后的供下载用的文件名 */

public String getDownloadFileName() {

String downFileName = fileName;

try {

downFileName = new String(downFileName.getBytes(), "ISO8859-1");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

return downFileName;

}

}

这里调用的是struts2 内部的下载机制,运用的是struts2 注解方式。注解方式,是将整个class 作为一个Action 供前台调用。 
原创粉丝点击