request.getRequestDispatcher(".jsp")和response.sendRedirect(".jsp")的区别
2014-05-16 12:20
423 查看
大多数的面试题几乎都会这个问题今天总结一下
forward是服务器内部重定向,程序在接到请求重新定向到另一个程序,客户机不知道。
而sendRedirect()是服务器端接受请求后发送一个状态头给客户,客户再一次请求。
它们之间的区别大致有一下几点
1.地址栏显示
forward是服务器请求资源,服务器直接访问目标地址的url,把那个url的响应内容读取
过来,由于浏览器不知道服务器发送的内容从何而来,所以其地址还是原来的地址。
sendRedirect是服务根据逻辑,发送一个状态码,告诉浏览器去请求那个地址,所以
地址栏是显示新的url.。
2.从数据共享来说
forward:转发页面和转发到的页面数据共享request作用域里面的数据。
sendRedirect:是不共享数据的。
3.请求资源的范围
sendRedirect:不仅可以重定向到当前应用程序的其他资源,还可以到同一个站点的
其他应用程序的资源,甚至使用绝对url重定向到其他站点的资源。
forward:只能用于同一个web应用程序内部的资源请求,是服务器内部的一种操作。
redirect是服务器通知客户端,让客户端重新发起请求。
4.使用地方
forward:一般用于用户登录,根据角色转发到相应的模块。
redirect:一般用户注销登录,返回主页面或跳转到其他的网站等。
5.效率
forward:由于是服务器内部的一种操作,所以效率较高。
redirect:需要经过两次客户端和服务端的网络通信所以效率较慢。
forward是服务器内部重定向,程序在接到请求重新定向到另一个程序,客户机不知道。
而sendRedirect()是服务器端接受请求后发送一个状态头给客户,客户再一次请求。
它们之间的区别大致有一下几点
1.地址栏显示
forward是服务器请求资源,服务器直接访问目标地址的url,把那个url的响应内容读取
过来,由于浏览器不知道服务器发送的内容从何而来,所以其地址还是原来的地址。
sendRedirect是服务根据逻辑,发送一个状态码,告诉浏览器去请求那个地址,所以
地址栏是显示新的url.。
2.从数据共享来说
forward:转发页面和转发到的页面数据共享request作用域里面的数据。
sendRedirect:是不共享数据的。
3.请求资源的范围
sendRedirect:不仅可以重定向到当前应用程序的其他资源,还可以到同一个站点的
其他应用程序的资源,甚至使用绝对url重定向到其他站点的资源。
forward:只能用于同一个web应用程序内部的资源请求,是服务器内部的一种操作。
redirect是服务器通知客户端,让客户端重新发起请求。
4.使用地方
forward:一般用于用户登录,根据角色转发到相应的模块。
redirect:一般用户注销登录,返回主页面或跳转到其他的网站等。
5.效率
forward:由于是服务器内部的一种操作,所以效率较高。
redirect:需要经过两次客户端和服务端的网络通信所以效率较慢。
相关文章推荐
- response.sendRedirect("**.jsp");与request.getRequestDispatcher("**.jsp").forward(request, response);
- request.getRequestDispatcher("*.jsp").forward( request, response)和sendRedirect区别
- Jsp重定向(response.sendRedirect())和转发(request.getRequestDispatcher().forward(request,r)的区别
- request.getRequestdispacher("result.jsp“).forward(request,response)与response.sendRedirect()重定向
- JSP中response.sendRedirect()与request.getRequestDispatcher().forward(request,respon 区别
- response.sendRedirect("")和request.getRequestDispatcher("").forward(req,resp);
- response.sendRedirect()与request.getRequestDispatcher("").forward(request,response);区别
- JSP中页面跳转response.sendRedirect()和request.getRequestDispatcher()的区别
- JSP中页面跳转response.sendRedirect()和request.getRequestDispatcher()的区别
- response.sendRedirect()与request.getRequestDispatcher().forward()、<jsp:forward> 区别
- SERVLET 的两种转向:response.sendRedirect("URL")与request.getDispatcher("URL").forward(request,response);
- JSP中页面跳转response.sendRedirect()和request.getRequestDispatcher()的区别
- response.sendRedirect()和request.getRequestDispatcher().forward(request,response)的区别
- response.sendRedirect & request.getRequestDispatcher(path).forward(request, response);
- jsp跳转getRequestDispatcher()和sendRedirect()的区别
- response.sendRedirect()和request.getRequestDispatcher().forward(request,response)的区别
- 让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
- JSP:response.sendRedirect("../loginfail")导致request的setAttribute的值丢失
- 让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
- JSP学习笔记3-getRequestDispatcher()与sendRedirect()的区别