`

07-Struts1.3 数据库连接池技术

阅读更多

一、Tomcat数据库连接池技术

首先在Eclipse中的serverTomcat 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");
	}
}

 

分享到:
评论

相关推荐

    commons-pool-1.3.jar+commons-collections-3.2.1.jar

    例如,Struts使用`commons-collections`进行请求参数的处理和验证,Spring利用`commons-pool`实现数据库连接池,而Hibernate可能依赖两者来优化数据访问和资源管理。了解并熟练使用这些库,能帮助开发者提高程序效率...

    commons-dbcp-1.4&&commons-pool-1.3.jar

    在Java Web框架中,如Spring、Struts等,通常会集成Apache Commons DBCP作为默认的数据库连接池。通过配置XML文件,开发者可以轻松地配置和管理数据库连接池,提升应用的性能和响应速度。 结合提供的压缩包子文件名...

    commons-dbcp-1.2.1.jar commons-pool-1.3.jar struts-legacy.jar

    这三者组合在一起,可能表示一个使用Struts 1.x作为Web框架,并且依赖Apache Commons DBCP进行数据库连接池管理,以及Apache Commons Pool进行通用对象池化的项目。然而,由于版本较旧,这些组件可能存在安全漏洞和...

    commons-pool-1.3.jar

    在这个场景下,程序试图加载`org.apache.commons.dbcp.BasicDataSource`类,这是Apache Commons DBCP库的一部分,用于数据库连接池管理。DBCP是Apache Commons的一个子项目,它提供了一个实现JDBC连接池的工具,而`...

    commons-pool-1.3和commons-dbcp-1.2.2.rar

    标题中的"commons-pool-1.3"和"commons-dbcp-1.2.2"是两个著名的Apache开源项目,它们在Java开发中扮演着重要角色,尤其在处理数据库连接池方面。这两个库通常用于三层架构(表现层、业务逻辑层、数据访问层)的应用...

    commons-dbcp-1.2.2.jar &commons-pool-1.3.jar

    总结来说,`commons-dbcp`和`commons-pool`是Java开发中常用的数据库连接池实现,它们通过池化技术优化了数据库连接的管理,提高了系统效率。在Tomcat服务器和Struts框架中,正确配置DataSource能够保证Web应用稳定...

    commons-pool-1.3=AND=commons-dbcp-1.2.2

    Apache Commons DBCP(Database Connection Pool)是基于Commons Pool的数据库连接池组件。它管理数据库连接,确保高效地复用这些连接,而不是每次需要时都去创建新的。DBCP包含了BasicDataSource,这是一个实现了...

    数据源和连接池

    为此,开发者通常采用数据库连接池技术来优化这一过程。 #### 二、连接池实现原理 **连接池的基本思想**是在应用启动时预先创建一定数量的数据库连接,并将这些连接存储在一个容器(如列表)中。当应用程序需要...

    JavaWeb需要用到的jar包_jar包_javaweb_commons-dbutils-1.3_

    在大型的JavaWeb应用中,数据库连接池是必备的。它管理数据库连接,避免每次请求都创建新的连接,从而提高性能和资源利用率。虽然标题中未直接提及连接池,但像DBUtils这样的工具往往配合连接池使用,如C3P0、DBCP...

    commons-logging-1.0.4.jar,commons-codec-1.3

    这个库在数据库连接池(如C3P0、DBCP)等场景中广泛应用,以提高性能和减少系统资源的消耗。 **标签解释** - `codec`:指的是编码和解码,与Commons Codec库相关。 - `logging`:指的是日志记录,与Commons Logging...

    J2EE电子商务系统开发从入门到精通--基于Struts和Hibernate技术实现

    - 包括数据库连接信息、方言设置等。 - **3.3.2 连接池配置** - 使用连接池提高数据库访问效率。 - **3.3.3 数据源配置** - 数据源配置文件,指定数据源的类型和参数。 - **3.3.4 其他重要属性配置** - 如缓存...

    struts数据源配置用到的4个jar

    总结来说,这四个jar文件在Struts数据源配置中起着核心支持作用,它们分别是处理集合操作的工具库、提供数据库连接池服务的DBCP、实现对象池的Pool库,以及处理Struts1遗留特性的Legacy库。正确理解和使用这些库,...

    Struts数据源连接和国际化

    通过以上步骤,我们可以看到如何在Struts项目中实现数据库连接以及如何支持多语言版本的应用程序。这对于构建可扩展性强且用户体验良好的Web应用非常重要。此外,这些功能也展示了Struts框架的强大和灵活性,使得...

    struts demo

    综上所述,"struts demo"项目展示了如何使用Struts1.3实现用户留言功能,结合Oracle数据库和连接池技术,以及DBUtils包简化数据库操作。通过这个示例,开发者可以学习到Struts框架的核心概念以及数据库交互的最佳...

    commons-DBCP

    DBCP(Database Connection Pool)是Java应用程序中广泛使用的数据库连接池实现,它的全称是Apache Commons DBCP。这个库的主要功能是为Java应用提供高效的数据库连接池服务,帮助管理和复用数据库连接,从而提升...

    Struts用户登录实例

    JNDI允许应用程序查找和绑定资源,如数据库连接池。这样做的好处是,应用可以动态地查找和使用数据源,而不必硬编码数据库连接信息,提高了可移植性和安全性。 配置Oracle数据源通常包括以下步骤: - 在Tomcat的...

    Struts实践入门(原创)

    - **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_pool,commons_dbcp,struts_legacy

    接下来,`commons_dbcp`(Database Connection Pool)同样是Apache Commons的一个子项目,它是基于`commons_pool`实现的数据库连接池。数据库连接池在多用户环境中尤为重要,因为它能有效地管理和复用数据库连接,...

    LyBBS『凌云论坛』系统

    对数据库我们采用了数据库连接池,用户可以在配置文件中配置不同的连接池或者不使用连接池,对表操作也采用了预处理、批处理、事务处理等多种方式,用户可以在配置文件中配置数据库连接参数,包括连接数,超过连接数...

    struts2常用的13个jar包

    Struts2是一个强大的Java Web应用程序框架,用于构建和维护可扩展、交互性强的Web应用。在Struts2的开发中,一系列...在实际项目中,开发者通常还会添加其他依赖,如数据库连接池、JSON处理库等,以满足更复杂的需求。

Global site tag (gtag.js) - Google Analytics