JavaWeb——请求转发与请求重定向

   请求转发:服务器行为,request.getRequestDispatcher(URL地址).forward(request,response);是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变
   请求重定向:客户端行为,response.sendRedirect(URL地址),从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL地址会改变
    ①客户端发送请求数据给服务器
    ②服务器接收请求数据并调用第一个Servlet处理逻辑
    ③第一个Servlet处理完数据后将数据在服务器内部传递给下一个Servlet
    ④第二个servlet处理完数据后调用forward()方法将最终处理结果返回给客户端

java接口请求转发程序 java实现请求转发_java接口请求转发程序


    ①客户端发送请求数据给服务器
    ②服务器接收请求数据并调用一个Servlet处理逻辑
    ③服务器调用sendRedirect()方法将处理结果放进HTTP响应头中并返回给客户端     ④客户端收到响应结果后,从HTTP响应头中取得相关信息,再次发送请求数据给服务器

java接口请求转发程序 java实现请求转发_java接口请求转发程序_02

    3.2.1.请求转发:由于转发是服务器内部行为,此时绝对路径开头的"/"指的是当前Web程序的根目录。因此若使用转发,绝对路径的写法应为"/资源名"。

     “/login.jsp"或者”/servlet/LoginServlet"

    3.2.2.请求重定向:由于重定向是服务器向客户端发送一个请求头信息,客户端再请求一次服务器,此时绝对路径开头的"/"指的是Tomcat服务器的根目录,因此若使用重定向,绝对路径的写法应为"/当前Web程序名称/资源名"。

     “/WebModule/login.jsp"或者”/WebModule/servlet/LoginServlet"

   4.1.URL地址问题
    请求转发是属于请求对象的方法(调用HttpServletRequest对象的方法)
    请求重定向是属于响应对象的方法(调用HttpServletResponse对象的方法)
   请求转发会在每次刷新时会重新向服务器发送请求,每刷新一次,就重新发送一次请求。对于表单提交来讲,若提交表单后再重新加载页面,使用转发可能会导致信息的重复提交,因此,表单提交需要使用请求重定向
   请求转发只能访问当前服务器中的某些页面,因此若要访问其他服务器上的页面,需要使用请求重定向