JSP中页面跳转 sendRedirect VS forward

 

response:
有关于对客户端请求之响应,可以利用它来设定一些要响应的讯息,例如标题信息、响应状态码等.

request:
有关于客户端请求的信息,都可以由它来取得,例如请求标头、请求方法、请求参数、使用者IP等等信息。

response:

           属于重定向请求;

           其地址栏的URL会改变;

           会向服务器发送两次请求;

 sendRedirect用法:
       response.sendRedirect("跳转页面路径或需要执行的操作路径");
       不保持request中设置属性,也就是说会产生一个新的request。跳转到得页面刷新仍然是当前页面。

sendRedirect用法:

    response.sendRedirect("hello.jsp")    是在响应后转向 

 

 request:

            属于请求转发;

           其地址栏的URL不会改变;

           向服务器发送一次请求;

 forward用法:
       RequestDispatcher view = request.getRequestDispatcher("跳转页面路径或需要执行的操作路径");
       view.forward(request, response);

      也可以写成:

      request.getRequestDispatcher("跳转页面路径或需要执行的操作路径").forward(request, response);
      保持request中设置的属性,跳转页面后刷新会重新执行操作。
      例如:
      index.html  ->(submit 数据) -> http://......../submit.do
      submit.do  对应的 Servlet 为 submit.java.  其中包含下列片段的两种情况:

     1.     response.sendRedirect("hello.html") .           浏览器会指向hello.html,并且地址栏是http://...../hello.html
     2.      RequestDispatcher view = request.getRequestDispatcher("hello.html");
             view.forward(request, response);
             浏览器会指向hello.html, 但是地址栏仍然是http://...../submit.do

  forward用法:

        RequestDispatcher     rd     =     request.getRequestDispatcher(URL);   
        request.setAttribute("str",str);   
        rd.forward(request,response);   
        是响应前转向,可以把参数带过去,你也可以在这里设置request.setAttribute("str",str);

 

你可能感兴趣的:(jsp,servlet,浏览器,服务器,url)