一、Tomcat数据库连接池技术
首先在Eclipse中的server的Tomcat v6.0 Server at localhost-config/context.xml下配置:
<!-- <Resource name="jdbc/mysql" //数据源名字 type="javax.sql.DataSource" //数据源类 username="root" password="root" driverClassName="com.mysql.jdbc.Driver" maxIdle="2" //指定数据库连接池中处于空闲状态的数据库连接的最大数目 maxWait="50" //指定数据库连接池中数据库连接处于空闲状态的最大时间,设置为-1时,可以表现为无限制等待 url="jdbc:mysql://localhost:3306/db_dbsource" maxActive="4" //指定数据库连接池中处于激活状态的数据库连接的最大数目 />
再将数据库驱动包加入到tomcat的lib文件夹下
然后程序获取数据库池的接口方式如下:即编写UserPersistent类:
package org.lxh.persistent; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; /** * @author xudongwang 2011-5-3 * */ //这里是针对tomcat中配置的数据源 public class UserPersistent { private DataSource dataSource; public UserPersistent() throws NamingException{ Context ctx=null; ctx = new InitialContext(); // Context数据源对象与名字的绑定的集合(通过数据源名字找到数据源对象) // JNDI // DataSource data=text.lookup("java:comp/env/oracle"); // (java:comp/env)是java虚拟机,通过java虚拟机获取数据源的名字【重要】 通过text.lookup("java:comp/env/oracle")找到数据源 dataSource = (DataSource) ctx.lookup("java:comp/env/jdbc/mysql"); } public boolean addUser(String name, String password) { Connection conn = null; String sql = "insert into t_user(name,password) values(?,?)"; try { conn = this.dataSource.getConnection(); PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, name); ps.setString(2, password); int result = ps.executeUpdate(); if(result>0){ return true; } } catch (Exception e) { e.printStackTrace(); } return false; } }
最后在UserAction.java中;
package org.lxh.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.DynaActionForm; import org.apache.struts.actions.DispatchAction; import org.lxh.persistent.UserPersistent; /** * @author xudongwang 2011-5-3 * */ public class UserAction extends DispatchAction { public ActionForward add(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { DynaActionForm dynaActionForm = (DynaActionForm) form; String username = (String) dynaActionForm.get("username"); String password = (String) dynaActionForm.get("password"); UserPersistent userPersistent = new UserPersistent(); if (userPersistent.addUser(username, password)) { return mapping.findForward("success"); } else { return mapping.findForward("error"); } } }
二、Struts1.2数据库连接池技术
注意:关于Struts的数据源配置,只能在Struts1.2及其以下版本使用,Struts1.3不支持数据源配置
Struts1.2框架下配置数据库连接池:
在struts-config.xml配置文件中配置;
<data-sources> <data-source key="mysql" type="org.apache.commons.dbcp.BasicDataSource"> <set-property property="driverClassName" value="com.mysql.jdbc.Driver" /> <set-property property="autoCommit" value="true" /> <set-property value="root" property="username" /> <set-property value="root" property="password" /> <set-property value="jdbc:mysql://localhost:3306/db_dbsource" property="url" /> </data-source> </data-sources>
对Struts数据源配置的说明:
dirverClassName:所用JDBC的驱动类
url:所用的JDBC的url
MaxCount:同时打开的最大连接数,缺省值为2
MinCount:同时打开的最小连接数,缺省值为1
AutoCommit:如果为true,则每次execute之后会强制回滚
LoginTimeout:创建连接的最大允许时间,以秒为单位
ReadOnly:默认为false,表示该连接不是只读
如果有多个数据源,则可以在配置文件(data-sources)下配置多个data-source,不同的数据源通过指定不同的key来区分;
最后直接在UserAction.java中:
package org.lxh.action; import java.sql.Connection; import java.sql.PreparedStatement; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.sql.DataSource; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.DynaActionForm; import org.apache.struts.actions.DispatchAction; import org.lxh.persistent.UserPersistent; /** * @author xudongwang 2011-5-3 * */ public class UserAction extends DispatchAction { /** * 这里的方法是针对struts中配置数据源的方法,而上面的是针对tomcat中的 */ public ActionForward add(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { DataSource datasource = getDataSource(request, "mysql");//通过key来取得不同的数据源 DynaActionForm dynaForm = (DynaActionForm) form; String username = (String) dynaForm.get("username"); String password = (String) dynaForm.get("password"); Connection conn = null; try { conn = datasource.getConnection(); String sql = "insert into t_user(name,password) values (?,?)"; PreparedStatement pst = conn.prepareStatement(sql); pst.setString(1, username); pst.setString(2, password); int result = pst.executeUpdate(); System.out.println(sql); if (result > 0) {// 如果结果集大于0说明添加成功,返回为true return mapping.findForward("success"); } try { conn = datasource.getConnection(); } catch (Exception e) { e.printStackTrace(); } pst.close(); conn.close(); } finally { } return mapping.findForward("error"); } }
相关推荐
例如,Struts使用`commons-collections`进行请求参数的处理和验证,Spring利用`commons-pool`实现数据库连接池,而Hibernate可能依赖两者来优化数据访问和资源管理。了解并熟练使用这些库,能帮助开发者提高程序效率...
在Java Web框架中,如Spring、Struts等,通常会集成Apache Commons DBCP作为默认的数据库连接池。通过配置XML文件,开发者可以轻松地配置和管理数据库连接池,提升应用的性能和响应速度。 结合提供的压缩包子文件名...
这三者组合在一起,可能表示一个使用Struts 1.x作为Web框架,并且依赖Apache Commons DBCP进行数据库连接池管理,以及Apache Commons Pool进行通用对象池化的项目。然而,由于版本较旧,这些组件可能存在安全漏洞和...
在这个场景下,程序试图加载`org.apache.commons.dbcp.BasicDataSource`类,这是Apache Commons DBCP库的一部分,用于数据库连接池管理。DBCP是Apache Commons的一个子项目,它提供了一个实现JDBC连接池的工具,而`...
标题中的"commons-pool-1.3"和"commons-dbcp-1.2.2"是两个著名的Apache开源项目,它们在Java开发中扮演着重要角色,尤其在处理数据库连接池方面。这两个库通常用于三层架构(表现层、业务逻辑层、数据访问层)的应用...
总结来说,`commons-dbcp`和`commons-pool`是Java开发中常用的数据库连接池实现,它们通过池化技术优化了数据库连接的管理,提高了系统效率。在Tomcat服务器和Struts框架中,正确配置DataSource能够保证Web应用稳定...
Apache Commons DBCP(Database Connection Pool)是基于Commons Pool的数据库连接池组件。它管理数据库连接,确保高效地复用这些连接,而不是每次需要时都去创建新的。DBCP包含了BasicDataSource,这是一个实现了...
为此,开发者通常采用数据库连接池技术来优化这一过程。 #### 二、连接池实现原理 **连接池的基本思想**是在应用启动时预先创建一定数量的数据库连接,并将这些连接存储在一个容器(如列表)中。当应用程序需要...
在大型的JavaWeb应用中,数据库连接池是必备的。它管理数据库连接,避免每次请求都创建新的连接,从而提高性能和资源利用率。虽然标题中未直接提及连接池,但像DBUtils这样的工具往往配合连接池使用,如C3P0、DBCP...
这个库在数据库连接池(如C3P0、DBCP)等场景中广泛应用,以提高性能和减少系统资源的消耗。 **标签解释** - `codec`:指的是编码和解码,与Commons Codec库相关。 - `logging`:指的是日志记录,与Commons Logging...
- 包括数据库连接信息、方言设置等。 - **3.3.2 连接池配置** - 使用连接池提高数据库访问效率。 - **3.3.3 数据源配置** - 数据源配置文件,指定数据源的类型和参数。 - **3.3.4 其他重要属性配置** - 如缓存...
总结来说,这四个jar文件在Struts数据源配置中起着核心支持作用,它们分别是处理集合操作的工具库、提供数据库连接池服务的DBCP、实现对象池的Pool库,以及处理Struts1遗留特性的Legacy库。正确理解和使用这些库,...
通过以上步骤,我们可以看到如何在Struts项目中实现数据库连接以及如何支持多语言版本的应用程序。这对于构建可扩展性强且用户体验良好的Web应用非常重要。此外,这些功能也展示了Struts框架的强大和灵活性,使得...
综上所述,"struts demo"项目展示了如何使用Struts1.3实现用户留言功能,结合Oracle数据库和连接池技术,以及DBUtils包简化数据库操作。通过这个示例,开发者可以学习到Struts框架的核心概念以及数据库交互的最佳...
DBCP(Database Connection Pool)是Java应用程序中广泛使用的数据库连接池实现,它的全称是Apache Commons DBCP。这个库的主要功能是为Java应用提供高效的数据库连接池服务,帮助管理和复用数据库连接,从而提升...
JNDI允许应用程序查找和绑定资源,如数据库连接池。这样做的好处是,应用可以动态地查找和使用数据源,而不必硬编码数据库连接信息,提高了可移植性和安全性。 配置Oracle数据源通常包括以下步骤: - 在Tomcat的...
- **DBCP (version 1.0 or later)**:数据库连接池管理工具。 - **Logging (version 1.0 or later)**:日志记录工具。 - **POOL (version 1.0 or later)** - **SERVICES (version 1.0 or later)** - **...
接下来,`commons_dbcp`(Database Connection Pool)同样是Apache Commons的一个子项目,它是基于`commons_pool`实现的数据库连接池。数据库连接池在多用户环境中尤为重要,因为它能有效地管理和复用数据库连接,...
对数据库我们采用了数据库连接池,用户可以在配置文件中配置不同的连接池或者不使用连接池,对表操作也采用了预处理、批处理、事务处理等多种方式,用户可以在配置文件中配置数据库连接参数,包括连接数,超过连接数...
Struts2是一个强大的Java Web应用程序框架,用于构建和维护可扩展、交互性强的Web应用。在Struts2的开发中,一系列...在实际项目中,开发者通常还会添加其他依赖,如数据库连接池、JSON处理库等,以满足更复杂的需求。