Response功能介绍和Response重定向代码实现和重定向特点
Response对象
-
功能:设置响应消息
- 1.设置响应行
- 格式:HTTP/1.1 200 ok
- 设置状态码:setStatus(int sc)
- 2.设置响应头:setHeader(String name,String value)
- 3.设置响应体:
- 使用步骤:
- 获取输出流
- 字符输出流:PrintWriter getWriter()
- 字符输出流:ServletOutputStream getOutputStream()
- 使用输出流,将数据输出到客户端浏览器
- 获取输出流
- 使用步骤:
- 1.设置响应行
-
案例:
- 完成重定向
- 重定向:资源跳转的方式
- 完成重定向
package com.ailyt.servlet;
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("/rs1")
public class ResponseStudy01 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("r1.............");
/* //访问/r1 会自动跳转到/r2资源
//设置状态码为302
resp.setStatus(302);
//设置响应头location
resp.setHeader("location","/r2");*/
//简单的重定向方式
resp.sendRedirect("/r2");
}
}
package com.ailyt.servlet;
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("/rs2")
public class ResponseStudy02 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("r2.............");
}
}
-
重定向特点:
- 地址栏发生变化
- 重定向可以访问其他站点的资源
- 重定向是两次请求,不能使用request对象来共享数据
-
转发的特点:
- 转发地址栏路径不变
- 转发只能访问当前服务器下的资源
- 转发是一次请求,可以使用request对象来共享数据
-
路径写法: