7、请求转发与重定向

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值