<%@ page contentType="text/html;charset=gb2312" import="java.io.*"%> 
<% 
try{ 
String str=request.getParameter("name1"); 
str=new String(str.getBytes("iso8859-1"),"gb2312"); 
File fileLoad=new File("f:\\tools\\xiazai",str);//下载文件 
response.reset(); 
OutputStream o=response.getOutputStream(); 
BufferedOutputStream bos=new BufferedOutputStream(o); 
byte b[]=new byte[500];//输出文字用的字节数组,每次发送500个字节到输出流 
response.setHeader("Content-disposition","attachment;filename="+new String(str.getBytes("gb2312"),"iso8859-1"));//客户使用保存文件的对话框 
response.setContentType("application/x-tar");//通知客户文件的mime类型 
long fileLength=fileLoad.length();//通知客户文件的长度 
String length=String.valueOf(fileLength); 
response.setHeader("Content_Length",length); 
FileInputStream in=new FileInputStream(fileLoad);//读取文件并发给客户下载 
int n=0; 
while((n=in.read(b))!=-1) 

bos.write(b,0,n); 

bos.close(); 

catch(Exception e){ 
out.println("发生了异常"+e); 

response.reset(); 
%> 其中的response.reset()和response.setHeader()这两种方法该怎样理解呀,response.setHeader("Content-disposition","attachment")什么意思呀, 
我如果把含有response方法(包括上面两种)的代码,如:response.setHeader("Content_Length",length);response.ContentType()去掉,代码也可照常编译,为什么呀?