重定向
重定向的特点:
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 {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 访问ResponseDemo01,重定向到ResponseDemo02System.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 {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("访问了ResponseDemo03");// 访问ResponseDemo03,重定向到ResponseDemo02resp.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 {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}@Overrideprotected 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);}
}