servlet篇 之 跳转问题
servlet中的跳转:
跳转本质上是对文件传输操作 进行 封装。
例如:客户端访问一个servlet,在servlet中需要把已经写好的页面hello.html返回给客户端浏览器,需要用io来实现这个功能
服务器内部跳转:
第一种情况:
服务器内部跳转到一个页面
例如:
//获得一个指向/hello.html页面的跳转对象
RequestDispatcher dispatcher =
request.getRequestDispatcher("/hello.html");
//进行跳转
//跳转的同时,把request和response传过去
dispatcher.forward(request, response);
或者精简成一句代码:
String url = "/hello.html";
request.getRequestDispatcher(url).forward(request, response);
第二种情况:
服务器内部跳转到另一个servlet
注意:
1,无论服务器内部跳转多少次,每次都会把req和res转发给下一个跳转的地方,也就是整个过程里面,【req和res有且只有一个】,即最初的那个。
2,服务器内部跳转需要使用request来完成
3,【跳转成功后】,【地址栏仍显示最初的servlet】信息。
客户端重定向
第一种情况:
客户端重定向到一个页面
例如:
String url = "hello.html";
response.sendRedirect(url);
第二种情况:
客户端重定向到另一个servlet
注意:
1,每次进行客户端重定向,都会是一个全新的request和response
2,客户端重定向需要使用response来完成
3,重定向到另一个资源中(可能是页面也能servlet),那么浏览器的地址栏中显示的是重定向到的那个资源的地址!