2024年5月11日发(作者:)

sendredirect用法

sendRedirect 用法

一、定义

sendRedirect 是Servlet中一个用来向客户端发送响应状态码302和重定向头消息,

从而实现页面重定向的一个方法。

二、语法direct(String location)

三、参数on:一个有效的URL字符串,用来指向重定向请求的资源地址,可

以是

(1)绝对地址;

(2)相对路径地址;

2.要求URL必须合法,可以是本域信息 || 跨域信息。

四、原理

因为执行sendRedirect()方法会发送一个以302状态码的响应消息到浏览器,它会

导致浏览器开始发送一个新的请求,来处理重定向所指向的资源。在新的请求中,

HTTP Referer将会包含sendRedirect()方法的调用的来源URL地址,也就是

sendRedirect()方法调用前的URL。

五、注意事项direct方法可以实现页面重定向,通常用于传统表单提交时与

JSP页面跳转。

2.使用sendRedirect()跳转时,请求对象的getParameter()等HTTP请求对象的方法

将不再可用。direct()实现的页面跳转是让浏览器发送一个新的HTTP请求,所以请

求的参数信息将会丢失。direct()方法只能重定向到本域信息或跨域信息,否则发生

异常。

六、使用场景

执行sendRedirect()方法可以用于:

(1)客户端缓存页面重定向,浏览器对sendRedirect重定向的响应更可靠;

(2)一个表单提交后,重定向到另一个URL,以阻止提交表单被重复提交;

(3)可以用来实现REST/RPC服务;

(4)可以用于实现用户登录、注销功能;

(5)可用于处理页面渲染结果。

七、Demo实例

假设现在有一个普通页面,里面有将把请求重定向到HelloServlet的表单:

```html

提交按钮:

```

此时在HelloServlet里,我们可以这样使用sendRedirect()方法来处理表单提交:

```

public class HelloServlet extends HttpServlet{

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws

ServletException, IOException{

//调用sendRedirect方法来实现页面重定向direct("");

}

}

```

八、总结

sendRedirect() 是Servlet中一个用来实现页面重定向的方法,它的作用是向客户端

发送302状态码和重定向头消息,并且它只可以重定向到本域信息或跨域信息,否

则发生异常。此外,由于重定向会导致浏览器发送一个新的请求,所以我们要注意

sendRedirect()方法会使原始请求中的参数信息将会丢失,请求对象的getParameter()

等HTTP请求对象的方法也将不再可用。