2024年5月11日发(作者:)
请求转发和重定向是Servlet处
理完数据后进行页面跳转的两
种主要方式
• 请求转发
请求转发是指将请求再转发到另一资源(一般为JSP或Servlet)。此过程依然在
同一个请求范围内,转发后浏览器地址栏内容不变
请求转发使用RequestDispatcher接口中的forward()方法来实现,该方法可以把
请求转发到另外一个资源,并让该资源对浏览器的请求进行响应
RequestDispatcher rd = uestDispatcher(path);
d(request,response);
或
uestDispatcher(path) .forward(request,response);
• 重定向
重定向是指页面重新定位到某个新地址,之前的请求失效,进入一个新的请求,
且跳转后浏览器地址栏内容将变为新的指定地址
重定向是通过HttpServletResponse对象的sendRedirect()来实现,该方法相当于
浏览器重新发送一个请求
direct(path);
• 请求转发和重定向区别如下:
forward()只能将请求转发给同一个Web应用中的组件,而sendRedirect()方法不
仅可以重定向到当前应用程序中的其他资源,还可以重定向到其他站点的资源。
sendRedirect()方法重定向的访问过程结束后,浏览器地址栏中显示的URL会发
生改变,由初始的URL地址变成重定向的目标URL;而调用forward()方法的请
求转发过程结束后,浏览器地址栏保持初始的URL地址不变。
forward()方法的调用者与被调用者之间共享相同的request对象和response对
象;而sendRedirect()方法调用者和被调用者使用各自的request对象和response
对象,它们属于两个独立的请求和响应过程。
使用请求对象(request)存储数据 (在servlet中存,
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=sion();
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()
在JSP中取)
•
•
public void removeAttribute(String name)
• 使用ServletContext对象存储数据
ServletContext context = vletContext();或
ServletContext context = vletConfig().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共享的
对象在应用程序的生存期中可被访问。


发布评论