ServletResponse使用介绍

    ServletResponse为将响应发送到客户端的对象;Servlet 容器创建 ServletResponse 对象,并将它作为参数传递给Servletservice 方法,如下图 ;

    

    HttpServletResponse对象封装了向客户端发送数据、发送响应头,发送响应状态码的方法;

    • 常用API

void setStatus(int sc) 设置此响应的状态代码

void setHeader(String name, String value)  用给定名称和值设置响应头
      • 使用步骤

      1. 创建ResponseServlet;

      2. 调用setHeader,设置消息头;

      3. 调用setStatus,设置响应状态码;

    • 常见响应头    

  

location:
重定向操作:通常告知浏览器马上向该地址发送请求,通常和响应码302一起使用;

content-encoding:
设置当前数据的压缩格式,告知浏览器以何种压缩格式解压数据;

content-disposition:
通知浏览器以何种方式获取数据(直接解析数据(网页,图片文本),或者以附件方式(下载文件);

content-type:
实体头部用于指示资源的MIME类型(MIME类型:用于提示当前文件的媒体类型,例如图片——(image/png)、音频——(audio/ogg);
它的作用与传统上Windows上的文件扩展名相同。该名称源于最初用于电子邮件的MIME标准);

content-type常用的设置一般都是——“text/html;charset=utf-8”,其中“text/html;”——设置浏览器以文件格式解析数据;“charset=utf-8”——响应数据的编码表;

  

  重定向使用:

    重定向是服务器通知浏览器去访问另一个地址,即再发出另一个请求,是客户端行为;
    

    实现步骤:

       1.response.setStatus 设置状态码

       2. response.setHeader 设置响应头

       3. response.sendRedirect 重定向

    

    重定向代码实现1:

public class AServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

          //响应码为200表示响应成功,而响应码为302表示重定向;所以完成重定向的第一步就是设置响应码为302; response.setStatus(302);
          //因为重定向是通知浏览器再第二个请求,所以浏览器需要知道第二个请求的URL,所以完成重定向的第二步是设置Location头,指定第二个请求的URL地址 response.setHeader("Location", "http://localhost:8080/hello/BServlet"); } }

  

    重定向代码实现2:

public class AServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		response.sendRedirect("/hello/BServlet");

	}

}

  

    特点:

      1.重定向是客户端行为;
      2.重定向是浏览器做了至少两次的访问请求的;
      3.重定向浏览器地址改变;
      4.重定向2次跳转之间传输的信息会丢失(request范围),不能使用request域对象进行数据共享;
      5.重定向可以指向任何的资源,包括当前应用程序中的其他资源,同一个站点上的其他应用程序中的资源,其他站点的资源;
      注意:传递给HttpServletResponse.sendRedirect 方法的相对URL“/”开头,它是相对于整个WEB站点的根目录 ;

 

原文地址:https://www.cnblogs.com/coder-zyc/p/10618876.html