首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在生成网页时使用多态性?

问在生成网页时使用多态性?
EN

Stack Overflow用户
提问于 2010-09-22 09:54:11
回答 2查看 74关注 0票数 1

这是我所遇到的一种问题的一个例子。

当用户访问我的应用程序的主页时,有两种可能:

  1. 登录
  2. 未登录

如果用户登录,我希望在右上角显示用户名,并显示一个显示“注销”的链接。如果用户没有登录,我想显示一个链接,上面写着“登录或注册”。

以前,我会从JSP中调用一些代码,这些代码将返回一个适当的HTML片段,我将把它粘到我的页面中。但这可能不是最好的做法,尽管它很简单。

现在,我认为应该将主页的初始请求发送到servlet (而不是jsp),它将实例化一些类型为" homepage“的对象,该对象具有子类"LoggedInHomePage”和"NotLoggedInHomePage“,这取决于会话变量中是否有用户id。我必须用if或case语句确定正确的构造函数。

到目前为止,它似乎更整洁。但是此时它又变得混乱起来,因为我现在需要知道我是否在我的"Request对象“中提供了userId,为此我需要使用一些if语句,或者我使用了一个不同的jsp模板,这意味着每个页面的服务器上都有两个几乎相同的jsp。

看上去都不雅致。帮助最感激的人。如果你对这个问题有一个很好的解决方案

EN

回答 2

Stack Overflow用户

发布于 2010-09-22 09:59:21

我只需创建一个主页,其中包含一个登录组件,其职责是显示当前状态并在登录时执行必要的身份验证。

这是一种“有”的关系,而不是“一种”

票数 3
EN

Stack Overflow用户

发布于 2010-09-22 09:59:04

一个可能的解决办法是:

向HomePage添加一个方法原型。叫它getNavigationArea()或getNavigationLinks() (比方说)。该方法将返回一组Link对象,这些对象可以使用适当的HTML呈现。

LoggedInHomePage和NotLoggedInHomePage都将覆盖此方法。前者的实现将提供一个表示“注销”的Link实例,而后者将提供一个实例,该实例显示“注册/注册”。

JSP将在不知道其内容的情况下呈现导航区域。这样,不管用户状态如何,只有一个JSP页面。此外,您还可以添加其他类型的用户,例如RegularUser、AdminUser等,它们具有不同的导航选项,而不必添加新的JSP页面。

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

https://stackoverflow.com/questions/3768091

复制
相关文章

相似问题

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