@duyao
2015-05-01T01:21:31.000000Z
字数 2425
阅读 1936
servlet
a. getWriter()用于向客户端回送字符;getOutpuStream()返回的对象可以回送字节数据[getOutpuStream(string.getBytes())]和字符数据
b. 如何选择,如果回送字符数据,使用getWriter(),如果回送字节数据,使用getOutpuStream()
c. 注意:getOutpuStream()和getWriter()2种流不能同时使用,原因是不能同时又2个输出流
当response流返回给web服务器时,web服务器会将response拆解成http相应请求,并检查其相关流是否关闭,如果没有,则关闭。
a. 将信息传送给下一个页面
response.sendRedirect("url?string1=s1&string2=s2");
response.sendRedirect("/userManager/MainFrame?nameString="+nameString);
优点:传送信息较快;缺点:只能传送字符串,不能传送对象
b.sendRedirect()不能传送对象,若传送对象要用session
responce.setDataHeader("Expires",-1);
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
//缓存一定时间,缓存一小时
responce.setDataHeader("Expires",System.currentTimeMillis()+3600*1000);
举个栗子:下载文件1.jpg
访问http://localhost:8080/myFirstWeb/Download完成下载图片
Downlaod.java
package com.dy.http;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Download extends HttpServlet {
/**
* 演示页面下载功能,使用Content-Disposition关键字
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
//getWriter和getOutputStream不能同时出现
//PrintWriter out = response.getWriter();
//下载文件的报头
response.setHeader("Content-Disposition", "attachment;filename=1.jpg");
//1.获取全路径
String path=this.getServletContext().getRealPath("/image/1.jpg");
//System.out.println(path);
//2.创建文件输入流,这样才可以下载
FileInputStream fis=new FileInputStream(path);
//创建缓冲
byte [] buffer=new byte[1024];
//每次实际读出多少比特
int len=0;
//二进制(字节)文件使用getOutpuStream()
OutputStream os=response.getOutputStream();
while((len=fis.read(buffer))>0){
os.write(buffer, 0, len);
}
//关闭流
os.close();
fis.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
1.通过HttpServletResponse可以发送http头,来控制浏览器行为
2.通过HttpServletResponse提供的函数,完成相应的功能,如文件下载,生成随机验证码