Javaweb之转发、包含、重定向

1.转发与包含

RequestDispatcher dispatcher = request.getRequestDispatcher("/MyServlet");  

请求转发:dispatcher.forward(request,response)

由下一个Servlet完成响应体,当前Servlet可以设置响应头!(留头不留体)

请求包含:dispatcher.include(request,response)

由两个Servlet共同未完成响应体和响应头。

请求转发和请求包含,都在一个请求范围内!使用同一个request和response!

2重定向

response.sendRedirect("/Javaweb01/MyServlet");

【请求转发和重定向的区别】
请求转发是一个请求一次响应,而重定向是两次请求两次响应
请求转发地址栏不变化,而重定向会显示后一个请求的地址
请求转发只能转发到本项目其它Servlet,而重定向既可以重定向到本项目其它Servlet,还能定向到其他项目Servlet
请求转发是服务器端行为,只需给出转发的Servlet路径,而重定向需要给出requestURI,即包含项目名!

请求转比重定向效率高!因为是一个请求!

需要地址栏发生变化,那么就使用重定向!
需要在下一个Servlet中获取request域中的数据,就使用转发!

猜你喜欢

转载自blog.csdn.net/qq_41706150/article/details/80171958