requestDispatcher与sendRedirect区别
转发过程: 客户端浏览器发送http请求 → web服务器接受此请求 → 调用内部的一个方法在容器内部完成请求处理和转发动作 → 将目标资源发送给客户。
客户端发送请求次数 1次 2次 客户端地址栏是否改变 不变 变 是否共享request域 共享 不共享(request域中的数据丢失),必须使用session传递属性 是否共享response域 共享 不共享 范围 网站内 可以跨站点 JSP URL不可带参数 URL可带参数 是否隐藏路径 隐藏 不隐藏
转发过程: 客户端浏览器发送http请求 → web服务器接受此请求 → 调用内部的一个方法在容器内部完成请求处理和转发动作 → 将目标资源发送给客户。 //java代码示例 request.getRequestDispatcher("xxx.jsp或者servlet").forward(request,response); 重定向过程: 客户端浏览器发送http请求 → web服务器接收后发送30X状态码响应及对应新的location给客户浏览器 → 客户浏览器发现是30X响应,则自动再发送一个新的http请求,请求url是新的location地址 → 服务器根据此请求寻找资源并发送给客户。 //java代码示例 response.sendRedirect("xxx.jsp或者servlet"); 客户端发送请求次数 1次 2次 客户端地址栏是否改变 不变 变 是否共享request域 共享 不共享(request域中的数据丢失),必须使用session传递属性 是否共享response域 共享 不共享 范围 网站内 可以跨站点 JSP URL不可带参数 URL可带参数 是否隐藏路径 隐藏 不隐藏 参考: 1、 2、 3、Web应用安全与防治 —— 基于OWASP Top10与ESAPI
//java代码示例 request.getRequestDispatcher("xxx.jsp或者servlet").forward(request,response);
重定向过程: 客户端浏览器发送http请求 → web服务器接收后发送30X状态码响应及对应新的location给客户浏览器 → 客户浏览器发现是30X响应,则自动再发送一个新的http请求,请求url是新的location地址 → 服务器根据此请求寻找资源并发送给客户。
//java代码示例 response.sendRedirect("xxx.jsp或者servlet");
参考: 1、 2、 3、Web应用安全与防治 —— 基于OWASP Top10与ESAPI
转发过程: 客户端浏览器发送http请求 → web服务器接受此请求 → 调用内部的一个方法在容器内部完成请求处理和转发动作 → 将目标资源发送给客户。 //java代码示例 request.getRequestDispatcher("xxx.jsp或者servlet").forward(request,response); 重定向过程: 客户端浏览器发送http请求 → web服务器接收后发送30X状态码响应及对应新的location给客户浏览器 → 客户浏览器发现是30X响应,则自动再发送一个新的http请求,请求url是新的location地址 → 服务器根据此请求寻找资源并发送给客户。 //java代码示例 response.sendRedirect("xxx.jsp或者servlet"); 客户端发送请求次数 1次 2次 客户端地址栏是否改变 不变 变 是否共享request域 共享 不共享(request域中的数据丢失),必须使用session传递属性 是否共享response域 共享 不共享 范围 网站内 可以跨站点 JSP URL不可带参数 URL可带参数 是否隐藏路径 隐藏 不隐藏 参考: 1、 2、 3、Web应用安全与防治 —— 基于OWASP Top10与ESAPI