最近因为写jsp和servlet有点多,所以不可避免的遇到了服务端与客户端跳转的问题,但是由于原理不清楚,所以老是记不住。今天特意查了资料,一定要弄清楚。
一,什么是客户端跳转
客户端跳转也叫重定向,是使用HttpServletResponse对象中的sendRedirect()方法,这是一个响应对象的方法,调用了这个方法,就表明整个请求已经结束了,服务器开始向客户端返回执行的结果。
需要注意的是,此跳转只能传递session及application范围的属性,而无法传递request范围的属性。
下面画一张图来更好的理解客户端跳转:
由下图可以看到实际上客户端会发送两个请求,并且页面的路径会改变。
二,什么是服务端跳转
服务端跳转也叫请求转发,是RequestDispatcher接口的forward()方法来实现的。而RequestDispatcher是通过调用HttpServletRequest对象的getRequestDispatcher()方法得到的。
注意,服务器端跳转页面的路径不会发生改变,所以可以接受session及request范围的属性。
图解:
三,总结
1,客户端跳转“/ ”代表服务器路径webapps ,即服务器根路径,服务器端跳转“/ ”代表站点根路径,即应用程序根路径;
2,尽量使用response.sendRedirect(“fail.jsp”) 而不去使用forward ,因为当服务器崩溃了,那么sendRedirect 则就会起很大的好处了。
3,在处理信息的servlet中,不能用服务器端跳转,那样刷新就会一直处理信息。