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("路径") 加虚拟目
目录
相关文章
|
25天前
|
Java 数据安全/隐私保护
response对象的转发和重定向
response对象的转发和重定向
10 0
|
Web App开发 缓存 JavaScript
如何处理页面关闭时发送HTTP请求?
在实际项目开发中,可能会遇到这样的业务问题:如何在用户离开或关闭页面时发送HTTP请求给服务端?可能有人会觉得页面都关闭了,还需要发送什么请求,完全没必要噻。但如果真有这样的业务需求落到自己的头上,那么我们应该如何来实现呢?
1836 0
如何处理页面关闭时发送HTTP请求?
|
1月前
|
安全 数据处理 C#
C# Post数据或文件到指定的服务器进行接收
C# Post数据或文件到指定的服务器进行接收
|
4月前
|
存储 数据处理
Request请求转发与Respones请求重定向有什么区别?
Request请求转发与Respones请求重定向有什么区别?
|
9月前
|
JSON PHP 数据格式
响应 方式
响应 方式
|
11月前
|
缓存
HttpServletResponse概述、常见状态码、发送状态码的方法、设置缓存时间及文件下载
HttpServletResponse概述、常见状态码、发送状态码的方法、设置缓存时间及文件下载
129 0
|
11月前
|
Python
Charles修改请求数据和响应数据
Charles修改请求数据和响应数据
|
JSON 网络安全 API
如何修复 WordPress 中的“响应不是有效的 JSON 响应”消息
WordPress定制开发过程中 出现响应无效的 JSON尝尝令开发工程师很苦恼,其实大多数常见的 WordPress 错误都是由相同的问题和错误配置引起的,因此相对容易排除故障。下面北京六翼开源建站的开发工程师给大家讲一下,WordPress 定制开发遇到响应无效的 JSON该怎么办?
如何修复 WordPress 中的“响应不是有效的 JSON 响应”消息
怎么修改请求的参数和响应
怎么修改请求的参数和响应
70 0
|
搜索推荐
重定向响应
什么是重定向响应