首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dispatcher.forward()和<jsp:forward>有什么区别吗?

dispatcher.forward()和<jsp:forward>有什么区别吗?
EN

Stack Overflow用户
提问于 2012-09-06 20:45:26
回答 3查看 1.2K关注 0票数 1

以下操作是否完全相同:

代码语言:javascript
复制
request.setAttribute(name,"visited");
requestDispatcher.forward(request,response)

代码语言:javascript
复制
<jsp:forward page="page.jsp">
  <jsp:param name="status" value="visited"/>
</jsp:forward>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-06 20:54:19

两者都是一样的,唯一的区别是为<jsp:forward>编写了不同的tag handler类。

有关标记处理程序,请参阅tutorial

票数 2
EN

Stack Overflow用户

发布于 2012-09-06 21:02:24

没有功能上的区别。<jsp:forward>和RequestDispatcher.forward()是一样的,实际上<jsp:forward>内部使用了RequestDispatcher.forward()来转发请求。是操作标记,并且有标记处理程序类。请记住,JSP也会被web容器转换为servlet。

票数 1
EN

Stack Overflow用户

发布于 2014-10-23 09:09:15

如果仅考虑前向作用,则不存在功能差异。但它们似乎并不完全相同。我测试了以下代码。

代码语言:javascript
复制
<%
System.out.println("source 1");
RequestDispatcher disp = request.getRequestDispatcher("1_f1.jsp");
disp.forward(request, response);
System.out.println("source 2");
%>

代码语言:javascript
复制
<%
System.out.println("source 1");
%>
<jsp:forward page="1_f1.jsp"/>
<%
System.out.println("source 2");
%>

当使用disp.forward()时,控制台将输出"source 2“。但是当使用<jsp:forward/>时,将不会输出"source 2“。

将转换为以下语句。

代码语言:javascript
复制
pageContext = _jspxFactory.getPageContext(this, request, response,
    null, true, 8192, true);
_jspx_page_context = pageContext;
if (true) {
    _jspx_page_context.forward("1_f1.jsp");
    return;
}

下面是一条return;语句。因此,<jsp:forward/>之后的代码将不会运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12300445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档