Forward是通过RequestDispatcher对象的forward(HttpServletRequest request,HttpServletResponse response)方法来实现的
RequestDispatcher dispatcher = request.getRequestDispatcher("/servlet/welcom.jsp"); dispatcher.forward(request,response);getRequestDispatcher()的参数必须以“/”开始,代表Web应用程序的根目录
当执行forward动作时不能有任何输出到客户端,否则会抛出IllegalStateException异常
Redirect是利用服务器返回的状态码来实现的,服务器通过HttpServletResponse的setStatus(int status)方法设置状态码,301代表永久重定向,302代表临时性重定向,HttpServletResponse把setStatus()与setHeader()方法封装成另一个方法sendRedirect(String url)
当使用forward形式跳转时,地址栏会显示跳转前的Servlet访问地址,因为该跳转是在服务器端实现的,对客户端浏览器是透明的
当使用redirect时,跳转是在客户端实现的,实际上请求了两次服务器,第一次获取了重定向的状态码和地址,第二次访问真实的地址
时间: 2024-10-07 05:34:27