我正在使用 java 创建一个 Web 应用程序。我对此很陌生,我有以下问题:
我有
jsp
前端的文件。现在,每当我必须做一个庞大的后端函数时,我可以创建一个 servlet 并从 jsp 执行 get 请求,或者我可以创建一个简单的 java 对象,在 jsp 中实例化它并将其用于支持的函数。哪个更好,为什么?每个后端功能都需要连接到数据库。我只想为整个会话和所有
jsp
页面的用户执行一次。它是如何完成的?
我正在使用 java 创建一个 Web 应用程序。我对此很陌生,我有以下问题:
我有jsp
前端的文件。现在,每当我必须做一个庞大的后端函数时,我可以创建一个 servlet 并从 jsp 执行 get 请求,或者我可以创建一个简单的 java 对象,在 jsp 中实例化它并将其用于支持的函数。哪个更好,为什么?
每个后端功能都需要连接到数据库。我只想为整个会话和所有jsp
页面的用户执行一次。它是如何完成的?
这两个都不是。阅读有关 MVC 模式的信息。使来自浏览器的每个请求都转到一个 servlet。使这个 servlet 调用后端的服务并填充存储在请求属性中的 Java Bean。然后将请求分派给 JSP。JSP 的唯一职责应该是从请求中的 bean 获取数据并生成页面的 HTML 标记(借助 JSTL 和自定义标记。没有 scriptlet)。
不应将数据库连接保留给单个用户。如果您有 1000 个并发用户每 30 秒执行一个请求,那么您将需要 1000 个连接,并且大部分时间都处于空闲状态。这超出了数据库可以支持的范围,并且这些连接无论如何都可能超时或失败。阅读有关连接池的信息,并使用一个:每个需要连接的请求都从池中获取一个,完成其工作,然后关闭连接,这实际上将其返回给它来自的池,准备好为另一个请求提供服务。
对于问题 1:
如果不需要 servlet,为什么要使用它?只需在一个普通的 Java 类中完成繁重的工作。通过这种方式,您将在工作流程中减少依赖关系。
对于问题 2:
大多数应用服务器现在都内置了对池连接的支持。强烈建议您使用此功能。现在,您可以通过多种方式继续前进。最简单和 IMO 最好的方法是创建一个与数据库相关的对象,它将处理连接打开/关闭、执行更新/删除/选择功能,并在整个应用程序中使用它
我认为如果您选择一个框架,例如Spring (您可以在此处找到教程列表),您最终会得到更清晰的 JSP 文件和更结构化的项目。春天也应该阻止你重新发明轮子,从头开始一切。
关于你的第二个问题,我不明白你的问题。如果您想为每个用户打开一个连接,那么您将消耗可用于其他更有用事物的资源。这样的系统也不会扩大规模。为此,我推荐另一个框架Hibernate,您可以在数据访问层中使用它(在此处阅读有关 MVC(模型视图控制器)设计模式的更多信息)来管理数据库事务。