重定向
重定向的特点: 1.地址栏发生变化 2.重定向可以访问其他站点(服务器)的资源 3.重定向是两次请求,不可以使用Request对象共享数据
重定向的示例代码:
package priv.lwx.javaex.servlet_demo.web.servlet.response;
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;
/**
* 重定向演示代码
*
* @author liaowenxiong
* @date 2022/1/10 11:01
*/
@WebServlet("/response_demo01")
public class ResponseDemo01 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 {
// 访问ResponseDemo01,重定向到ResponseDemo02
System.out.println("访问了ResponseDemo01");
// 设置重定向的状态码
resp.setStatus(302);
// 设置响应头
resp.setHeader("Location","/servlet_demo/response_demo02");
}
}
或者
package priv.lwx.javaex.servlet_demo.web.servlet.response;
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;
/**
* 重定向演示代码
*
* @author liaowenxiong
* @date 2022/1/10 11:01
*/
@WebServlet("/response_demo03")
public class ResponseDemo03 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("访问了ResponseDemo03");
// 访问ResponseDemo03,重定向到ResponseDemo02
resp.sendRedirect("/servlet_demo/response_demo02");
}
}
转发
转发的特点: 1.转发地址栏路径不变 2.转发只能访问当前服务器下的资源 ??同个服务器下的其它项目的资源也可以跳转吗? 3.转发是一次请求,可以使用Request对象共享数据
转发的示例代码:
package priv.lwx.javaex.servlet_demo.web.servlet.request;
/**
* 请求转发演示代码
*
* @author liaowenxiong
* @date 2021/12/29 11:21
*/
import javax.servlet.RequestDispatcher;
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(value = "/request_demo07")
public class RequestDemo07 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("demo07被访问了...");
// 转发到demo08资源
/*RequestDispatcher dispatcher = request.getRequestDispatcher("/request-demo08");
dispatcher.forward(request,response);*/
// 转发前存储数据到request对象中
request.setAttribute("msg","hello");
request.getRequestDispatcher("/request-demo08").forward(request, response);
}
}