jsp+servlet实现大型文件下载(tomcat服务器),将自己今天做的和大家一起分享

请注意。需要先下载servlet驱动Jar文件

 

jst1.jar

servlet-api.jar

standard.jar

 

服务器:tomcat 6.0

 

 

 

 

 jsp文件:download.jsp

 

<%@ page contentType="text/html; charset=GBK" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<form >
    <a href="/download/download.do?file=a.rmvb">a.rmvb</a>
</form>

 

web.xml:

 

<?xml version="1.0" encoding="GBK"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
   
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
 
  <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>cn.edu.nwpu.EncodingFilter</filter-class>
  </filter>
   
  <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>*.do</url-pattern>
  </filter-mapping>
   
  <servlet>
         <servlet-name>server</servlet-name>
          <servlet-class>cn.edu.nwpu.DownLoadServlet</servlet-class>
  </servlet>
  <servlet-mapping>
          <servlet-name>server</servlet-name>
          <url-pattern>/download.do</url-pattern>
  </servlet-mapping>
 
</web-app>

 

 

java源文件:(包名:cn.edu.nwpu)

 

格式过滤器:EncodingFilter.java

 

package cn.edu.nwpu;
import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
 * 将request以及response数据格式转换为统一的GBK格式
 */
public class EncodingFilter implements Filter {
   
    private  FilterConfig  config;
   
    //实现init接口
    public void init(FilterConfig config) throws ServletException {

            this.config = config;
       
    }
   //实现doFilter接口
    public void doFilter(ServletRequest req, ServletResponse resp,
            FilterChain chain) throws IOException, ServletException {
   
                req.setCharacterEncoding("GBK");//设置request数据格式GBK
                resp.setCharacterEncoding("GBK");//设置response数据格式GBK
                chain.doFilter(req, resp);
               
    }
   //实现destroy接口
    public void destroy() {
   
    }
}

 

控制器:DownLoadServlet.java

 

 

package cn.edu.nwpu;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class DownLoadServlet extends HttpServlet {


    private static final long serialVersionUID = 1L;


    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
   
        this.doPost(req, resp);
    }


    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
       
         
    
            String fileName = req.getParameter("file");
       
            OutputStream o = resp.getOutputStream();
       
            byte[] b = new byte[1024];
       
            File file = new File("E://Media//"+fileName);
           
            resp.reset();
           
            resp.setHeader("Content-Disposition", "attachment; filename=" +fileName);

            FileInputStream in = new FileInputStream(file);
           
            int n = 0;
           
            while((n = in.read(b)) != -1) {
               
                o.write(b, 0, n);
         
            }
            in.close();
            o.close();
    }
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值