一、两种跳转方式的区别:
分类 | 请求转发 | 重定向 |
归属对象 | request | response |
url | /连接名 | /应用名/连接名 |
跳转范围 | 本应用 | 本应用或外部 |
浏览器地址 | 不变 | 变化 |
请求传递 | 传递请求 | 重新请求 |
速度 | 快 | 慢 |
二、请求转发:
(1)request.getRequestDispatcher("/BServlet").forward(request, response);
(2)request.getRequestDispatcher("/BServlet").includ(request, response);
//如果使用forward跳转则后面的response输出则不会执行;
//而用include来跳转,则include的servlet执行完后,再返回到原来的servlet执行response的输出(如果有);
注意点:
(1)必须在当前应用内跳转;
(2)url必须是资源最短路径;
//对于servlet是urlparrent;对于html是html页面名字.html
(3)转发后地址不变;是一次请求;
三、重定向:
//响应码302:表示重定向;
1.重定向的创建:
(1)设置状态码和响应头;
response.setStatus(302);
response.setHeader("Location", "http://www.baidu.com");
(2)sendRedirect()方法:
response.sendRedirect("http://www.baidu.com");
//response.sendRedirect("/hello/BServlet");
2.重定向小结:
(1)重定向是两次请求;
(2)重定向url不局限于当前应用,可以是其他应用;
(3)重定向后不要使用response.getWriter()或response.getOutputStream()输出数据;