package com.ucit.ca.webApp.action; import java.io.InputStream; import java.sql.SQLException; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; import com.ucit.ca.webApp.po.User; import com.ucit.ca.webApp.service.ICheckAppService; import com.ucit.ca.webApp.service.IDownLoadsService; import com.ucit.ca.webApp.service.Impl.DownLoadsServiceImpl; /** * 下载文件 * @author JiF * */ public class DownLoadsAction extends ActionSupport { private static final Log log = LogFactory.getLog(DownLoadsAction.class); @Resource private IDownLoadsService downLoadsService; //下载服务层 @Resource private ICheckAppService checkAppService; //检查登陆用户对应用的权限 private String kid; // Report输出流 public InputStream resultStream; // 输出流Content Type public String contentType; // 输出流的生成的文件名 public String fileName; /** * 证书下载 * @return */ public String getP12(){ HttpServletRequest request = ServletActionContext.getRequest(); User user; try { user=checkAppService.CheckLoginUser(request); if (user==null && !user.getUid().equals(kid)){ log.error("log24"); addActionMessage("log24"); return INPUT; } resultStream=downLoadsService.getP12(kid); } catch (SQLException e) { //获取P12文件异常 log.error(e.getMessage()); addActionError(e.getMessage()); return INPUT; } catch (Exception e) { //获取帐号有异常 log.error(e.getMessage()); addActionError("e.getMessage()"); return INPUT; } contentType = "application/x-pkcs12"; fileName = "attachment; filename=\""+user.getUloginId()+".p12\""; log.info("down p12 Success"); return SUCCESS; } public String getKid() { return kid; } public InputStream getResultStream() { return resultStream; } public String getContentType() { return contentType; } public String getFileName() { return fileName; } public void setKid(String kid) { this.kid = kid; } }
<!-- 下载--> <package name="down" namespace="/Down" extends="global_package"> <action name="downLoad_*" method="{1}" class="downLoadAction"> <result name="success" type="stream"> <!-- 对应contentType属性 --> <param name="contentType">${contentType}</param> <!--对应的InputStream的属性名 --> <param name="inputName">resultStream</param> <!-- 对应属性fileName,定义流输出格式 --> <param name="contentDisposition">${fileName}</param> <!-- 定义bufferSize,可选 --> <param name="bufferSize">1024</param> </result> <result name="input">/down/i_{1}.jsp</result> </action> </package>