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;
//重定向特点:
//1.重定向可以访问其他服务器的资源
//2.重定向地址栏地址改变
//3.重定向是两次请求
//转发特点:
//1.只能访问当前服务器资源
//2.地址栏地址不变
//面试题:
//forward跟redirect的区别?
@WebServlet( "/ResponseDemo1")
public class ResponseDemo1 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("demo1...");
// 重定向
// 方法一:
// 1.设置状态码302
// 2.设置响应头location
// response.setStatus(302);
// response.setHeader("location","/AServletTestCode_war_exploded2/ResponseDemo2");
// 方法二
// 简单的重定向
// 动态获取虚拟目录
String contextPath = request.getContextPath();
response.sendRedirect(contextPath+"/ResponseDemo2");
// 1.测试重定向是否是两次请求
request.setAttribute("mand","hello i am from response1");
// 2.测试访问其他站点资源
// response.sendRedirect("http://www.itcast.cn");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, 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;
@WebServlet( "/ResponseDemo2")
public class ResponseDemo2 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("demo2...");
Object mand = request.getAttribute("mand");
System.out.println(mand==null?"说明这是两次请求":"这是一次请求");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}