代码语言:javascript复制
转发和重定向的过程:
request.getRequestDispatcher(URL地址).forward(request, response)
转发:浏览器发送http请求给服务器,服务器接受请求,在内部调用方法在完成请求处理和转发动作将目标资源发送给浏览器。
(整个过程是一次请求,该请求也可以被转发n次,这n次都使用同一对request和response)
response.sendRedirect(URL地址)
重定向:浏览器发送http请求给服务器,服务器接受后发送302状态码和要重定向的location给浏览器,浏览器发现响应头中
是302,则自动给新的location发送一个新的http请求,服务器接收这个请求,处理并发送资源给客户。(整个过程有两次请
求,每次请求都会产生新的request和response,所以这就是将信息存放到request域中后,不能使用重定向的原因)
路径问题:
请求转发路径写内部枯井 无需加项目路径
重定向访问的可能是外部资源 需要加项目路径${pageContext.request.contextPath}
安全问题
请求转发地址栏中不会显示转发到的网页只显示转发页
重定向相当于重新发送了http请求,所以会打开新的重定向网页,地址栏也显示重定向到达的网页