首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是正确的方式来处理包括使用serlvet

问什么是正确的方式来处理包括使用serlvet
EN

Stack Overflow用户
提问于 2014-07-10 20:51:07
回答 2查看 85关注 0票数 0

我给你举个例子来理解我的意思。我有一个简单的网站只有2页。主页包含另一个页面(假设包含的页面是具有site菜单的页面)。

我必须在该菜单中执行一些动态操作,因此我希望使用servlet来控制该菜单。

在servlet中做了一些“工作”之后,我想告诉servlet将自己“重定向”到一个jsp页面,并在该页面(包含在主页中)上打印我从servlet传递到jsp页面的内容。

我不能用这段代码来做

代码语言:javascript
复制
request.setAttribute("var", var)
request.getRequestDispatcher(destinationPage).forward(request, response)

因为,当然,我的所有站点都会被重定向到"destinationPage“页面,而不仅仅是include页面!

相反,在servlet中使用此代码是否正确?

代码语言:javascript
复制
request.setAttribute("var", var)
request.getRequestDispatcher(destinationPage).include(request, response);

我能用上面的代码处理很多的包含吗?

在jsp“主”页面中处理多个include的正确方法是什么?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2014-07-10 21:53:17

我假设:

  • 您有JSP pages
  • 您想要将一个页面包含在其他页面中(假设它是菜单)
  • 您需要java动态操作来控制包含的页面

当然,您可以在菜单jsp中包含servlet,但该servlet代码不应重定向。它只需设置请求属性并返回,让调用jsp完成这一部分。

但是我想你不应该使用servlet来做这件事。如果它只需要初始请求和响应,那么您应该使用能够访问请求和响应的过滤器(并且可以设置将在所有servlet和jsp中使用的请求属性)。在任何其他情况下,您都可以访问实用程序类的静态方法,或者使用ServletContextListener将实用程序对象放入servlet上下文属性中并从任何jsp页面使用它:

代码语言:javascript
复制
<% UtilityClass.putMenuElementsIntoRequest(...); %>

或

代码语言:javascript
复制
<% application.getAttribute("utilityObject").putMenuElementsIntoRequest(...); %>

或者甚至(比如Foo是String,List<String>,...)

代码语言:javascript
复制
<% Foo foo = application.getAttribute("utilityObject").getFoo(...);
   pageContext.setAttribute("foo", foo) %>

并且您可以在jsp文件中使用${foo}。

这样,您就不再局限于service方法,可以传递任意对象。

但如果你真的想做一些严肃的事情...使用像Apache Tiles这样的框架来管理布局,Struts或Spring MVC为您的控制器,并隐藏您的jsp视图下的WEB-INF…

票数 0
EN

Stack Overflow用户

发布于 2014-07-13 20:48:11

我不得不做一个项目,要求我做同样的事情!!这就是我想出来的:每当你点击菜单中的某个东西(一些超链接,如<a href="">/<a> ),将那个超链接的目标设置为那个iframe,你就可以在"iframe".Now内的主jsp中加载另一个jsp。

例如,你的菜单中有一个“编辑配置文件”的选项,你想要首先调用一个servlet "EditProfileServlet“,它会反过来将请求分派给你的EditProfile.jsp,它将显示必要的内容。

要实现这一点,您可以使用以下命令:

代码语言:javascript
复制
<a href="EditProfileServlet" target="right_iframe">Edit Profile</a>

这里,"right_iframe“是加载视图的框架。在Servlet中,您可以使用RequestDispatcher或sendRedirect将请求转发到所需的JSP。

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

https://stackoverflow.com/questions/24677062

复制
相关文章

相似问题

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