与java web应用程序相关的初学者查询

时间:2012-09-20 05:55:16

标签: java jsp web-applications servlets

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

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

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

问题1:

如果不需要servlet,为什么要使用它?只需在普通的Java类中进行繁琐的工作即可。通过这种方式,您在工作流程中的依赖性会降低。

问题2:

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

答案 2 :(得分:0)

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

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