【JavaWeb】HttpServletResponse响应即response
概述:继承了ServletResponse接口的子接口,功能和方法更加强大
1.通过response设置响应行
代码: setStatus(int sc)
2.通过response设置相应头
setHeader(String name ,String value)
addHeader(String name,String value)
setIntHeader(String name,int value)
setDateHeader(String name,long date)
同样的
add....
add....
add表示在原有的后面添加,set表示重新设置
3. 通过resonse设置响应体
方法一:getWriter()方法:
代码: PrintWriter writer =response.getWriter();
具体实现过程简介:把response的缓冲区Writer这一块的内容给到了writer,然后通过writer的writer()方法像writer
(也就是response缓冲区内写东西)
注意:
①设置响应体时需要告知response拿到缓冲内容时候所参照的编码表,
代码: response.setCharacterEncoding("UTF-8") -----这句代码可以不写,
因为设置了客户端之后,其实tomcat会自动的选择对应的参照的编码表
同时客户端解码也需要使用utf-8,因此需要通过文件头告知客户端
代码:response.setHeader("Content-Type","text/html;charset=UTF-8")
前一个参数是键,后一个参数是值
方法二:getOutputStream()
代码:
ServleOutputStream out = response.getOutputStream();
//获得web应用下的资源的绝对路径,想到了调用getRealPath()
String realPath=this.getServletContext().getRealPath("a.jpg");
InputStream in=new FileInputStream(realPath);//输入流中存入一个文件,即图片
int len=0;
byte[] buffer=new byte[1024];
while((len=in.read(buffer))>0){// 输入流对象in调用方法read(bayte b[]),一次读取一个数组的长度到数组b中,返回值len是这一次读入缓冲数组的字节总数
out.write(buffer,0,len);}//read读完时返回-1每次向,out输出流写入buffer中的字节数,从0开始长度为len
in.close();
out.close();
具体实现过程和writer是一样的
注意事项:
①request和response中获取资源存在中文的问题
②getWriter()和getOutputStream()不能同时调用