企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
重定向是客户端行为,如下图所示。 :-: ![](https://img.kancloud.cn/3c/c9/3cc92a74f2ffd4cfb1c780e97659f634_790x530.jpg) 重定向 下面演示上图重定向的流程,浏览器向OneServlet请求添加`name`和`age`属性,然后重定向到TwoServlet中,以验证是否能在TwoServlet中取出OneServlet的值。 <br/> 步骤如下: **1. controller层** ```java @Controller public class RedirectController { @RequestMapping("/v2/OneServlet") public String oneServlet(HttpServletRequest request, HttpServletResponse response) { request.setAttribute("name", "张三"); request.setAttribute("age", 25); //重定向到 /v2/TwoServlet,redirect是关键字,表示重定向 return "redirect:/v2/TwoServlet"; } @RequestMapping("/v2/TwoServlet") public String twoServlet(HttpServletRequest request, HttpServletResponse response) { System.out.println("name:" + request.getAttribute("name") + ", age:" + request.getAttribute("age")); //name:null, age:null return "userList"; } } ``` **2. 视图层** *`webapp/WEB-INF/views/userList.jsp`* ```html <h1>${name}, ${age}</h1> ``` **3. 测试** 启动项目后访问 http://localhost:8080/mvc/v2/OneServlet ,得出的结果如下,注意看地址栏的地址发送了改变。 ![](https://img.kancloud.cn/49/ad/49add35b7303de698523445f3b5a2ebd_1573x261.jpg) **4. 结论** 1. 重定向是客户端行为,OneServlet重定向到TwoServlet是在客户端完成的。 2. 重定向是两次不同的请求,浏览器分别发出了 http://localhost:8080/mvc/v2/OneServlet 、http://localhost:8080/mvc/v2/TwoServlet 两次请求。 3. 重定向地址栏发生了变化,url由最初的 http://localhost:8080/mvc/v2/OneServlet ,变成 http://localhost:8080/mvc/v2/TwoServlet。 4. 请求域中的数据会丢失,在TwoServlet取不到OneServlet的数据`name`和`age`。除非使用`HttpSession`来传递则数据不会丢失。