SpringMVC下载文档--weblogic打war包后下载文档异常处理(页面无刷新下载)

本文详细介绍如何在SpringMVC框架下实现文档下载功能,包括前端JSP页面调用及后端Java代码处理流程,适合希望掌握文档下载技术的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要介绍SpringMVC框架下实现java代码中下载服务器文档的功能:

前端jsp代码:

<%@ page contentType="text/html;charset=UTF-8" %>
<!-- 是否忽略特殊标签:否 -->
<%@ page isELIgnored="false" %>
<!-- 加载C标签 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<body>
<div class="fn-left tips-type">
	商户下载
    
<a class="am-ft-blue" href="javascript:void(0);"onclick="download_file('${ctx}/downLoad/loadDoc?filename=行业成员管理确认书.docx')">《行业成员管理确认书》</a>
,填写结尾处的联系信息并盖公章/合同章、加盖骑缝章,正文内容不得修改。盖章原件须拍摄清晰照片后上传。

</div>
</body>
</html>

JS代码(重新加载框架下载):

//下载管理证书
function download_file(url){
    if (typeof (download_file.iframe) == "undefined"){
        var iframe = document.createElement("iframe");
        download_file.iframe = iframe;
        document.body.appendChild(download_file.iframe);
    }
    download_file.iframe.src = url;
    download_file.iframe.style.display = "none";
}

 后台代码:


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * 
 * @Description: 下载文档
 * @author: xiangcheng
 * @date  : 2018年10月19日上午9:21:43
 * @version: V2.3
 */
@Controller
@RequestMapping(value = "/downLoad")
public class DownLoadDocController {
	
	private static final Logger logger = LoggerFactory
			.getLogger(DownLoadDocController.class);
	
	@RequestMapping(value="/loadDoc",method=RequestMethod.GET)
    public void download(@RequestParam(value="filename")String filename,HttpServletRequest request,
            HttpServletResponse response) throws IOException {
		logger.info("##############开始下载授权证书文件##############"+request.getSession().getServletContext().getRealPath("\\"));
        try {
			//模拟文件需要下载的文件  
        	String path = request.getSession().getServletContext().getResource("/static/doc/").getFile()+filename; 
        	System.out.println("=============下载路径:"+path);
			//获取输入流  
			InputStream bis = new BufferedInputStream(new FileInputStream(new File(path)));
			//转码,避免文件名中文乱码  
			filename = URLEncoder.encode(filename,"UTF-8");  
			//设置文件下载头  
			response.addHeader("Content-Disposition", "attachment;filename=" + filename);    
			//1.设置文件ContentType类型,这样设置,会自动判断下载文件类型    
			response.setContentType("multipart/form-data");   
			BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());  
			int len = 0;  
			while((len = bis.read()) != -1){  
			    out.write(len);  
			    out.flush();  
			}  
			out.close();
			bis.close();
		    logger.info("##############下载授权证书文件成功!!##############");
		} catch (Exception e) {
			logger.error("文件下载失败!filename:"+filename,e);
		}  
    }
}

说明:如果是Tomcat或者jetty服务,获取文件路径的方法可以是:

    String path = request.getSession().getServletContext().getRealPath("/")+filename; 

PS:但是如果发布到weblogic打war包后下载就需要用下面这个方法,否则会报FileNotFoundException:异常!!!

    String path = request.getSession().getServletContext().getResource("/static/doc/").getFile()+filename; 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值