转发与重定向区别
重点:
请求转发和重定向的区别:
本质区别:请求转发只发了一次请求,重定向发了两次请求
1)请求转发:地址栏还是初始请求的地址
重定向:地址栏不是第一次请求的地址,是最后一次请求的地址
2)请求转发:在最终的servlet中,request对象和中转的request对象是同一个request对象
重定向:在最终的servlet中request对象和中转对象的request的对象不再是同一个request对象
3)请求转发:/代表当前web应用根目录 http://localhost:8989/servlet02--->这就是当前web应用根目录
重定向:/ 代表当前Web站点的根目录 http://localhost:8989---->这就是当前Web站点的根目录
4)请求转发:只能转发当前Web应用下的资源
重定向:可以重定向到外部资源
one.html:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <a href="forWardServlet">请求转发</a> <br/> <a href="redriceServlet">重定向</a> </body> </html>
转发:ForWordServlet.java
package com.hpe.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/forWardServlet") public class ForWardServlet extends HttpServlet { private static final long serialVersionUID = 1L; public ForWardServlet() { super(); // TODO Auto-generated constructor stub } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("ForWardServlet......."); //向request中设置值 request.setAttribute("name","ForWardServlet"); String name = (String) request.getAttribute("name"); System.out.println(name); //请求转发 request.getRequestDispatcher("testServlet").forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
重定向:RedriceServlet.java
package com.hpe.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/redriceServlet") public class RedriceServlet extends HttpServlet { private static final long serialVersionUID = 1L; public RedriceServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("RedriceServlet......."); //向request中设置值 request.setAttribute("name","RedriceServlet"); String name = (String) request.getAttribute("name"); System.out.println(name); //重定向: response.sendRedirect("testServlet"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }

浙公网安备 33010602011771号