在使用Servlet处理请求转发时,一般有三种方法。
1.response.sendRedirect("url");
2.request.getRequestDispatcher("url").include(request,response);
3.request.getRequestDispatcher("url").forward(request,response);
第一种方法称之为“重定向”,是通过response对象发送给浏览器一个url地址,从sendRedirect的英文意思就能看出。浏览器根据url请求一个新的页面,所有的业务处理都转到下一个页面,地址栏的地址会变发生改变。
第二种方法和第三种方法是通过request对象,Dispatch有调度的意思,我将之理解为资源的调度,是通过request对象调度适用的资源来处理业务,并没有使用response对象给浏览器任何应答,所以处理仍然在当前的页面进行,地址栏的地址不会改变。而两种方法的具体区别在于,include和forward。
include意为包含,即包含url中的内容,进一步理解为,将url中的内容包含进当前的servlet当中来,并用当前servlet的request和respose来执行url中的内容处理业务.所以不会发生页面的跳转,地址栏地址不会发生改变。
forward意为转发,即将业务交给指定的url执行,但使用的是当前servlet的request和response对象.并没有表示页面的跳转,所以地址栏的地址不会发生改变。