响应Response

本文介绍了HTTP响应的Response对象,讲解了如何在服务端设置响应信息,并详细阐述了重定向的概念,包括重定向的特性及其实现方式,通过ServletA和ServletB的示例进行说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述

Response是代表Http响应信息的对象,其中将会封装服务器要发送给浏览器的响应信息,将response对象作为参数传递给service方法,在service方法处理请求的过程中,可以将要发送给浏览器的数据,先写入response对象中,在service方法执行完后,服务器负责从response对象中获取到响应信息,再按照http响应信息的格式组织成响应消息,发送给浏览器。
常用的方法:

getwriter()---给浏览器响应数据
setContentType()---用来解决防止响应时的中文乱码
senRedirect()--重定向

二、测试

package cn.tedu.response;

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;
import java.io.PrintWriter;

@WebServlet("/ResponseServlet")
public class ResponseServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //给浏览器响应数据
        //3.如果想要响应中文,防止中文乱码
        response.setContentType("text/html;charset=utf-8");
        //1.获取写出流
        PrintWriter out = response.getWriter();
        //2.正式写出数据——写到浏览器
        out.write("Hello,Servlet1~~~");
        out.write("Hello,Servlet2~~~");
        out.write("Hello,Servlet3~~~");
        out.write("你好,Servlet~~~");//中文乱码啦!
    }
}

三、重定向

1.概述

当浏览器向服务器发送请求访问某一个资源A时,资源A在响应时通知浏览器需要再进一步请求才能获取到对应的资源,浏览器再次向服务器发送请求访问资源B,最终是由资源B响应浏览器要获取的数据,这个过程叫做重定向,具有以下特点:
1,重定向前后是两次请求、两次响应
2,重定向前后,浏览器地址栏地址会发生变化(因为两次请求都是通过浏览器发起,浏览器知道这个跳转过程,因此地址栏地址会发生变化)。
3,重定向前后的request对象不是同一个 (因此重定向前后是两次请求,服务器根据两次请求会创建两个request对象,因此request对象不是同一个)
4,重定向前后的两个资源可以来自不同的Web应用,甚至可以是来自不同的虚拟主机或者服务器。
5,使用代码: response.sendRedirect(“重定向到资源的路径”);
在这里插入图片描述

2.测试

ServletA
package cn.tedu.redirect;

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("/ServletA")
public class ServletA extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //面试题:重定向和请求转发的区别???
        //1,请求转发是请求request的功能,全程1次请求1次响应,地址栏不变
        //request.getRequestDispather("目标访问的方式").forward(请求,响应)
        //2,重定向是response的功能,全程2次请求2次响应,地址栏改变
        //response.sendRedirect("目标访问的方式")
        response.sendRedirect("https://www.baidu.com/");
    }
}

ServletB
package cn.tedu.redirect;

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("/ServletB")
public class ServletB extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

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

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值