又是一个好老的题目.
首先,sendRedirect与forward,include的最大区别是request,response..
sendRedirect产生新的请求与响应,前后已没有联系.
相当于在页面中重新输入一个URL,只是自动完成而已.
forward,include是共用同一请求.客户端完全不知道(浏览器中的URL不变)
使用方式:
servlet和jsp里面一样
response.sendRedirect();
其次,forward与include的区别.
调用forward()方法时必须注意下列两点:
在HTTP回应被“确认”(committed)以前才能调用forward()方法(这里的“确认”是指将HTTP回应的内容主体送回用户端),否则将拋出IllegalStateException异常。[include没有这种情况]
调用forward()方法后,原先存放在HttpResponse对象中的内容将会自动被清除(也就是在forward方法前,使用PrintWriter,ServletOutputStream输出的内容都被忽略)
[include不会]
使用方式
Servlet中
getServletContext().getRequestDispatcher(path).include(request,response);
getServletContext().getRequestDispatcher(path).forward(request,response);
这里面的path必须以"/",相对于当前WEB应用程序根目录
request.getRequestDispatcher(path).include(request,response);
request.getRequestDispatcher(path).forward(request,response);
这里面的path可以是以"/"开头,也可以使用相对路径.
在JSP中
<jsp:include page=""/>
<jsp:forward page=""/>
forward在SERVLET与JSP中表现不一致:servlet中:运行forward方法,后面的语句会执行完,再去执行forward方法 (符合JAVA程序运行顺序)
在jsp中,运行到forward后,直接跳转,后面的语句不再执行.
两者的区别:
forward方法是把请求的内容转发到另外的一个servlet/jsp.
include是把另一个servlet/jsp处理过后的内容拿过来与此时servlet的内容一同输出.
----------------------------------------------------------
forward与include还有一个重要的区别:
forward在调用者程序中设置的响应状态码和响应头不会被忽略,在被调用者程序中设置的响应状态码和响应头也不会被忽略.
include会被忽略..
这也是乱码的一个原因..
使用include时候,要要调用程序中写上response.setContentType("text/html;charset=utf-8")
不管你是不是用filter统一处理过字符.
===================================================================
总结下:
sendRedirect与include,forward的区别在于是不是同一个request
include与forward的区别在于输出内容,以及响应头!
分享到:
相关推荐
Servlet之forward、sendRedirect、 include区别与使用实例 ,具体效果和过程看博文http://blog.csdn.net/evankaka/article/details/45169569
### jsp跳转getRequestDispatcher()和sendRedirect()的区别 在Java Web开发中,经常会遇到页面间的跳转操作,其中两种常见的方法是`getRequestDispatcher()`和`sendRedirect()`。这两种方式虽然都能实现页面跳转,...
在Java Servlet技术中,我们通常使用两种方法来实现页面的跳转:一个是通过`RequestDispatcher`的`forward()`方法实现请求转发,另一个是通过`HttpServletResponse`的`sendRedirect()`方法实现重定向。下面详细阐述...
### JSP面试常见问题解析:Forward与SendRedirect的区别及Include的理解 #### 1. Forward与SendRedirect的区别 在Web开发中,特别是在Java Server Pages (JSP)与Servlets结合使用的场景下,`forward`与`...
JSP 中有五种跳转方式,包括 RequestDispatcher.forward()、response.sendRedirect()、jsp:forward、RequestDispatcher.include() 和 HttpServletResponse.sendRedirect()。下面我们将详细介绍这五种跳转方式的区别...
3. jsp include指令:使用<jsp:include>指令来传递数据,例如:<jsp:include page="Head.jsp"><jsp:param name="a" value="a"/></jsp:include> 4. jsp forward指令:使用<jsp:forward>指令来传递数据,例如:<jsp:...
13) JSP中的include指令和jsp:include动作有什么区别?(多选题) a) include指令在翻译阶段处理,而jsp:include动作在请求处理阶段处理 b) include指令包含的页面在编译时合并,而jsp:include动作允许动态包含...
本文将详细介绍五种常用的JSP页面跳转方法:`RequestDispatcher.forward()`、`response.sendRedirect()`、`jsp:forward`、`request.getRequestDispatcher().include()`以及`<jsp:include>`。这些方法各有特点,适用...
### Java Web知识集锦:RequestDispatcher与sendRedirect的区别详解 #### 概述 在Java Web开发中,控制页面之间的流转是非常重要的技术之一。通常我们有两种常用的方法:`RequestDispatcher`和`sendRedirect`。这...
JAVA-web基础知识点 以下是对给定文件信息的详细...15. forward 和 sendredirect 的区别 forward 和 sendredirect 是两种不同的请求转发机制。forward 是在服务器端转发请求,而 sendredirect 是在客户端转发请求。
本资源摘要信息涵盖了 JSP 面试的常见问题,包括 JSP 内置对象、动作、INCLUDE 机制、请求转发、Servlet 生命周期、JDBC 连接数据库、Statement 和 PreparedStatement 的区别、Connection Pool 的原理及优点缺点、...
在 Servlet 中,有两种跳转方法:RequestDispatcher.forward() 方法和 HttpServletResponse.sendRedirect() 方法。 RequestDispatcher.forward() 方法仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出...
* forward 与 sendRedirect 的区别:forward 是服务器端的跳转,而 sendRedirect 是客户端的跳转。 四、框架知识点 * Spring 框架:管理实体 Bean,AOP 是什么?通常用来干些什么? * Struts1 和 Struts2 的区别:...
本资源详细介绍了JAVAWEB面试笔试题,涵盖了JSP内置对象、JSP动作、动态INCLUDE和静态INCLUDE的区别、客户端跳转和服务器端跳转、会话跟踪实现等重要知识点。 一、JSP内置对象 JSP内置对象共有9个,分别是: 1. ...
2. response.sendRedirect() 和 forward() 区别? response.sendRedirect() 用于重定向到一个新的 URL,而 forward() 用于将请求转发到一个新的 URL。 3. <%@include file="xxx.jsp"%> 和 <jsp:include> 区别? %...
实验中提到的`<jsp:forward>`和`sendRedirect`的区别在于,`<jsp:forward>`是在服务器端完成请求的转发,而`sendRedirect`则是客户端发起一个新的HTTP请求,前者不会留下浏览器历史记录,后者会。 然后,实验涉及到...
#### 题目三:forward与redirect的区别 下列关于JSP和Servlet中forward与redirect的描述,哪一项是不正确的? - forward不会改变浏览器地址栏中的URL,而redirect会。 - 在forward和redirect的情况下,服务器都会...
### Java Web知识集锦:RequestDispatcher与sendRedirect的区别详解 #### 概述 在Java Web开发过程中,开发者经常需要处理用户请求的转发和重定向。这两种机制有助于改善用户体验并简化程序逻辑。本文将深入探讨`...
5. **sendRedirect与<jsp:forward>的区别** - `response.sendRedirect()`:客户端跳转,URL可见变化,新请求,无法传递request对象内的参数,但可以使用URL参数传递数据。 - `<jsp:forward>`:服务器端跳转,URL...
3. 动态INCLUDE与静态INCLUDE的区别: - 动态INCLUDE(`jsp:include`):每次请求都会检查被包含页面的变化,适合包含动态内容,可以传递参数。 - 静态INCLUDE(`<jsp:include page="..."/>`):不会检查被包含...