将jdbc连接代码放在servlet类中是个好主意吗?
我是servlet和database的core.java
。我有一个core.java
文件,其中我有一个JDBC连接代码。在同一目录中,我有一个coreServlet.java
文件,它从HTML页面获取表单值。我的问题是:
- 如何在两个java类之间进行交互,例如,如何使用从servlet(coreServlet.java)中的HTML表单到我的core.java文件的变量,以便将其存储在我的数据库中?
- 将我的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...)
- 如何inheritance系统的反别名设置,以便将文本绘制为像swing一样的屏幕外图像?
- ‘Selenium-server-standalone.jar’和’Selenium Client&WebDriver’有什么区别?
- 检查注释是否属于特定类型
- 用连续的数字播种java.util.Random
- 如何使用spring DSL在camel中记录标头值
- JAX-WS返回空列表
- Mac OS FileNotFound上的Java,如果路径包含非拉丁字符
- 如何使用Jersey Client对启用了JAAS的Web服务器进行身份validation?
- StringBuffer如何在不创建两个对象的情况下实现追加function?