JDBC数据库连接  
  系统配置:windowsXp/本地sqlserver2000+SP3/JDK5.0/TOMCAT5.58/sqlserver2000 driver for JDBC

  第一步:----安装J2SDK:

  到SUN官方站点(http://java.sun.com/j2se,英文网站)下载J2SDK的安装文件。目前的最高版本是JDK 5.0 Update 2。

  安装时有两个选择安装路径的页面,第一个安装路径可以随便选我们就放在C:/JDK5.0下好了。第二个就用默认路径,别动它。

  安装完毕后,要设置环境变量

  我的电脑---属性---高级---环境变量;

  在下面的框框---系统变量(S)里新建两个系统变量。

  一个JAVA_HOME

  在变量名中输入:JAVA_HOME(注意大写),在变量值中输入:C:/JDK5.0

  一个CLASSPATH

  在变量名中输入:CLASSPATH(注意大写),在变量值中输入:D:/JDK5.0/bin;.;D:/JDK5.0/lib;D:/JDK5.0/lib/dt.jar;D:/JDK5.0/lib/tools.jar;

  新建两个系统变量后,还要在原来就有的一个系统变量PATH的变量值最前面加C:/JDK5.0/bin;

  这样JDK就安装好了,我们可以新建个D:/下新建个记事本,在里面敲入下面这段代码用来检验JDK是否安装成功。


  public class test{
   public static void main(String args[]){

    System.out.println("this is a test program.");
   }
  }


  敲完保存,更改文件名为test.java

  注意1:最好自己敲下键盘,在网页上直接复制可能会出现语法错误。

  注意2:第一句中public class test的test要跟java文件的文件名一摸一样,大小写也要相同,否则错误。

  开始——运行  输入cmd进入DOS命令提示符窗口

  在窗口中输入“D:”回车

  输入“javac test.java”回车

  输入“java test”回车

  如果显示出“this is a test program.”则表示JDK安装成功。

  第二步:----安装Tomcat:

  到tomcat官方站点http://jakarta.apache.org/site/downloads/index.html,点Tomcat Downloads里的Tomcat5,目前最新版本是5.5.9。

  安装在C:/Tomcat5.5下

  TOMCAT5.5以上版本在JDK1.5以上版本安装成功的前提下,无需在系统变量里做任何更改。

  安装完毕后,你可以在系统栏里看到一个TOMCAT的服务器。

  用IE打开Tomcat Downloads里的Tomcat5,http://localhost:8080页面,若能看到tomcat的默认JSP页面,则说明TOMCAT安装成功!


  第三步:----安装JSP访问SQL Server 2000的驱动程序JDBC:

  JDBC下载在微软的官方页(http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=86212D54-8488-481D-B46B-AF29BB18E1E5)下载。

  下载安装后的默认路径是C:/Program Files/Microsoft SQL Server 2000 Driver for JDBC

  其核心的三个文件是C:/Program Files/Microsoft SQL Server 2000 Driver for JDBC/lib路径下的三个.JAR压缩文件

  第一步我们在环境变量中新建的系统变量CLASS_PATH的变量值中追加

  C:/Program Files/Microsoft SQL Server 2000 Driver for JDBC/lib/msbase.jar;C:/Program Files/Microsoft SQL Server 2000 Driver for JDBC/lib/mssqlserver.jar;C:/Program Files/Microsoft SQL Server 2000 Driver for JDBC/lib/msutil.jar;

  接着将msbase.jar、mssqlserver.jar、msutil.jar拷至C:/Tomcat 5.5/common/lib

  然后重新启动TOMCAT服务器!

  用一段代码来测试数据库连接成功与否。

<%@    page    contentType="text/html;charset=gb2312"%>                 
<%@    page    import="java.sql.*"%>         
<html>                 
<body>                 
<%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();                 
String    url="jdbc:microsoft:sqlserver://127.0.0.1:4133;DatabaseName=pubs";       //pubs为SQLSERVER2000的默认数据库         
String    user="sa";
//把sa替换成你的SQLSERVER2000用户名         
String    password="sa";
//把sa替换成你的SQLSERVER2000密码         
Connection    conn=    DriverManager.getConnection(url,user,password);                 
Statement    stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);                 
String    sql="select    *    from    titles";
//titles为SQLSERVER2000的默认数据库pubs中的默认表                 
ResultSet    rs=stmt.executeQuery(sql);                 
while(rs.next())    {%>                 
您的第一个字段内容为:<%=rs.getString(1)%>                 
您的第二个字段内容为:<%=rs.getString(2)%>                 
<%}%>                 
<%out.print("数据库操作成功,恭喜你");%>                 
<%rs.close();                 
stmt.close();                 
conn.close();                 
%>                 
</body>                 
</html>

  注:网上有的代码“<%=rs.getString(2)%>  ”中有分号,正确代码的应该去掉分号。

Tomcat数据缓冲池连接
  第三步:----配置Tomcat

  在Tomcat 5.5/conf/server.xml的<GlobalNamingResources>中添加:

  <Resource name="JDBC for MySQL" type="javax.sql.DataSource" password="sa" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2" maxWait="5000" username="sa" url="jdbc:microsoft:sqlserver://127.0.0.1:4133;DatabaseName=pubs" maxActive="4"/>

  或通过Tomcat Administration登陆其管理界面,并由Resources->Data Sources->Create New Data Source创建新的数据源。

Property Value
JNDI Name:  JDBC for MySQL
Data Source URL:  jdbc:microsoft:sqlserver://127.0.0.1:4133;DatabaseName=pubs
JDBC Driver Class:  com.microsoft.jdbc.sqlserver.SQLServerDriver
User Name:  sa
Password:  sa
Max. Active Connections:  4
Max. Idle Connections:  2
Max. Wait for Connection:  5000
Validation Query:   
 

  接着单击Save按钮保存,并单击Commit Changes将更改更新至Tomcat服务器。

  在Tomcat 5.5/webapps/[项目名称]/WEB-INF/web.xml或Tomcat 5.5/conf/web.xml的<web-app>中添加:

  <resource-ref>
     <description>MySQL Connection Pool</description>
     <res-ref-name>JDBC for MySQL</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
   </resource-ref>

  在Tomcat 5.5/webapps/[项目名称]/META-INF/context.xml或Tomcat 5.5/conf/context.xml的<Context>中添加:

  <ResourceLink name="JDBC for MySQL" global="JDBC for MySQL" type="javax.sql.DataSource"/>

  第四步:----测试

  重启Tomcat服务器,写一个test.jsp:

<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%@ page session="false" %>
<%@page contentType="text/html;charset=gb2312"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Test of SQL Server connection pool</title>
</head>
<body>
<%
out.print("Start
");
try{
Context initCtx = new InitialContext();
Context ctx = (Context) initCtx.lookup("java:comp/env");
Object obj = (Object) ctx.lookup("JDBC for MySQL");
javax.sql.DataSource ds = (javax.sql.DataSource)obj;
Connection conn = ds.getConnection();
out.print("SQL Server connection pool runs perfectly!");%>


<%
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from titles";
//titles为SQLSERVER2000的默认数据库pubs中的默认表
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>


您的第一个字段内容为:<%=rs.getString(1)%>


您的第二个字段内容为:<%=rs.getString(2)%>


<%}%>


<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();

conn.close();
}
catch(Exception ex){
out.print(ex.getMessage());
ex.printStackTrace();
}
%>
</body>
</html>

Log4j日志管理
1、首先将log4j-1.2.9.jar包含入类路径中。

2、Log4J必须在应用的其它代码执行前完成初始化。其初始化内容如下:

import java.io.*;
import javax.servlet.*;
import org.apache.log4j.*;
public class Log4JInit extends HttpServlet {
public void init() throws ServletException {
String prefix = getServletContext().getInitParameter("SERVLET_ROOT_PATH");
String file = getServletConfig().getInitParameter("LOG4J_FILE");
// 从Servlet参数读取log4j的配置文件
if (file != null) {
PropertyConfigurator.configure(prefix + file);
}
}
public void doGet(HttpServletRequest request,HttpServletResponse response)throws
IOException, ServletException {}
public void doPost(HttpServletRequest request,HttpServletResponse response)throws
IOException, ServletException {}
}

3、web.xml内容配置如下:具体的文件放在 路径:/webapps/[项目名称]/WEB-INF/web.xml或Tomcat 5.5/conf/web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>

<servlet>
<servlet-name>globalparameter</servlet-name>
<servlet-class>edu.common.GlobalParameter</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>globalparameter</servlet-name>
<url-pattern>/globalparameter</url-pattern>
</servlet-mapping>

<context-param>
<param-name>SERVLET_ROOT_PATH</param-name>
<param-value>C:/Java/Tomcat 5.5/webapps/ROOT/WEB-INF/classes</param-value>
</context-param>

<context-param>
<param-name>LOG4J_FILE</param-name>
<param-value>/log4j.properties</param-value>
</context-param>

........

</web-app>

注意:上面的load-on-startup应设为1,以便在Web容器启动时即装入该Servlet。log4j.properties文件放在根的properties子目录中,也可以把它放在其它目录中。应该把.properties文件集中存放,这样方便管理。

4、log4j.properties的配置,具体的路径在/webapps/项目名称/WEB-INF/log4j.properties

在配置文件中即log4j.properties中这样设置:

# 其中,Log4j提供的appender有以下几种:
# org.apache.log4j.ConsoleAppender(控制台),
# org.apache.log4j.FileAppender(文件),
# org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
# org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
# org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

# 配置日志信息的格式(布局),其语法为:
# log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
# log4j.appender.appenderName.layout.option1 = value1
# log4j.appender.appenderName.layout.option = valueN
# 其中,Log4j提供的layout有以下几种:
# org.apache.log4j.HTMLLayout(以HTML表格形式布局),
# org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
# org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
# org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

#设置成根目录,所有包括debug以上级别的信息都打印出来到日志文件中
log4j.rootLogger=debug, stdout

#设置为debug,表示只能打印出debug级别的信息
log4j.logger.debug=debug, R

#设置成info,表示只能打印出info级别的信息
log4j.logger.info=info,s

#设置成error,表示只能打印出error级别的信息
log4j.logger.error = error,k

#输出debug级别以上的信息到控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=(%F:%L) - %m%d%n

#打印debug级别的信息到debug.log
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=c:/debug.log
log4j.appender.R.Append = true
log4j.appender.R.DatePattern='.'yyyy-MM-dd'.txt'
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d [%F:%L] - %m /r/n

#打印info级别的信息到info.log
log4j.appender.s=org.apache.log4j.RollingFileAppender
log4j.appender.s.File= c:/info.log
log4j.appender.s.Append = true
# Control the maximum log file size
log4j.appender.s.MaxFileSize=100KB
# Archive log files (one backup file here)
log4j.appender.s.MaxBackupIndex=1
log4j.appender.s.layout=org.apache.log4j.PatternLayout
log4j.appender.s.layout.ConversionPattern=%p %t %c - %m%d%n

#打印error级别的信息到error.log中
log4j.appender.k=org.apache.log4j.DailyRollingFileAppender
log4j.appender.k.File=C:/error.log
log4j.appender.k.Append = true
log4j.appender.k.DatePattern='.'yyyy-MM-dd'.txt'
log4j.appender.k.layout=org.apache.log4j.PatternLayout
log4j.appender.k.layout.ConversionPattern=%d [%F:%L] - %m /r/n

5、在class类中的的设置如下:

static Logger debugLog=Logger.getLogger("debug")
static Logger infoLog=Logger.getLogger("info")
static Logger errorLog=Logger.getLogger("error")

这样不同级别的log信息就可以打在不同的log文件中例如:

debugLog.debug("就打印到上面的debuginfo中");
InfoLog.info("就打印到上面的infoLog中");

屏蔽tomcat目录列表功能
缺省情况下,如果你访问tomcat下的一个web应用,那么如果你输入的是一个目录名,而且该目录下没有一个可用的welcome文件,那么tomcat会将该目录下的所有文件列出来,如果你想屏蔽这个缺省行为,那么可以修改conf/web.xml文件,将其中的:

<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
修改为:
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>