请求转发与重定向

tech2024-11-27  11

请求转发与重定向

请求转发

也称为了服务器的内部跳转

数据内部是连接使用的可以使用request.getRequestDispatcher().forWord()进行转发

只能作用于当前应用中使用 只进行一个请求和响应

请求所转发到的资源可以直接获取到请求中所携带的数据

浏览器地址栏显示的为用户所提交的请求路径

重定向

也称为服务器外跳转

response.sendRedirect(“servlet?name=“value”&name…”)

重定向可以跳转到其他的应用中 浏览器发出两次请求和接收两次响应

重定向的资源不能直接获取到用户所提交请求中携带的数据

浏览器地址栏显示的重定向的请求路径 而非用户所提交请求的路径 也正是如此 重定向的一个重要的作用:防止表单的重复提交

重定向不仅可以跳转到当前应用的其他资源 也可以跳转到其他应用中

如何抉择请求转发和重定向

1.若要跳转其他应用 重定向

2.若要处理表单数据的servlet要跳转到其他的servlet 用重定向 防止表单重复提交

3.若对某一个请求进行处理的servlet的执行需要消耗大量服务器资源(CPU内存)

4.其他情况 用请求转发

forword与include区别

主要体现在标准输出流的开启时间不同

表现在response中 和request没啥影响

forward表示向前 说明当前的请求还没有结束 需要继续

所以服务器就不会在这里先打开标准输出流 所以此时写入out中的数据不会被执行到客户端浏览器中

使用forward方法servlet中标准输出流没有开启

include表示包含 说明此时请求已经结束 可以对客户端进行响应

include不仅将自己的数据写入标准输出流中 还要将其他数据包含到自己的输出流中 使用这个方法的servlet的标准输出流已经打开

结论:在使用forword进行请求转发时 使用时不应该使用response中写入数据 如写入数据 要用include

最新回复(0)