无名的博客

2006年1月19日 #

如何在TOMCAT配置数据源,调用数据源

1、在TOMCAT里配置数据源,在<host></host>之间加上下面的代码,具体的参数根据自己情况修改
   <Context path="" docBase="E:\WEB_CODE\DEMO\WEB" debug="0">
   
   <Logger className="org.apache.catalina.logger.FileLogger"
                     prefix="localhost_xzm_log." suffix=".txt"
           timestamp="true"/>

          <Environment name="maxExemptions" type="java.lang.Integer"
                      value="15"/>
          <Parameter name="context.param.name" value="context.param.value"
                     override="false"/>         
         
          <Resource name="jdbc/tzwdb" auth="Container"
                    type="oracle.jdbc.pool.OracleDataSource"/>
          <ResourceParams name="jdbc/tzwdb">
            <parameter><name>factory</name><value>oracle.jdbc.pool.OracleDataSourceFactory</value></parameter>           
            <parameter><name>driverClassName</name><value>oracle.jdbc.driver.OracleDriver</value></parameter>
            <parameter><name>url</name><value>jdbc:oracle:thin:@127.0.0.1:1521:ORCL</value></parameter>
            <parameter><name>username</name><value>demo</value></parameter>
            <parameter><name>password</name><value>demo</value></parameter>
            <parameter><name>serverName</name><value>127.0.0.1</value></parameter>           
            <parameter><name>databaseName</name><value>ORCL</value></parameter>           
            <parameter><name>portNumber</name><value>1521</value></parameter>
            <parameter><name>maxActive</name><value>30</value></parameter>
            <parameter><name>maxIdle</name><value>10</value></parameter>
            <parameter><name>maxWait</name><value>500</value></parameter>           
            <parameter><name>description</name><value>oracle</value></parameter>           
          </ResourceParams>
           
          <Resource name="mail/Session" auth="Container"
                    type="javax.mail.Session"/>
          <ResourceParams name="mail/session">
            <parameter>
              <name>mail.smtp.host</name>
              <value>localhost</value>
            </parameter>
          </ResourceParams>
   
   </Context>

2、连接数据库

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

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

import org.apache.log4j.Logger;

/**
 * @author : 萧秋水
 *
 * @contact me :
cnyanhai@hotmail.com
 *
 */
public class DBManager {


    static Logger logger = Logger.getLogger(DBManager.class.getClass());

    private Context initCtx = null;

    private Context ctx = null;

    private DataSource ds = null;

    private long timeout = 5000;

    private Statement theStatement = null;

    private PreparedStatement thePstmt = null;

    private static final String userName = "tzw";

    private static final String password = "ywsoft";

    /***************************************************************************
     *
     * 初试化initCtx
     *
     * 取得数据源对象
     * 
     **************************************************************************/

    public DBManager() {
        try {
            initCtx = new InitialContext();
            //init context,read config web.xml
            if (initCtx == null) {
                throw new Exception("Initial Failed!");
            }
            ctx = (Context) initCtx.lookup("java:comp/env");
            //find "jdbc/tzwdb" object this configruation in the SERVER.XML of
            // Tomcat
            if (ctx != null) {
                ds = (DataSource) ctx.lookup("jdbc/tzwdb");
            }
            if (ds == null) {
                throw new Exception("Look up DataSource Failed!");
            }
        } catch (Exception e) {
            logger.error("Look up DataSource error! -- " + e.getMessage());
        }
    }

    /***************************************************************************
     *
     * get Connection
     *
     * @return Connection
     * 
     **************************************************************************/

    public synchronized Connection getConnection() {
        //get connection and set to delay time
        long startTime = new java.util.Date().getTime();
        Connection con = null;
        while (con == null) {
            con = newConnection();
            if (con != null) {
                logger.info("Create New Connection!");
                break;
            }
            try {
                logger.info("Connection timeout,Please wait " + timeout + "ms");
                wait(timeout);
            } catch (InterruptedException e) {
                logger.warn("Connection timeout! -- " + e.getMessage());
            }
            if ((new java.util.Date().getTime() - startTime) >= timeout) {
                logger.warn("Connection timeout!");
                break;
            }
        }
        return con;
    }

    private Connection newConnection() {
        Connection con = null;
        try {
            con = ds.getConnection(userName, password);
            if (con == null) {
                throw new Exception("Create Connection Failed!");
            }
        } catch (Exception e) {
            logger.warn("Create Connection Failed! -- " + e.getMessage());
        }
        return con;
    }

    /***************************************************************************
     *
     * release the connection
     * 
     **************************************************************************/

    public synchronized void freeConnection(Connection conn, PreparedStatement pstmt) {
        try {
            //close PreparedStatement
            if (pstmt != null) {
                pstmt.close();
                pstmt = null;
            }
        } catch (Exception e) {
            logger.warn("release stmt,pstmt error! -- " + e.getMessage());
        }
        try {
            //close Connection
            if (conn != null) {
                conn.close();
                conn = null;
            }
        } catch (SQLException e) {
            logger.warn("release conn error! -- " + e.getMessage());
        }
    }

}
   

posted @ 2006-01-19 10:04 十三郎 阅读(1447) | 评论 (0)编辑 收藏

2006年1月9日 #

在TOMCAT下JSP的中文处理解决方案

方法一:new String(request.getParameter("test").getBytes("iso-8859-1"),"GBK")

方法二:
1、
在jsp中加入下面两行
          <%@ page contentType="text/html; charset=GBK" language="java" %>
          <meta http-equiv="Content-Type" content="text/html; charset=GBK">
2、
在TOMCAT中找到SetCharacterEncodingFilter.java,他们位于D:\Tomcat5.0.27\webapps\jsp-examples\WEB-INF\classes\filters,加到你的工程文件里去,并修改包名。
3、
配置WEB.XML,
在web.xml里加入这一段
 <filter>
    <filter-name>Set Character Encoding</filter-name>
    <filter-class>utils.SetCharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>GB2312</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>Set Character Encoding</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
4、修改server.xml中两个部分
<Connector port="8090"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000"
               disableUploadTimeout="true" URIEncoding='GB2312'/>
<Connector className="org.apache.coyote.tomcat5.CoyoteConnector"
               port="8009" minProcessors="5" maxProcessors="75"
               enableLookups="true" redirectPort="8443"
               acceptCount="10" debug="0" connectionTimeout="0"
               useURIValidationHack="false" protocol="AJP/1.3"
              
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" 
               URIEncoding='GB2312'/>

posted @ 2006-01-09 10:46 十三郎 阅读(233) | 评论 (0)编辑 收藏

2005年12月23日 #

一些比较好的javascript

1、window.opener.location.reload();
当A页面弹出B页面时,在B页面如果调用这句js代码,则会刷新A页面。

posted @ 2005-12-23 16:49 十三郎 阅读(416) | 评论 (1)编辑 收藏

2005年12月15日 #

异常错误解决办法,不断更新新中......

在用JAVA编写程序时时常会遇到一些异常错误,本人把握以往遇到的异常及其解决办法在此写下来,不断增加,希望其他朋友把自己遇到的一些异常解决方法根贴。

1、 java.sql.SQLException: 操作不允许: Unsupported syntax for refreshRow()
这个异常时在用纯jsp分页时遇到的,在这里会用到absolute(),isAfterLast()等方法,
解决方法:
statement=connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);

posted @ 2005-12-15 14:28 十三郎 阅读(499) | 评论 (0)编辑 收藏

2005年11月29日 #

两个渐变效果进度条

请看效果 ,具体程序如下:

<html>
<head>
<title>渐变效果进度条</title>
<script language="javascript">
 var i;
 function go()
 {
  bar_width = document.getElementById("bg").clientWidth;
  i = bar_width;
  setTimeout('start();',300);
 }
 function start()
 {
  if(i-->0)
  {
   ps.style.width = i;
   bn.innerHTML = Math.floor((bar_width-i)/bar_width*100)+"%";
   setTimeout('start();',20);
  }
 }
 
</script>
<style type="text/css">
#bg {
filter:progid:DXImageTransform.Microsoft.Gradient
(GradientType=1, StartColorStr=#FFFF00, EndColorStr=#FF0000);
width:300px;
height:20px;
border:1px solid black;
z-index:0;
position:absolute;
}
#ps {
float:right;
background-color:#FFFF00;
width:100%;
}
#bn {
position:absolute;
text-align:center;
width:100%;
height:100%;
cursor:default;
}
</style>
</head>
<body onload="go();">
<div id="bg"><div id="ps"></div><span id="bn">0%</span></div>
</body>
</html>


请看效果 ,具体程序如下:

<html>
<head>
<title>渐变效果进度条</title>
<script language="javascript">
var _Hex = Array("00","01","02","03","04","05","06","07","08","09",
"0A","0B","0C","0D","0E","0F","10","11","12","13","14","15","16","17","18","19",
"1A","1B","1C","1D","1E","1F","20","21","22","23","24","25","26","27","28","29",
"2A","2B","2C","2D","2E","2F","30","31","32","33","34","35","36","37","38","39",
"3A","3B","3C","3D","3E","3F","40","41","42","43","44","45","46","47","48","49",
"4A","4B","4C","4D","4E","4F","50","51","52","53","54","55","56","57","58","59",
"5A","5B","5C","5D","5E","5F","60","61","62","63","64","65","66","67","68","69",
"6A","6B","6C","6D","6E","6F","70","71","72","73","74","75","76","77","78","79",
"7A","7B","7C","7D","7E","7F","80","81","82","83","84","85","86","87","88","89",
"8A","8B","8C","8D","8E","8F","90","91","92","93","94","95","96","97","98","99",
"9A","9B","9C","9D","9E","9F","A0","A1","A2","A3","A4","A5","A6","A7","A8","A9",
"AA","AB","AC","AD","AE","AF","B0","B1","B2","B3","B4","B5","B6","B7","B8","B9",
"BA","BB","BC","BD","BE","BF","C0","C1","C2","C3","C4","C5","C6","C7","C8","C9",
"CA","CB","CC","CD","CE","CF","D0","D1","D2","D3","D4","D5","D6","D7","D8","D9",
"DA","DB","DC","DD","DE","DF","E0","E1","E2","E3","E4","E5","E6","E7","E8","E9",
"EA","EB","EC","ED","EE","EF","F0","F1","F2","F3","F4","F5","F6","F7","F8","F9",
"FA","FB","FC","FD","FE","FF");
 function go()
 {
  setTimeout('start();',100);
 }
 var i=0;
 function start()
 {
  if(i++<256)
  {
   ps.innerHTML += "<span style='width:1px;background-color:#FF"+_Hex[256-i]+"00;'>";
   bn.innerHTML = Math.floor(i/2.56)+"%";
   setTimeout('start();',10);
  }
 }
 
</script>
<style type="text/css">
#ps {
background-color:#FFFF00;
width:256px;
margin: 1px;
float:left;
}
#bn {
width:39px;
margin: 1px;
float:right;
text-align:center;
color:#FFFFFF;
font-family:Arial;
font-size:13px;
}
</style>
</head>
<body onload="go();">

<div style="background-color:black;width:300px;height:20px;"><div id="ps"></div><div id="bn"></div></div>
</body>
</html>

posted @ 2005-11-29 10:24 十三郎 阅读(565) | 评论 (0)编辑 收藏

仅列出标题  下一页