WEB中转发与重定向的区别

来源:互联网 发布:for数组去重 编辑:程序博客网 时间:2024/04/30 13:24

首先先看一看转发与重定向的调用

// request转发request.getRequestDispatcher("/index.jsp").forward(request, response);// jsp转发<jsp:forward page="/index1.jsp">    <!-- 给被转发的页面(index1.jsp)附加上请求数据 -->    <jsp:param value="admin" name="username"/></jsp:forward>// 重定向response.sendRedirect("/test/index.jsp");

转发与重定向的定义:

  1. 转发:处理过程中把请求与应答(Request和Response)传入另一个请求中,自始至终只有一个Request和Response
  2. 重定向:告知浏览器,重新发一次请求,让服务器出处理
转发与重定向的区别: 1. 转发后URL不变,而重定向的URL地址会发生变化     例:请求地址为:http://localhost:8080/test/Test      ![转发的URL](http://img.blog.csdn.net/20160108144255199)      ![重定向的URL](http://img.blog.csdn.net/20160108144318758) 2. 转发自始至终只有一次请求与应答,重定向有两次请求与应答    例:    ![转发](http://img.blog.csdn.net/20160108144519105)    ![重定向](http://img.blog.csdn.net/20160108144538757)3.转发只能转发当前WEB应用,而重定向可以到非当前WEB应用中4.转发过程中,只有一个Request和Response,转发者与被转发者可以共享Request和Response,重定向不能

注意:无论是转发与重定向,在转发与重定向之前,都不能向客户端写入数据,如果写入了,转发与重定向之后会清除Response中写入的数据,无法显示到客户端

例如:

try {            response.getWriter().write("test");        } catch (IOException e) {            e.printStackTrace();        }        request.getRequestDispatcher("/index.jsp").forward(request, response);

或者

        try {            response.getWriter().write("test");        } catch (IOException e) {            e.printStackTrace();        }        response.sendRedirect("/test/index.jsp");

客户端无法显示”test”字符串,会由服务器自动清空Response

1 0
原创粉丝点击