将jdbc连接代码放在servlet类中是个好主意吗?

我是servlet和database的core.java 。我有一个core.java文件,其中我有一个JDBC连接代码。在同一目录中,我有一个coreServlet.java文件,它从HTML页面获取表单值。我的问题是:

  1. 如何在两个java类之间进行交互,例如,如何使用从servlet(coreServlet.java)中的HTML表单到我的core.java文件的变量,以便将其存储在我的数据库中?
  2. 将我的jdbc连接代码放在coreServlet.java中是一个更好的主意吗?

我的项目结构如下:

  - aarya(project name) | - WEB-INF | | -web.xml -src | -pkg | -CoreServlet.java(servlet to interact HTML form) -Main.java -Core.java(jdbc code is here to interact database) | -html | - core.html | - css | -core.css | -javascript | -core.js | - lib | -index.html 

数据库连接数据应该在您的JNDI数据源中,如果您使用连接池但从不在类中,则会更好。 由于您的是Web应用程序,请注意连接池配置在很大程度上取决于Web应用程序服务器。

例如, Tomcat 7数据库连接池配置和JBoss 7数据库连接池配置 (在GlassFish和其他Web应用程序服务器上配置数据库连接池还有其他步骤,请注意每台服务器上的不同) 。

从这两个示例中,您可以看到您将有一个XML文件,您可以在其中放置连接属性:数据库URL,用户,密码,最小和最大池连接大小(将打开多少个数据库连接)

  • Tomcat方式:

      
  • JBoss方式:

      jdbc:mysql://localhost:3306/projectx com.mysql TRANSACTION_READ_COMMITTED  10 100 true   user password   32      com.mysql.jdbc.jdbc2.optional.MysqlXADataSource   

最后,如果您已配置数据库连接池并且它可以正常工作,则您需要在代码中执行的所有恢复连接的操作都是调用InitialContext#lookup以使用其JNDI资源名称恢复资源。

知道了这一点,在配置JNDI资源以连接到名为“jdbc / ProjectX”的MySQL数据库之后,您可以拥有一个恢复Connection的类,如下所示:

 public class DatabaseConnectivity { public static Connection getConnection() throws NamingException, SQLException { InitialContext cxt = new InitialContext(); DataSource ds = (DataSource) cxt.lookup("java:/comp/env/jdbc/ProjectX" ); return ds.getConnection(); } } 

顺便说一句,我会使用不同的包名来知道类的function组。 例如:

 src - edu.home.controller.servlet + CoreServlet.java - edu.home.controller.filter + SessionFilter.java - edu.home.model.entity + AnEntity.java + AnotherEntity.java - edu.home.model.database + DatabaseConnectivity.java - edu.home.model.service + AnEntityService.java + AnotherEntityService.java (and on and on...)