学习JavaWeb之Servlet_Response

  之前看了Request对象,接下来我们来看下与其相对应的Response对象。

1)关于HttpServletResponse 

  HttpServletResponse,继承自ServletResponse,主要用于将经过处理后的数据发送至服务器,其实现也是基于Http协议,跟Request一样,为了提高开发的效率,将原生的Socket方式进行了封装,形成这比较方便好用的HttpServletResponse。

2)HttpServletResponse的常用方法
  Response中也包含了大量的方法,不过有一些方法并不常用,所以我们这里就不进行介绍,需要的话查看官方的文档即可,下面介绍一些比较常用的方法:

addHeader() // 添加一个响应头信息
setHeader() // 设置一个响应头信息
addIntHeader() //设置一个整型类型的头信息
setStatus()  // 设置状态码
sendError() //发送错误状态码
addCookie() //添加一个cookie(后面相关部分介绍)
getOutputStream() // 获取输出流
getWriter() // 获取一个PrintWrite
setContentType() // 设置该文件的MIME类型

下面介绍一下常用方法的具体使用

3)getWriter()

  该方法放回一个PrinterWrite 类型的对象,用于向浏览器输出数据,例如输出HTML代码,相关的信息等等

PrintWriter writer = response.getWriter();
writer.write("Hello Servlet");
也可以直接输出格式化的HTML代码( 输出后的代码会被浏览器进行解析 )

	writer.write("<html><body>Hello World</body></html>");

4)setContentType()

  当然,为了能够浏览器能够正常解析响应的内容,例如HTML代码,中文字符等,所以需要对输出的内容以及编码方式进行设置,通常的做法就是根据所要输出的文件的MIME类型进行指定,编码方式一般都是设置为utf-8,那么为了正确解析上面的HTML代码,我们可以进行这样的设置

response.setContentType("text/html;charset=utf-8");
而且该设置必须在写出之前进行设置,也就是在调用write方法之前调用,具体的原因是因为write方法一旦获取得到数据,便会马上将其输出到浏览器,所以,必须在调用该方法之前进行ContentType的设置

5)getOutputStream()

该方法是打开一个输出流,主要是用于将文件、图像、音频等等这些非文本类型的数据输出,当然输出的时候同样需要设置ContentType类型

<span style="white-space:pre">	</span>response.setContentType("text/html;charset=utf-8");
<span style="white-space:pre">	</span>FileReader file = new FileReader(getServletContext().getRealPath("/form.html"));
<span style="white-space:pre">	</span>char[] buffer = new char[2048];
<span style="white-space:pre">	</span>file.read(buffer);
<span style="white-space:pre">	</span>BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(response.getOutputStream()));
<span style="white-space:pre">	</span>bw.write(buffer);
  这里有一个需要注意的地方就是,获取指定文件的时候,由于是部署之后的文件的地址,所以需要使用getServletContext.getRealPath("url");来获取工程中的问价,具体原因目前还不太了解,正在学习中。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值