1. HttpServletResponse对象的sendRedirect(String location)方法称作重定向。
如果location地址前面加上“/”,则表示相对于Servlet容器的根来请求,
即http://localhost:8080,如果location地址前没有加上“/”,则表示相对于当前请求的URI来寻找地址。
2. RequestDispatcher的forward(request, response)方法称作请求转发。
1)请求转发,整个过程处于同一个请求当中
2)重定向。实际上客户端会向服务器端发送两个请求。
3)RequestDispatcher是通过调用HttpServletRequest对象的getRequestDispatcher()方法得到的,是属于请求对象的方法。
4)sendRedirect()是HttpServletResponse对象的方法,即响应对象的方法,既然调用了响应对象的方法,那就表明整个请求过程已经结束了,服务器开始向客户端返回执行的结果。
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyForwardServlet extends HttpServlet
{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
// String username = req.getParameter("username");
// req.setAttribute("username", username);
resp.sendRedirect("myResult.jsp"); //重定向
// RequestDispatcher rd = req.getRequestDispatcher("myResult.jsp");
//
// rd.forward(req, resp); //请求转发
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
this.doGet(req, resp);
}
}