【问题标题】:What is typical Servlet + JSP + JDBC simple application architecture? [closed]什么是典型的 Servlet + JSP + JDBC 简单应用架构? [关闭]
【发布时间】:2013-05-27 01:57:29
【问题描述】:

在简单的应用中使用Servlets & JSP,通过DataSource/Connection pool连接数据库,典型的应用架构是什么?

  1. Connection 对象创建时,是普通应用的 servlet 超类并通过参数传递给 doGet/doPost?

  2. 如何将 Connection 对象传递给 DAO 类以检索/更新域的状态 对象?

  3. 是在 DAO 级别、特定 servlet 级别还是 servlet 的超类处理 SQL 异常?

  4. 网站模板是如何设计的?通过 JSP include 标签?

  5. DAO 对象是在第一次实例化时构造的特定 servlet 中的属性,还是像在 doGet/doPost 方法中创建的那样位于另一层中?

  6. DAO 中的每个小操作都应该从 DataSource 中检索连接还是更好地在 DAO 的构造函数中传递 Connection?

  7. 是所有数据都通过request.setAttribute传给JSP还是有更好的办法?

  8. 我应该只传递给 JSP 域对象/集合还是传递整个 DAO/另一个中介以进行数据检索?

  9. 我们是否应该为整个请求-响应链只实现单个 Connection 对象?如果是,如何实现?

【问题讨论】:

  • 问题太多了。

标签: java jsp servlets jdbc architecture


【解决方案1】:

1) 一旦服务器启动,就会有一个连接池可用,为此我们需要在“context.xml”中指定“Resource”标签。最初将有10个连接可用(默认)。

2)你可以传递连接对象,下面的例子会让你更清楚

    class A {
    public static DataSource getConnection() {
     Context initContext  = new InitialContext();
     Context envContext  = (Context)initContext.lookup("java:/comp/env");
     DataSource dataSource = (DataSource)envContext.lookup("jdbc/testdb");
     return dataSource;
    }
     }  
   class B {
    javax.sql.DataSource ds=(DataSource)A.getConnection();
    javax.sql.Connection con=ds.getConnection();
    }

3)您可以派生自己的异常或预定义的异常,这取决于用例。 通常异常会在任何级别进行处理,或者您可以通过某种方式抑制。

4)在jsp中,jsp:include使用是最好的方式,因为include有自己的缺点。

5)我不清楚你的第 5 个问题

6) 构造函数级别是最好的,我希望或者你创建一个单独的连接类来处理异常,连接关闭和通道。它看起来很棒。

7)你有三个作用域:应用程序、请求和会话。不要对所有内容都使用 request.setAttribute。它有一些限制。

8) 以集合的形式传递数据很容易处理。

9)我不知道。

注意:如果你发现任何错误,不要介意

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-19
    • 2011-03-20
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    • 2016-09-05
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多