欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【JavaWeb】HttpServletResponse响应即response

程序员文章站 2022-05-08 16:03:28
...

概述:继承了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,然后通过writerwriter()方法像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()不能同时调用