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域中的数据,就使用转发!