java Servlet请求转发和重定向
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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共享的对象在应用程序的生存期中可被访问。