转发和重定向
1、转发
客户端(浏览器)向服务器发送请求,服务器直接给客户端作出响应,一次响应。
语法:
request.getRequestDispatcher("/").forward(request,response);
转发流程图:
2、重定向
重定向:客户端(浏览器)发送请求给服务器,服务给浏览器发送302状态码,告诉浏览器去访问新的地址,两次响应。
语法:
response.sendRedirect(request.getContextPath()+"/");
重定向流程图:
3、转发和重定向的区别
1. 转发往服务器发送一次请求,重定向往服务器发送两次请求
2. 转发是在服务器内部完成 ,客户感知不到;响应是给客户端302状态码,让客户端去访问新的地址
3. 使用转发地址栏不发生变化;使用重定向地址栏发生变化
4. 使用转发可以访问WEB-INF下的资源;使用重定向不可以访问WEB-INF下的资源
因为WEB-INF对客户端的请求做了一层隔离,所以说,浏览器直接请求WEB-INF下的资源是不允许的。