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>