Response设置响应数据功能介绍及重定向

简介: Response设置响应数据功能介绍及重定向

一、Response设置响应数据功能介绍

响应数据分为3部分:


1、响应行:HTTP/1.1 200 OK


void set Status(int sc):设置响应状态码


2、响应头:Content-Type:text/html


void setHeater(String name,String value):设置响应头键值对


3、响应体:<html><head></head><body></body></html>


PrintWriter getWriter():获取字符输出流

ServletOutputStream getOutputStream():获取字节输出流

二、Response完成重定向

重定向(Redirect):一种资源跳转方式

e2532b5554d94778b58b2ff317a42c1e.png

实现方式:

resp.setStatus(302);
resp.setHeader("location","资源B的路径");


代码示例:


ResponseDemo1重定向到ResponseDemo2:

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet("/resp1")
public class ResponseDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("demo1...");
        //重定向
        //1、设置响应状态码 302
        response.setStatus(302);
        //2、设置响应头 Location
        response.setHeader("Location","/Tomcate-demo2/resp2");
;
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

ResponseDemo2:

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("/resp2")
public class ResponseDemo2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("demo2...");
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

运行结果:


访问resp1重定向到resp2的URL:

6d6a1239c5104d5c9178e8ff7bca9d4b.png

控制台:

9459ad437a45444eb4d0501b60871362.png

也可用简化方式完成重定向,内部资源和外部资源均可的一种方式:

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet("/resp1")
public class ResponseDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("demo1...");
        //简化方式完成重定向,内部资源和外部资源均可
        //动态获取虚拟目录
        String contextPath = request.getContextPath();
        response.sendRedirect(contextPath + "/resp2");
//        response.sendRedirect("https://www.baidu.cn");
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

执行结果根上面相似,重定向外部资源的时候会跳转到相应的重定向网址。


重定向特点:


1、浏览器地址栏路径发生变化

2、可以重定向到任意位置的资源(服务器内部、外部均可)

3、两次请求,不能在多个资源使用request共享数据

三、路径问题

浏览器使用:需要假虚拟目录(项目访问路径)

服务端使用:不需要加虚拟目录


<a href = "路径"> 加虚拟目录
<form action = "路径"> 加虚拟目录
req.getRequestDispatcher("路径") 不加虚拟目录
resp.sedRedirect("路径") 加虚拟目
目录
相关文章
|
8月前
|
Java 数据安全/隐私保护
response对象的转发和重定向
response对象的转发和重定向
66 0
|
Web App开发 缓存 JavaScript
如何处理页面关闭时发送HTTP请求?
在实际项目开发中,可能会遇到这样的业务问题:如何在用户离开或关闭页面时发送HTTP请求给服务端?可能有人会觉得页面都关闭了,还需要发送什么请求,完全没必要噻。但如果真有这样的业务需求落到自己的头上,那么我们应该如何来实现呢?
2322 0
如何处理页面关闭时发送HTTP请求?
|
7月前
|
前端开发
Request(获取请求数据的)请求转发,response响应数据,将数据反馈给前端
Request(获取请求数据的)请求转发,response响应数据,将数据反馈给前端
|
8月前
|
存储 缓存
ETag的值是如何在HTTP响应中传递给客户端的
ETag的值是如何在HTTP响应中传递给客户端的
|
JSON PHP 数据格式
响应 方式
响应 方式
|
缓存
HttpServletResponse概述、常见状态码、发送状态码的方法、设置缓存时间及文件下载
HttpServletResponse概述、常见状态码、发送状态码的方法、设置缓存时间及文件下载
332 0
Charles修改请求数据和响应数据
Charles修改请求数据和响应数据
怎么修改请求的参数和响应
怎么修改请求的参数和响应
107 0
获取网页数据 Qt 从客户端发起http响应
获取网页数据 Qt 从客户端发起http响应
232 0
|
JSON 缓存 前端开发
【Ajax入门技术】如何设置请求头 体 ,利用ajax进行取消请求数据操作,解决重复请求问题,请求超时网络异常以及获取json数据
【Ajax入门技术】如何设置请求头 体 ,利用ajax进行取消请求数据操作,解决重复请求问题,请求超时网络异常以及获取json数据
296 0
【Ajax入门技术】如何设置请求头 体 ,利用ajax进行取消请求数据操作,解决重复请求问题,请求超时网络异常以及获取json数据

热门文章

最新文章

下一篇
开通oss服务