请求转发和重定向的区别
什么是请求转发(request.getRequestDispatcher(目标).forward(request,response))
请求转发是服务器将请求转发给别的servlet处理,是服务器内部的行为
1、请求转发的过程
客户端向服务器发送请求,服务器将请求指派给一个servlet处理(命名为A),A处理后发现自己处理不了该请求,就调用request.getRequestDispatcher(目标).forward(request,response)方法将请求转发给servlet(B)让B处理,B处理成功后将结果返回给客户端。
特点
1、转发是在服务器端完成的,与客户端无关
2、转发是同一次请求,无论服务器端转发多少次都只有一次请求
3、转发的客户端地址栏不会变化,无论最后响应的是哪个servlet地址栏都不会改变
4、转发必须在同一台服务器下完成,是服务器内部行为
什么是重定向(response.sendredirect(URL))
是通过各种方法将请求重新定个方向转到其它位置
重定向过程
客户端发送一个请求到服务器,服务器匹配Servlet,这都和请求转发一样。Servlet处理完之后调用了response.sendRedirect()方法。当这个Servlet处理完后,看到response.sendRedirect()方法,立即向客户端返回个响应,响应行告诉客户端你必须再重新发送一个请求,去访问另一个目标,客户端收到这个请求后,立刻发出一个新的请求,去请求重定向后的目标,在这两个请求互不干扰、相互独立,在前面request里面setAttribute()的任何东西,在后面的request里面都获得不了。因此,在sendRedirect()里面是两个请求,两个响应。
特点
1、重定向是在客户端发生的;
2、重定向是两次或以上请求;
3、重定向地址栏有变化;
4、重定向可以在不同的服务器下完成。
重定向和请求转发的区别
如果觉得《重定向sendredirect(URL)和请求转发requestDispatcher(servlet).forword(req resp)》对你有帮助,请点赞、收藏,并留下你的观点哦!