Javaweb之response之刷新与重定向

Javaweb之刷新与重定向

Java_web中的response的刷新问题

第一种也是以后最常用的刷新,使用上下文转发的方式;

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

Stringmessage="<metahttp-equiv='refresh'content='3;url=/responseFile/index.jsp'>登陆成功,3秒后自动跳转,如果失败请点击<ahref=''>超链接</a>";

this.getServletContext().setAttribute("message",message);

this.getServletContext().getRequestDispatcher("/message.jsp").forward(request,response);

}

privatevoidtest2(HttpServletResponseresponse)throwsIOException{

response.setContentType("text/html;charset=UTF-8");

response.setHeader("refresh","3;url=/responseFile/index.jsp");

response.getWriter().write("登陆成功,3秒后自动跳转,如果失败请点击<ahref=''>超链接</a>");

}

privatevoidtest1(HttpServletResponseresponse){

response.setHeader("refresh","3;url=http://www.sina.com");

}

通过response实现请求重定向。

请求重定向指:一个web资源收到客户端请求后,通知客户端去访问另外一个web资源,这称之为请求重定向。

应用场景:用户登陆。

实现方式

response.sendRedirect()

实现原理:

302状态码和location头即可实现重定向

getOutputStreamgetWriter方法分别用于得到输出二进制数据、输出文本数据的ServletOuputStreamPrintwriter对象。

getOutputStreamgetWriter这两个方法互相排斥,调用了其中的任何一个方法后,就不能再调用另一方法。

Servlet程序向ServletOutputStreamPrintWriter对象中写入的数据将被Servlet引擎从response里面获取,Servlet引擎将这些数据当作响应消息的正文,然后再与响应状态行和各响应头组合后输出到客户端。

Serlvetservice方法结束后,Servlet引擎将检查getWritergetOutputStream方法返回的输出流对象是否已经调用过close方法,如果没有,Servlet引擎将调用close方法关闭该输出流对象

转发和重定向的区别

重定向response.sendRedirect("success.jsp");

转发:request.getRequestDispatcher("success.jsp").forward(request,response);

1.转发在服务器端完成的;重定向是在客户端完成的

2.转发的速度快;重定向速度慢

3..转发的是同一次请求;重定向是两次不同请求

4..转发不会执行转发后的代码;重定向会执行重定向之后的代码

5.转发地址栏没有变化;重定向地址栏有变化

6..转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成

response.getWriter().write("aaaaaaa");

/*response.setStatus(302);

response.setHeader("location","/servletdemo/index.jsp");*/

response.sendRedirect("/servletdemo/index.jsp");

你可能感兴趣的:(response)