servlet 之forward和sendRedirect跳转
servlet的跳转分为客户端的跳转和服务器端的跳转。
1. 客户端的跳转
在servlet中客户端的跳转是通过httpservletresponse的sendRedirect()跳转。
但次跳转只能传递session范围的属性,无法传递request范围的属性。如:request.setAttribute(“info”,”name”);其中,info的跳转后为null。
例如:response.sendRedirect(“login.jsp”);
客户端的跳转:跳转后地址栏会发生改变,只能接受session属性的范围的内容,request属性范围的内容无法接收到,这是应为request属性范围只有在服务器端跳转中才可以使用。
2. 服务器端的跳转
在servlet中没有像jsp中的<jsp:forward>指令,所以先要执行服务器端的跳转,就必须依靠RequestDispatcher借口完成,此接口提供了两个方法:
forward(servletRequestrequest, servletResponse response)和include(servletRequestrequest, servletResponse response)。使用RequestDispatcher借口的forward()方法即可完成跳转功能的实现,但是如果想要使用ServletRequest接口提供的publicRequestDispatcher getRequestDispatcher(String path) 的方法进行实例化。
例如:RequestDispatcherrd = request.getRequestDispatcher(‘’login.jsp”);
re.forward(request,response); 服务器端跳转后,页面的路径不会发生变化,而且此时可以在跳转后的jsp文件中接受session及request范围的属性。