servlet 重定向(八)
(2)服务器端返回一个状态代码为302的响应结果。该代码的意思是让浏览器再访问另一个组件,响应结果中包含着访问新组件的url地址。新的访问组件可能在同一个应用中也可能不在同一个应用中。
(3)当浏览器接受到这种结果,会自动访问新的url.
(4)浏览器端接受新的url返回结果。
2.实现
重定向通过 API 中接口提供的 ( )方法完成。
3.重定向特点
3.1 源组件的响应结果不会返回到客户端。
3.2 源组件和目标组件不会共享同一个对象。
3.3 如果源组件在进行重定向前提前提交响应结果,会报异常。
3.4 重定向的地址不必是同一个服务器的应用。
4.案例
Check1Servlet 第一次请求的类
package com.learn;import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter;/*** Created by Administrator on 2017/09/28.*/ public class Check1Servlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String userName = req.getParameter("name");String message = "";if(userName == null){message = "please input your name";} else {message = userName;}req.setAttribute("mess",message);PrintWriter out = resp.getWriter();out.print("before redirect ");System.out.println("before redirect");resp.sendRedirect("out1?mess="+message);out.print("after redirect");System.out.println("after redirect");out.close();} }
Out1Servlet 重定向的类
package com.learn;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter;/*** Created by Administrator on 2017/09/28.*/ public class Out1Servlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String mess = (String) req.getAttribute("mess");System.out.println("请求范围内的数据:"+mess);mess = req.getParameter("mess");System.out.println("请求参数中的:"+mess);PrintWriter out = resp.getWriter();out.write(mess);out.close();} }
页面输出结果:
控制台输出结果: