`

hibernate c3p0数据源用户名密码加密

阅读更多
spring2 配置文件
<?xml version="1.0"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
	<!--  数据源配置 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
		<property name="driverClass">
			<value>oracle.jdbc.driver.OracleDriver</value>
		</property>
		<property name="jdbcUrl" value="jdbc:oracle:thin:@IP:端口:SID" />
		<property name="acquireIncrement" value="1"/>
		<property name="idleConnectionTestPeriod" value="300"/>
		<property name="maxPoolSize" value="5"/>
		<property name="minPoolSize" value="1"/>
		<property name="initialPoolSize" value="1" />
		<property name="numHelperThreads" value="3"/>
		<property name="maxIdleTime" value="1200" />
		<property name="acquireRetryAttempts" value="2"/>
		<property name="preferredTestQuery" value=" select 1 from dual "/>
		<property name="testConnectionOnCheckin" value="true"/>
		[color=red]<property name="properties" ref="dataSourceProperties"/>[/color]
	</bean>
	
	<bean id="dataSourceProperties" class="PropertiesEncryptFactoryBean">
		<property name="properties">
			<props>
				<prop key="user">xxxx加密后</prop>
				<prop key="password">xxxxxxx加密后</prop>
			</props>
		</property>
	</bean>


2.PropertiesEncryptFactoryBean(加密类)
import java.util.Properties;

import org.springframework.beans.factory.FactoryBean;

public class PropertiesEncryptFactoryBean implements FactoryBean {

	private Properties properties;
	
	public Object getObject() throws Exception {
		return getProperties();
	}

	public Class getObjectType() {
		return java.util.Properties.class;
	}

	public boolean isSingleton() {
		return true;
	}

	public Properties getProperties() {
		return properties;
	}

	public void setProperties(Properties inProperties) {
		this.properties = inProperties;
		String originalUsername = properties.getProperty("user");
		String originalPassword = properties.getProperty("password");
		if (originalUsername != null){
			String newUsername = deEncryptUsername(originalUsername);
			properties.put("user", newUsername);
		}
		if (originalPassword != null){
			String newPassword = deEncryptPassword(originalPassword);
			properties.put("password", newPassword);
		}
	}
	
	private String deEncryptUsername(String originalUsername){
		return deEncryptString(originalUsername);
	}
	
	private String deEncryptPassword(String originalPassword){
		return deEncryptString(originalPassword);
	}
	//简单加密
	private String deEncryptString(String originalString){
		StringBuilder newString = new StringBuilder();
		for (int i = 0; i < originalString.length(); i++) {
			char eachChar= originalString.charAt(i);
			char newChar = (char)(eachChar + i);
			newString.append(newChar);
		}
		return newString.toString();
	}

}



ComboPooledDataSource的properties属性可被注入user,password
只有user,password两个属性是可配置,其他属性不存也不是取自properties(具体可看C3P0源码)
分享到:
评论
1 楼 reference 2012-05-09  
请问一下,我照这样弄的,为什么,c3p0无法获得用户密码?

启动tomcat就报空指针?

相关推荐

    c3p0数据库连接池下载

    5. **扩展性**:c3p0是模块化的,可以与其他数据源如Oracle UCP、HikariCP等结合使用,或者通过自定义实现来扩展其功能。 在实际使用中,你需要在项目中引入`c3p0-0.9.1.2.jar`这个库文件。这个版本的c3p0是2009年...

    Java基础学习42.pdf

    C3P0是一个流行的开源JDBC连接池,它提供了数据源和JNDI绑定,遵循JDBC3规范和JDBC2标准扩展。C3P0在诸如Hibernate和Spring这样的知名框架中广泛应用。 首先,使用C3P0数据库连接池需要导入相关的jar包,例如c3p0-...

    springmvc整合Hibernate的登录实例带表结构

    - 配置 Hibernate:引入 Hibernate 相关依赖,配置 Hibernate 的核心文件(如 `hibernate.cfg.xml`),定义数据源、SessionFactory 等。 - 创建实体类:根据数据库表结构,创建对应的 Java 实体类,使用注解(@...

    用SSH2实现简单的用户登录注册删除功能.pdf

    数据源是连接数据库的关键,本例中使用了C3P0连接池,因为它提供了更丰富的配置选项。 4. **Hibernate配置**:`sessionFactory`配置包括数据源、JDBC驱动、URL、用户名和密码。此外,还需要设置连接池的大小(如...

    JSP+JavaBean+Servlet技术实现某网站用户注册和登录功能( 源码打包)

    - Servlet接收到请求,从JavaBean中提取数据,执行验证操作(如检查用户名是否已存在、密码是否符合规则等)。 - 如果验证通过,Servlet将用户信息保存到数据库,并生成成功消息;如果验证失败,返回错误信息。 5...

    javaweb项目包含登录注册

    - **连接池**:为了提高性能和资源管理,通常使用连接池(如C3P0、Apache DBCP或HikariCP)来管理数据库连接。 5. **安全机制**: - **CSRF Token**:防止跨站请求伪造攻击,每个表单提交时应包含一个唯一的Token...

    java连接access的mdb文件

    不过,为了提高效率和可维护性,建议使用更现代的JDBC驱动,如Apache的DBCP或C3P0,以及ORM框架如Hibernate或MyBatis,它们提供了更好的性能和更方便的API。 总的来说,Java连接Access MDB文件涉及到JDBC接口、ODBC...

    一个用SSH实现的注册登录功能

    8. **性能优化**:为了提升系统性能,可以使用缓存技术(如Spring的Cache Abstraction)、连接池(如Apache DBCP或C3P0)以及合理的数据库设计。此外,还可以通过Struts2的拦截器进行性能监控和优化。 这个"shop...

    springMVC配置连接数据库实现登录功能的一个小demo

    Spring MVC 是一个强大的Java Web开发框架,用于构建...数据源配置通常使用Apache的DBCP或C3P0,而SessionFactory配置则是为Hibernate提供数据库连接参数,如数据库URL、用户名、密码和驱动类名。 ```xml ...

    数据库连接测试

    MyEclipse支持配置连接池,如C3P0、Apache DBCP或HikariCP,这些连接池组件可以帮助管理数据库连接的生命周期。 6. **异常处理和测试用例**:在开发过程中,还应编写测试用例来模拟各种异常情况,如网络中断、超时...

    crm项目课堂笔记.docx

    - 配置C3P0连接池,定义数据库连接参数,如驱动类、URL、用户名和密码。 - 配置Hibernate相关属性,如方言、SQL显示、格式化SQL和自动更新数据库结构。 - 使用log4j.properties文件进行日志管理。 6. 事务管理:...

    java固定资产管理系统源代码

    - 数据库连接池如C3P0或Apache DBCP提高数据库连接效率。 5. **安全性**: - 使用HTTPS协议保证数据传输的安全。 - 权限控制:根据用户角色分配不同操作权限,防止未授权访问。 - 数据加密:敏感信息如密码应...

    SSH2 jar包

    7. **com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar** 和 **c3p0-0.9.1.jar**:C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,为数据库连接提供了自动管理,包括连接创建、测试和回收。 8. **...

    网上购物项目

    在这个项目中,采用C3P0数据库连接池技术,C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。数据库连接池在多用户并发访问数据库时,可以显著提高性能,因为建立和释放...

    java银行帐目管理系统的设计与实现(源代码+毕设).zip

    3. 数据库连接池:如C3P0或Apache DBCP,用于管理和优化数据库连接,提高系统性能。 4. ORM框架:如Hibernate或MyBatis,简化数据库操作,将Java对象与数据库表映射,降低开发难度。 三、系统功能模块 1. 用户管理...

    初学JSP常用的几个jar包

    - C3P0:C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。它提供了一些高级功能,如自动测试连接、连接池的大小控制等,有助于提高数据库资源的利用率。 - DBCP (Apache ...

    ShardingSphere学习分享(一).pptx

    支持任何第三方的数据库连接池,如 DBCP、C3P0、BoneCP、Druid、HikariCP 等。 ShardingSphere-Proxy ShardingSphere-Proxy 是一个轻量级 Java 框架,在 Java 的 JDBC 层提供额外服务。它使用客户端直连数据库,以...

    JAVA上百实例源码以及开源项目源代码

    Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四”...

    linux mysql tomcat

    2. 配置数据库连接池,例如使用Apache的Commons DBCP或C3P0。 3. 在应用程序中编写JDBC代码或者使用ORM框架(如Hibernate或MyBatis)来访问数据库。 此外,为了确保系统的安全性和稳定性,还需要关注如下方面: - ...

    Java数据库编程宝典

    因此,我们通常采用数据源(DataSource)和连接池(例如C3P0、Apache DBCP或HikariCP)来管理和复用数据库连接,提高系统性能。 6. ORM框架:Java中的Hibernate和MyBatis是流行的ORM(对象关系映射)框架,它们简化...

Global site tag (gtag.js) - Google Analytics