java Servlet请求转发和重定向

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

•请求转发

☐请求转发是指将请求再转发到另一资源(一般为JSP或Servlet)。此过程依然在同一个请求范围内,转发后浏览器地址栏内容不变

☐请求转发使用RequestDispatcher接口中的forward()方法来实现,该方法可以把请求转发到另外一个资源,并让该资源对浏览器的请求进行响应

RequestDispatcher rd = request.getRequestDispatcher(path);

rd.forward(request,response);

request.getRequestDispatcher(path) .forward(request,response);

•重定向

☐重定向是指页面重新定位到某个新地址,之前的请求失效,进入一个新的请求,且跳转后浏览器地址栏内容将变为新的指定地址

☐重定向是通过HttpServletResponse对象的sendRedirect()来实现,该方法相当于浏览器重新发送一个请求

response.sendRedirect(path);

•请求转发和重定向区别如下:

☐forward()只能将请求转发给同一个Web应用中的组件,而sendRedirect()方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到其他站点的资源。

☐sendRedirect()方法重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;而调用forward()方法的请

求转发过程结束后,浏览器地址栏保持初始的URL地址不变。

☐forward()方法的调用者与被调用者之间共享相同的request对象和response对象;而sendRedirect()方法调用者和被调用者使用各自的request对象和response

对象,它们属于两个独立的请求和响应过程。

•使用请求对象(request)存储数据(在servlet中存,在JSP中取)request. setAttribute(“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)

•使用HttpSession对象存储数据

HttpSession session=request.getSession();

session. setAttribute(“score”,score);

int score=(Integer) session. getAttribute(“score”);

☐HttpSession接口的方法

public void setAttribute(String name, Object obj)

public Object getAttribute(String name)

public Enumeration getAttributeNames()

public void removeAttribute(String name)

•使用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共享的对象在应用程序的生存期中可被访问。

相关文档
最新文档