Java Web之response对象

一、response对象继承体系结构

                

二、response对象的功能

1、设置响应数据

package com.wedu.demo.servlet;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * response的使用
 */
@WebServlet("/responseDemo")
public class ResponseDemo extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //void setStatus(int sc):设置响应的状态码
        //response.setStatus(302);

        //void setHeader(String name, String value):设置响应消息体数据的编码方式一
        //response.setHeader("content-type","text/html;charset=utf-8");

        //设置响应消息体数据的编码方式二
        response.setContentType("text/html;charset=utf-8");

        //设置服务器端以UTF-8编码输出数据到客户端
        response.setCharacterEncoding("UTF-8");

        //PrintWriter getWriter():获取字符输出流
        //PrintWriter pw = response.getWriter();
        //pw.println("hello,servlet");

        //ServletOutputStream getOutputStream():获取字节输出流
        ServletOutputStream os = response.getOutputStream();
        os.write("hello,servlet!".getBytes("UTF-8"));
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}

2、重定向

2.1、定义

就是一种特殊的响应,响应信息由服务器自动填写需要我们提供重定向的目标,该响应所包含的状态码是302。

2.2、原理

在重定向的过程中,影响浏览器做出动作的关键点即响应中的状态码及Location这个消息头。302状态就像一道命令一样,使得浏览器做出新的一次请求,而请求的地址会从头信息中查找。由于这个新的请求动作是由浏览器发出的,所以浏览器的地址栏上的地址会变成Location消息头中的地址。

2.3、特点

  • 请求的地址可以是任意地址,哪怕是当前应用以外的应用;
  • 重定向时浏览器的地址会发生改变;
  • 不会共享同一个request和response。

2.4、实现代码

package com.wedu.demo.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 重定向
 */
@WebServlet("/responseDemo")
public class ResponseDemo extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //void sendRedirect(String location):设置重定向地址
        response.sendRedirect("https://blog.csdn.net/yu1755128147/article/details/102751502");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}

2.5、与转发的区别

  • 重定向地址栏发生变化;转发地址栏路径不变;
  • 重定向可以访问其他站点(服务器)的资源,转发只能访问当前服务器下的资源;
  • 重定向是两次请求,不能使用request对象来共享数据;转发是一次请求,可以使用request对象来共享数据。

四、应用实例

1、文件下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值