0
点赞
收藏
分享

微信扫一扫

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、响应体:<html><head></head><body></body></html>

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

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

二、Response完成重定向

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

Response设置响应数据功能介绍及重定向_开发语言

实现方式:

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:

Response设置响应数据功能介绍及重定向_前端_02

 控制台:

Response设置响应数据功能介绍及重定向_前端_03

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

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("路径") 加虚拟目

举报

相关推荐

0 条评论