今天做项目的时候遇到问题,调查的过程中想知道下载的时候IE8中的保存弹出框是什么时候弹出的。
结果debug发现,当输出流关闭的时候才弹出这个框框。
而chrome是在写的时候就开始下载,然后输出流关闭的时候就下载完成。
以下是调试的代码
View Code
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.interceptor.ServletResponseAware; import com.opensymphony.xwork2.ActionSupport; public class DownloadAction extends ActionSupport implements ServletResponseAware{ HttpServletResponse response; public String down(){ try { response.setContentType("application/x-msdownload"); response.setHeader("Content-Disposition", "attachment;filename=test.txt" ); System.out.println("download begin"); PrintWriter pw = new PrintWriter(response.getOutputStream()); GetData.getData(pw); pw.close(); System.out.println("download end....."); } catch (IOException e) { e.printStackTrace(); } return null; } @Override public void setServletResponse(HttpServletResponse arg0) { this.response = arg0; } }
View Code
public class GetData { public static void getData(PrintWriter pw){ try { Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbms","root","goodluck"); PreparedStatement stm = con.prepareStatement("select * from fileCreate"); ResultSet rs = stm.executeQuery(); while(rs.next()){ System.out.println("download process....."); pw.write(rs.getString(1)+"\r\n"); } pw.flush(); con.close(); System.out.println("download close....."); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } }