也称为了服务器的内部跳转
数据内部是连接使用的可以使用request.getRequestDispatcher().forWord()进行转发
只能作用于当前应用中使用 只进行一个请求和响应
请求所转发到的资源可以直接获取到请求中所携带的数据
浏览器地址栏显示的为用户所提交的请求路径
也称为服务器外跳转
response.sendRedirect(“servlet?name=“value”&name…”)
重定向可以跳转到其他的应用中 浏览器发出两次请求和接收两次响应
重定向的资源不能直接获取到用户所提交请求中携带的数据
浏览器地址栏显示的重定向的请求路径 而非用户所提交请求的路径 也正是如此 重定向的一个重要的作用:防止表单的重复提交
重定向不仅可以跳转到当前应用的其他资源 也可以跳转到其他应用中
1.若要跳转其他应用 重定向
2.若要处理表单数据的servlet要跳转到其他的servlet 用重定向 防止表单重复提交
3.若对某一个请求进行处理的servlet的执行需要消耗大量服务器资源(CPU内存)
4.其他情况 用请求转发
主要体现在标准输出流的开启时间不同
表现在response中 和request没啥影响
forward表示向前 说明当前的请求还没有结束 需要继续
所以服务器就不会在这里先打开标准输出流 所以此时写入out中的数据不会被执行到客户端浏览器中
使用forward方法servlet中标准输出流没有开启
include表示包含 说明此时请求已经结束 可以对客户端进行响应
include不仅将自己的数据写入标准输出流中 还要将其他数据包含到自己的输出流中 使用这个方法的servlet的标准输出流已经打开
结论:在使用forword进行请求转发时 使用时不应该使用response中写入数据 如写入数据 要用include