现在的位置: 首页 > 综合 > 正文

7、请求转发与重定向

2018年02月05日 ⁄ 综合 ⁄ 共 971字 ⁄ 字号 评论关闭

response的sendRedirect

HttpServletResponse对象的sendRedirect(string location)方法称为重定向。如果location地址前面加上“/”,则表示相对于servlet容器的根来请求,即http://localhost:8080,如果location地址前没有加上/,则表示相对于当前请求的URI来寻找地址

RequestDispatcher的forward(request,response)方法称为请求转发,他可以通过request.getRequestDispatcher()方法获得

1、

请求转发与重定向的区别

String username = req.getParameter("username");
		
		req.setAttribute("username", username);
		
//		resp.sendRedirect("myResult.jsp"); //重定向,属于客户端再次发送请求,是另一次的请求
		
		RequestDispatcher rd = req.getRequestDispatcher("myResult.jsp");
		rd.forward(req, resp); //请求转发,是服务器端的行为,是同一个请求

对于重定向,是客户端的一次新的请求,上一次请求的信息全部丢失,请求转发是同一个请求,request对象是同一个,信息不丢失。

   1)请求转发,整个过程在同一个请求当中 

   2)重定向,实际上客户端会向服务器发送两个请求:

   3)RequestDispatcher是通过调用HttpServletReuuest对象的getRequestDispatcher()方法得到的,是属于请求对象的方法。

   4)sendRedirect()是HttpServletResponse对象的方法,既然是响应对象的方法,既然调用了相应对象的方法,那就表明整个请求过程已经结束了,服务器开始向客户端返回执行的结果。

   5)重定向在FireBug中的示意图

 

可以看到,请求是两个,一个是GET MyForwardServlet?username=tttttt,一个是GET myResult.jsp,而地址栏这时显示的也是http://localhost:8080/webp1/myResult.jsp

 

抱歉!评论已关闭.