`
DoubleEO
  • 浏览: 158069 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

常用java工具类(一)

阅读更多
1.读取配置文件
EnvironmentConfig.java

import java.io.*;
import java.util.*;

/**
 * java 读取配置(属性)文件  
 * @author Billows.Van 
 * billows.van@gmail.com
 */
public class EnvironmentConfig {
	static EnvironmentConfig ec;// 创建对象ec
	private static Hashtable<String, Properties> register = new Hashtable<String, Properties>();// 静态对象初始化[在其它对象之前]

	private EnvironmentConfig() {
		super();
	}

	/**
	 * 取得EnvironmentConfig的一个实例
	 */
	public static EnvironmentConfig getInstance() {
		if (ec == null)
			ec = new EnvironmentConfig();// 创建EnvironmentConfig对象
		return ec;// 返回EnvironmentConfig对象
	}

	/**
	 * 读取配置文件
	 */
	public Properties getProperties(String fileName) {// 传递配置文件路径
		InputStream is = null;// 定义输入流is
		Properties p = null;
		try {
			p = (Properties) register.get(fileName);// 将fileName存于一个HashTable
			/**
			 * 如果为空就尝试输入进文件
			 */
			if (p == null) {
				try {
					is = new FileInputStream(fileName);// 创建输入流
				} catch (Exception e) {
					if (fileName.startsWith("/"))
						// 用getResourceAsStream()方法用于定位并打开外部文件。
						is = EnvironmentConfig.class.getResourceAsStream(fileName);
					else
						is = EnvironmentConfig.class.getResourceAsStream("/"+fileName);
				}
				p = new Properties();
				p.load(is);// 加载输入流
				register.put(fileName, p);// 将其存放于HashTable缓存
				is.close();// 关闭输入流
			}
		} catch (Exception e) {
			e.printStackTrace(System.out);
		}
		return p;// 返回Properties对象
	}

	/**
	 * 此处插入方法描述。
	 */
	public String getPropertyValue(String fileName, String strKey) {
		Properties p = getProperties(fileName);
		try {
			return (String) p.getProperty(strKey);
		} catch (Exception e) {
			e.printStackTrace(System.out);
		}
		return null;
	}
}


用法:
EnvironmentConfig ec=EnvironmentConfig.getInstance();
String driverClassName=ec.getPropertyValue("/config/jdbc.properties", "jdbc.driverClassName");


2.Jdbc工具
JdbcUtil.java
package com.billows.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * @author Billows.Van haidii@126.com
 * @version 创建时间:2008-4-30 上午10:53:09 类说明
 */
public class JdbcUtil {
	static {
		try {
			EnvironmentConfig ec=EnvironmentConfig.getInstance();
			String driverClassName=ec.getPropertyValue("/config/jdbc.properties", "jdbc.driverClassName");
			Class.forName(driverClassName);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

	public static Connection getConnection() throws SQLException {
		Connection conn = null;
		EnvironmentConfig ec=EnvironmentConfig.getInstance();
		String url=ec.getPropertyValue("/config/jdbc.properties", "jdbc.url");
		String name=ec.getPropertyValue("/config/jdbc.properties", "jdbc.username");
		String pwd=ec.getPropertyValue("/config/jdbc.properties", "jdbc.password");
		conn = DriverManager.getConnection(url, name, pwd);
		return conn;
	}

	public static void release(Connection conn, PreparedStatement ps,ResultSet rs) {
		if (rs != null)try {rs.close();} catch (SQLException e) {e.printStackTrace();}
		if (ps != null) try {ps.close();} catch (SQLException e) {e.printStackTrace();}
		if (conn!= null)try {conn.close();} catch (SQLException e) {e.printStackTrace();}
	}

	public static void release(Object obj) {
		if (obj instanceof Connection) {
			Connection conn = (Connection) obj;
			if (conn != null)
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
		}
		if (obj instanceof PreparedStatement) {
			PreparedStatement ps = (PreparedStatement) obj;
			if (ps != null)
				try {
					ps.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
		}
		if (obj instanceof ResultSet) {
			ResultSet rs = (ResultSet) obj;
			if (rs != null)
				try {
					rs.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
		}
	}
}


3.java数据源
DBConnectionPool.java
package com.billows.util;

import java.sql.Connection;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class DBConnectionPool {
	public static Connection getConnection() throws Exception{
		Context ctx = new InitialContext(); 
		DataSource ds = (DataSource)ctx.lookup("java:comp/env/hsql"); 
//		Context initContext = new InitialContext();
//		Context envContext = (Context)initContext.lookup("java:/comp/env");   
//		DataSource ds = (DataSource)envContext.lookup("hsql");
		return ds.getConnection( ); 
	}
}


4.hsqldb随web启动的Listener
package com.billows.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.apache.log4j.Logger;
import org.hsqldb.Server;

import com.billows.util.EnvironmentConfig;
/**
 * 该listener随web服务启动 并同时启动hsql-server
 * @auth Billows.Van 
 * billows.van@gmail.com
 */
public class HsqlListener implements ServletContextListener {
	public static final Logger log = Logger.getLogger("HsqlListener");
	private EnvironmentConfig ec=EnvironmentConfig.getInstance();
	/**配置文件中的占位符,代表webapp发布后的根目录.*/
	public static final String TOKEN = "${webapp.root}";
	/** 等待数据库停止的最大时间.*/
	public static final int WAIT_TIME = 1000;
	/**jdbc的url.*/
	private String url;
	/**登陆用户名.*/
	private String username;
	/**登陆密码.*/
	private String password;
     /**处理context初始化事件. 
      * @param sce ServletContextEvent
      */  
     public void contextInitialized(ServletContextEvent sce) {  
         try {  
             username = ec.getPropertyValue("/config/jdbc.properties", "jdbc.username");
             password = ec.getPropertyValue("/config/jdbc.properties", "jdbc.password");
             String databaseName = ec.getPropertyValue("/config/jdbc.properties", "jdbc.dbname");
             int port = Integer.parseInt(ec.getPropertyValue("/config/jdbc.properties", "jdbc.dbport"));  
             String hsqlPath = ec.getPropertyValue("/config/jdbc.properties", "jdbc.dbpath");
   
             // FIXME: 因为要用到getRealPath方法获得路径,在使用war包发布的时候会出现问题  
             if (hsqlPath.startsWith(TOKEN)) {  
                 String webappRoot = sce.getServletContext().getRealPath("/").replace("\\", "/");  
                 hsqlPath = hsqlPath.substring(TOKEN.length());  
                 hsqlPath = webappRoot + hsqlPath;
             }
             String databasePath = hsqlPath + "/" + databaseName;  
             url = "jdbc:hsqldb:hsql://localhost:" + port + "/" + databaseName;  
             Server server = new Server();  
             server.setDatabaseName(0, databaseName);
             server.setDatabasePath(0, databasePath);  
             server.setPort(port);  
             server.setSilent(true);
             server.start();
             Thread.sleep(WAIT_TIME);  
             log.info("Hsqldb启动成功!");
         } catch (Exception ex) {  
        	 log.error("Hsqldb启动失败:" + ex);  
         }  
     }  
   
     /** 
      * 处理context销毁事件. 
      * @param sce ServletContextEvent 
      */  
     public void contextDestroyed(ServletContextEvent sce) {  
         try {  
             Class.forName("org.hsqldb.jdbcDriver");  
             Connection conn = null;  
             Statement state = null;  
             try {
                 // 向数据库发送shutdown命令,关闭数据库  
                 conn = DriverManager.getConnection(url, username, password);  
                 state = conn.createStatement();  
                 state.executeUpdate("SHUTDOWN;");
                 try {
					Thread.sleep(WAIT_TIME);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				log.info("关闭hsqldb数据库成功!");
             } catch (SQLException ex1) {  
                 log.error("关闭hsqldb数据库时出现异常:" + ex1);  
             } finally {  
                 // 确保关闭Statement  
                 if (state != null) {  
                     try {  
                         state.close();  
                         state = null;  
                     } catch (SQLException ex1) {  
                    	 log.error("关闭Statement时异常:"+ex1);  
                     }  
                 }  
                 // 确保关闭Connection  
                 if (conn != null) {  
                     try {  
                         conn.close();  
                         conn = null;  
                     } catch (SQLException ex1) {  
                         log.error("关闭Connection时异常:"+ex1);  
                     }  
                 }  
             }  
         } catch (ClassNotFoundException ex) {  
             log.error("HsqldbListener : contextDestoryed : error : " + ex);  
         }  
     }  
}

其中, jdbc.properties内容为
jdbc.driverClassName=org.hsqldb.jdbcDriver
jdbc.url=jdbc:hsqldb:hsql://localhost:9990/billows
jdbc.dbname=billows
jdbc.dbport=9990
jdbc.dbpath=${webapp.root}/hsqldb
jdbc.username=sa
jdbc.password=
jdbc.max_connections=30


分享到:
评论

相关推荐

    一些java常用的工具类

    总之,Java工具类是提高开发效率的关键,它们封装了常见的操作,减少了代码重复,提高了代码可读性和维护性。"一些java常用的工具类"可能涵盖了上述的多种功能,为开发者提供了方便快捷的编程体验。通过理解和利用...

    常用Java工具类

    以下是对标题和描述中提到的一些常用Java工具类的详细解释: 1. **数据库池工具类**:数据库连接池是管理数据库连接的一种机制,它能有效地复用已存在的数据库连接,避免频繁创建和关闭连接导致的性能开销。常见的...

    常用的java工具类

    1.[工具类] 读取、打印输出、保存xml .java 2.[工具类] Java中计算任意两个日期之间的工作天数 .java 3.[工具类] MD5 .java 4.[工具类] 时间工具TimeUtil.java 5.[工具类] 通信服务端...等等20几个常用工具类.

    java常用的工具类整理28个

    下面我们将详细探讨Java中28个常用的工具类,主要涉及`IO`相关的开发工具。 1. **java.lang.Math**:这个类提供了许多基础数学函数,如求平方根、最大值、最小值、随机数生成等。 2. **java.util.Arrays**:用于...

    java常用工具类

    以下是对标题和描述中提到的一些Java常用工具类的详细讲解: 1. **UUID类**: `java.util.UUID` 是用来生成全局唯一标识符的类。UUID(Universally Unique Identifier)是一种128位的数字,可以确保生成的ID在全球...

    Java常用工具类

    Java常用工具类是Java开发中不可或缺的一部分,它们提供了一系列便捷的方法,帮助开发者高效地处理各种常见任务。在Java中,最著名的工具类库是`java.util`包,它包含了大量实用类,如集合、日期时间、数学计算、...

    java工具类集合

    Java工具类集合是Java开发中不可或缺的一部分,它们提供了一系列便捷的方法,帮助开发者高效地处理各种常见任务。在Java中,工具类通常被组织在各种包下,如`java.util`、`java.lang`、`java.io`等。下面将详细介绍...

    java 常用工具类

    Java工具类是Java编程中非常重要的组成部分,它们提供了一系列预定义的方法,可以帮助开发者高效地处理各种常见任务,而无需从头实现。在Java中,最知名的工具类库是`java.util`包,它包含了大量方便实用的类。下面...

    java常用工具类的封装jar

    并且在平时开发中会遇到各种各样通用的一些功能,比如对json的处理,对String对象的处理,对Excel文件的处理,MD5加密处理,Bean对象处理等等,这些常用并通用的方法可以被封装成一个个工具类如StringUtil,...

    常用的30个java工具类

    以下是对标题"常用的30个Java工具类"中提及的一些工具类及其功能的详细说明: 1. **MD5**: MD5(Message-Digest Algorithm 5)是一种广泛用于数据校验和加密的哈希函数。Java中的`java.security.MessageDigest`类...

    Java常用工具类UtilClass

    在Java编程中,工具类(Util Class)是包含各种实用函数的静态类,它们提供了一种简化常见任务的方法。在给定的`UtilClass`中,我们有五个主要的工具类:`StringUtil`、`FileUtil`、`ConnectDB`、`DateUtil`和`...

    Java常用工具类大全,工作5年精心整理.zip

    "Java常用工具类大全,工作5年精心整理.zip"这个压缩包文件很可能包含了一位有经验的Java开发者在五年工作中积累的各种实用工具类,这些工具类能够极大地提高开发效率,简化代码编写。以下是对可能包含的知识点进行...

    java常用工具类整理

    Java常用工具类整理 本文将详细介绍 Spring 及 Guava 相关工具类的使用说明和代码 demo。这些工具类都是 Java 开发中常用的实用工具,可以帮助开发者快速高效地完成各种任务。 一、Spring 工具类 1. org.spring...

    Java常用工具类大全

    提供了很丰富的java工具类,包括字符串、数字、日期、文件、图像、编码解码、校验工具、文档操作等。 主要分为以下几种: - 1.通用操作类,例如String、数字、日期、各种校验等 - 2.文档操作,excel、pdf等 - 3.加密...

    java常用工具类汇总

    "Java常用工具类汇总"是一个集合了各种实用工具类的资源,旨在方便开发者在处理常见任务时提高效率。这个工具类库覆盖了字符串、文件、数组以及数学等多个方面,同时也提供了相应的API文档,使得开发者能够更好地...

    精心整理的java常用的26个工具类

    精心整理的26个java常用工具类,如:FastJsonUtil,StringHelper,RandomHelper,FileHelper,HttpClientHelper等等,直接使用maven导入到eclipse中使用即可。

Global site tag (gtag.js) - Google Analytics