Javaweb之response之刷新与重定向

 Javaweb之刷新与重定向

Java_web 中的response的刷新问题

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

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

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

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

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

}

 

private void test2(HttpServletResponse response) throws IOException {

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

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

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

}

 

private void test1(HttpServletResponse response) {

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");

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章