java_Servlet请求转发和重定向
java_Servlet请求转发和重定向的问题.
操作方法
- 01
请求转发 请求转发是指将请求再转发到另一资源(一般为JSP或Servlet)。此过程依然在同一个请求范围内,转发后浏览器地址栏内容不变 请求转发使用RequestDispatcher接口中的forward()方法来实现,该方法可以把请求转发到另外一个资源,并让该资源对浏览器的请求进行响应 RequestDispatcher rd = request.getRequestDispatcher(path); rd.forward(request,response); 或request.getRequestDispatcher(path) .forward(request,response);
- 02
重定向 重定向是指页面重新定位到某个新地址,之前的请求失效,进入一个新的请求,且跳转后浏览器地址栏内容将变为新的指定地址 重定向是通过HttpServletResponse对象的sendRedirect()来实现,该方法相当于浏览器重新发送一个请求 response.sendRedirect(path);
- 03
请求转发和重定向区别如下: forward()只能将请求转发给同一个Web应用中的组件,而sendRedirect()方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到其他站点的资源。 sendRedirect()方法重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;而调用forward()方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。 forward()方法的调用者与被调用者之间共享相同的request对象和response对象;而sendRedirect()方法调用者和被调用者使用各自的request对象和response对象,它们属于两个独立的请求和响应过程。
- 04
使用请求对象(request)存储数据 (在servlet中存,在JSP中取) request. setAttribute www.gzlij.com(“score”,score); int score=(INTEGER)request. getAttribute(“score”); HttpServletRequest接口的方法: public void setAttribute(String name, Object obj) public Object getAttribute(String name) public Enumeration getAttributeNames() public void removeAttribute(String name)
- 05
HttpSession接口的方法 public void setAttribute(String name, Object obj) public Object getAttribute(String name) public Enumeration getAttributeNames() public void removeAttribute(String name)
- 06
使用ServletContext对象存储数据 ServletContext context = this.getServletContext();或 ServletContext context = this.getServletConfig().getServletContext(); context. setAttribute(“score”,score); int score=(Integer) application. getAttribute(“score”); ServletContext接口的方法 public void setAttribute(String name, Object obj) public Object getAttribute(String name) public Enumeration getAttributeNames() public void removeAttribute(String name) 简单的说,HttpServletRequest共享的对象仅在请求的生存期中可被访问,使用HttpSession共享的对象仅在会话的生存期中可被访问,使用ServletContext共享的对象在应用程序的生存期中可被访问。