HTTP中的重定向和请求转发的区别
2014-11-26 21:46
316 查看
一、调用方式
1.在servlet中调用请求转发的语句如下:request.getRequestDispatcher("new.jsp").forward(request, response);//转发到new.jsp
请求转发允许把请求转发给同一应用程序中的其他Web组件。这种技术通常用于Web应用控制层的Servlet流程控制器,它检查HTTP请求数据,并将请求转发到合适的目标组件,目标组件执行具体的请求处理具体的请求处理操作,并生成响应结果。
Servlet类使用javax.servlet.RequestDispatcher.forward()方法来转发它所收到的HTTP请求。转发目标组件将处理该请求并生成响应结果,或者将请求继续转发到另一个组件。最初请求的ServletRequest和ServletResponse对象被传递给转发目标组件,这使得目标组件可以访问整个请求上下文。值得注意的是,只能把请求转发给同一Web应用中的组件,而不能转发给其他Web应用的组件。
如果当前的Servlet组件要把请求转发给一个JSP组件,如hello.jsp,可以在Servlet的service()方法中执行以下代码:
RequestDispatcher rd = request.getRequestDispatcher("hello.jsp");
//Forward to requested URL
rd.forward(request, response);
在JSP页面中,可以使用<jsp:forward>标签来转发请求,例如:
<jsp:forward page="hello.jsp">
对于请求转发,转发的源组件和目标组件共享request范围内的共享数据。
2.在servlet中调用重定向的语句如下:
response.sendRedirect("new.jsp");//重定向到new.jsp
也可以在jsp页面中实现重定向:
<%response.sendRedirect("new.jsp");//重定向到new.jsp%>
Web组件可以将请求重定向到任一URL,而不仅仅是同一应用中的URL。
重定向的源组件和目标组件之间不共用同一个HttpServletRequest对象,因此不能共享request范围内的共享数据。
二、区别
1.重定向访问服务器两次,转发只访问服务器一次。2.重定向可以看见目标页面的URL,转发只能看见第一次访问的页面URL,以后的工作都是有服务器来做的。
3.重定向跳转后必须加上return,要不然页面虽然跳转了,但是还会执行跳转后面的语句,转发是执行了跳转页面,下面的代码就不会在执行了。
4.在request级别使用信息共享,使用重定向必然出错
5.还有一个大的区别就是,重定向可以访问自己web应用以外的资源
相关文章推荐
- HTTP中的重定向和请求转发的区别
- HTTP中的重定向和请求转发的区别
- HTTP中的重定向和请求转发的区别
- HTTP中的重定向和请求转发的区别
- HTTP中的重定向和请求转发的区别
- HTTP中的重定向和请求转发的区别(转)
- HTTP中的重定向和请求转发的区别
- HTTP中请求转发与重定向的区别
- HTTP中的重定向和请求转发的区别
- HTTP中的重定向和请求转发的区别
- HTTP中的重定向和请求转发的区别
- HTTP中的重定向和请求转发的区别
- HTTP中的重定向和请求转发的区别
- HTTP中的重定向和请求转发的区别
- HTTP中的重定向和请求转发的区别
- 005_Http之request获取客户端信息06-请求转发及包含和重定向的区别
- HttpServletRequest对象请求转发和HttpServletResponse对象请求重定向之间的区别
- HTTP中的重定向和请求转发的区别
- HTTP中的重定向和请求转发的区别
- HTTP中的重定向和请求转发的区别