栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

目录

一、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、响应体:

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

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

二、Response完成重定向

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

实现方式:

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:

 控制台:

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

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共享数据

三、路径问题

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

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

加虚拟目录

 加虚拟目录

req.getRequestDispatcher("路径") 不加虚拟目录

resp.sedRedirect("路径") 加虚拟目

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/893665.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号