HttpServletResponse
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象,和代表相应的response对象;
request和response对象既然代表请求和响应,那么我们要获取客户机提交上来的数据,只需要找request独享就行了。要想可以户籍输出数据,只需要找response对象就行了。
1.相应Response中输出汉字,关于编码的知识;
public class ResponseDemo1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置响应头,指定浏览器以UTF-8的形式打开;
resp.setHeader("Content-type","text/html;charset=UTF-8");
String data="中国";
ServletOutputStream outputStream = resp.getOutputStream();
//并且以utf-8的形式去读这个data;
outputStream.write(data.getBytes("UTF-8"));
}
}
2.使用response的write流写数据:
public class ResponseDemo2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//控制response使用的码表,以控制response以什么码表想浏览器写数据;
resp.setCharacterEncoding("UTF-8");
//设置响应头,指定浏览器以UTF-8的形式打开;
// resp.setHeader("Content-type","text/html;charset=UTF-8");
resp.setContentType("text/html;charset=UTF-8");//也可以这样设置头
String data="中国";
PrintWriter writer = resp.getWriter();
//writer写的是字符串;
writer.write(data);
}
}
ps:
response 的getWriter 和getOutputStream 是 互斥的,不能同时调用;
注意在转发的时候要特别注意;但是重定向的话就可以(因为两次请求,两个response对象)
尽量使用getOutputStream 字节流进行数据的传输;
3.下载功能:
在应用的根目录下放一个图片文件
public class ResponseDemo3 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Servl