09-response实现请求重定向和response的一些细节
response实现请求重定向和response的一些细节
- 注意:1+2 等效 3;
1,response.setStatus(302);
2,response.setHeader("location","/day06/index.jsp"); 3,response.sendRedirect("/day06/index.jsp"); - * 重定向的特点: * 1,浏览器会向服务器发送两次,意味着就有2个request\response * 2,用重定向技术,浏览器地址栏会发生变化 * 3,用户登录 ** 用户登录和显示购物车时,通常使用重定向,一般情况下不使用,用forward.如下:
this.getServletContext().getRequestDispatcher("/message.jsp").forward(request,response);
-
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("ResponseDemo8"); //response.setStatus(302); //response.setHeader("location","/day06/index.jsp"); response.sendRedirect("/day06/index.jsp"); }
-
-
getOutputStream和getWriter方法分别用于得到输出二进制数据、输出文本数据的ServletOuputStream、Printwriter对象。
如果同时出现字节流和字符流
response.getOutputStream();
response.getWriter();
就会出现下面的异常:java.lang.IllegalStateException: getOutputStream() has already been called for this response
- getOutputStream和getWriter这两个方法互相排斥,调用了其中的任何一个方法后,就不能再调用另一方法。
- Servlet程序向ServletOutputStream或PrintWriter对象中写入的数据将被Servlet引擎从response里面获取,Servlet引擎将这些数据当作响应消息的正文,然后再与响应状态行和各响应头组合后输出到客户端。
- Serlvet的service方法结束后,Servlet引擎将检查getWriter或getOutputStream方法返回的输出流对象是否已经调用过close方法,如果没有,Servlet引擎将调用close方法关闭该输出流对象
-