请求转发和重定向的区别
1.请求转发是在服务器内部的跳转,整个过程中只有1个请求,重定向是在客户端的跳转,产生了新请求
2.请求转发后,地址栏上的url不变,可以继续使用request中的数据,而重定向后,url会改变,就不能使用原request中的数据
3.请求转发只能跳转到服务内部的资源,重定向可以访问服务器外部的资源
请求转发和重定向时的路径问题
转发或重定向时路径上带”/”和不带”/”的区别
1)对于重定向
如果资源的路径前面有”/”,此时”/”参照web服务器的根路径,会丢失web应用的根路径,解决方案:在”/”前面加上request.getContextPath()
response.sendRedirect(request.getContextPath()+"/show.jsp");
如果路径前没有”/”,那么路径相对于当前的servlet或jsp的路径的,是一个相对路径
2)对于请求转发
如果资源的路径前没有”/”,那么路径相对于当前的servlet或jsp的路径;如果路径前带了”/”,此时”/”参照web应用的根路径
总结:如果请求是客户端的请求(发生在客户端的跳转),那么路径前不要带”/”, 因为带了”/”会丢失web应用的根路径
下面几种情况是客户端的请求:重定向,通过表单发的get/post请求,超链接发的get请求,Js发的请求location.href=xxx
如果请求是在服务器端发生的,例如请求转发,那么请求路径前可以带或不带”/”.
在jsp页面上,用 p a g e C o n