【问题标题】:Beginner query related to java web apps [closed]与 Java Web 应用程序相关的初学者查询 [关闭]
【发布时间】:2012-09-20 05:55:16
【问题描述】:

我正在使用 java 创建一个 Web 应用程序。我对此很陌生,我有以下问题:

  1. 我有用于前端的 jsp 文件。现在,每当我必须做一个庞大的后端函数时,我可以创建一个 servlet 并从 jsp 执行 get 请求,或者我可以创建一个简单的 java 对象,在 jsp 中实例化它并将其用于支持的函数。 哪个更好,为什么?

  2. 每个后端函数都需要连接到数据库。我只想为整个会话和所有jsp 页面的用户执行一次。它是怎么做的?

【问题讨论】:

  • 我不确定是否有人可以明确回答这个问题。这两点更像是软件架构问题而不是编程问题,并且每种架构都有其优点和缺点。 “连接到数据库”还取决于您使用的数据库,通常应用程序连接到数据库一次,而不是用户本身。我建议编写一些示例应用程序来找出您认为最好的方式。当您有更具体的问题时,我们能够更好地为您提供帮助。

标签: java jsp web-applications servlets


【解决方案1】:
  1. 这两个都不是。阅读有关 MVC 模式的信息。使来自浏览器的每个请求都转到一个 servlet。使这个 servlet 调用后端的服务并填充存储在请求属性中的 Java Bean。然后将请求分派给 JSP。 JSP 的唯一职责应该是从请求中的 bean 获取数据并生成页面的 HTML 标记(借助 JSTL 和自定义标记。没有 scriptlet)。

  2. 不应将数据库连接保留给单个用户。如果您有 1000 个并发用户每 30 秒执行一个请求,那么您将需要 1000 个连接,并且大部分时间都处于空闲状态。这超出了数据库可以支持的范围,并且这些连接无论如何都可能超时或失败。阅读有关连接池的信息,并使用一个:每个需要连接的请求都从池中获取一个,完成其工作,然后关闭连接,这实际上将其返回给它来自的池,准备好为另一个请求提供服务。

【讨论】:

  • sry 数据库连接这个术语,我实际上是使用用户凭据连接到网络服务。所以我需要为每个用户执行一次
【解决方案2】:

对于问题 1:

如果不需要 servlet,为什么要使用它?只需在一个普通的 Java 类中完成繁重的工作。通过这种方式,您的工作流程中的依赖性将减少。

对于问题 2:

现在大多数应用服务器都内置了对池连接的支持。强烈建议您使用此功能。现在,您可以通过多种方式继续前进。最简单和 IMO 最好的方法是创建一个与数据库相关的对象,它将处理连接打开/关闭、执行更新/删除/选择功能,并在整个应用程序中使用它

【讨论】:

    【解决方案3】:

    我认为,如果您选择一个框架,例如Spring(您可以找到教程列表here),您最终会得到更清晰的 JSP 文件和更结构化的项目。春天也应该阻止你重新发明轮子,让一切从头开始。

    关于你的第二个问题,我不明白你的问题。如果您想为每个用户打开一个连接,那么您将消耗可用于其他更有用事物的资源。这样的系统也不会扩大规模。为此,我推荐另一个框架Hibernate,您可以在您的数据访问层中使用它(阅读更多关于MVC(模型视图控制器)设计模式here)来管理数据库事务。

    【讨论】:

      猜你喜欢
      • 2018-01-04
      • 1970-01-01
      • 2010-09-28
      • 1970-01-01
      • 2013-06-28
      • 2011-06-03
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多