论坛首页 入门技术论坛

Tomcat6.0数据源配置

浏览 3062 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-03-06  
tomcat6.0 数据源配置:
这里是以Mysql数据库为例,其他的数据库都是一样的配置
首先将mysql驱动拷贝到tomcat下的lib目录下。C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib
然后修改C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf下的context.xml文件,在里面添加如下代码:

在Context标签里添加一个属性 reloadable="true"
<WatchedResource>WEB-INF/web.xml</WatchedResource><!--这个有就不需要添加-->
<Resource name="jdbc/mysqlds" auth="Container" type="javax.sql.DataSource"
    maxActive="100" maxIdle="30" maxWait="10000" username="root" password="admin" driverClassName="com.mysql.jdbc.Driver"        url="jdbc:mysql://localhost:3306/databasename"/>
下面解释一下各属性的含义:
name             表示指定的jndi名称 (这个名字这里可以随便写)
auth             表示认证方式,一般为Container
type             表示数据源床型,使用标准的javax.sql.DataSource
maxActive        表示连接池当中最大的数据库连接
maxIdle          表示最大的空闲连接数
maxWait          当池的数据库连接已经被占用的时候,最大等待时间
logAbandoned     表示被丢弃的数据库连接是否做记录,以便跟踪
username         表示数据库用户名
password         表示数据库用户的密码
driverClassName  表示JDBC DRIVER
url              表示数据库URL地址

下面以一个登陆示例来说明:
数据库中一个用户(User)表三个字段:userid,username,userpassword
新建一个web项目
建立一个包com.tomcattest包下建立三个类一个UserBean,DataBase,LoginServlet

Userbean.class的代码包含如下内容:

package com.tomcattest;

public class UserBean {

private int userid;
private String username;
private String userpassword;

public int getUserid() {
return userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUserpassword() {
return userpassword;
}
public void setUserpassword(String userpassword) {
this.userpassword = userpassword;
}

}

DataBase.class的代码如下:

package com.tomcattest;
import java.sql.SQLException;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;

public class Database {
//下载后的DbUtils解压后,将commons-dbutils-1.1.jar导入项目
public boolean getUser(String sql){
List list=null;
try {
  Context context=new InitialContext();
  DataSource ds=(DataSource) context.lookup("java:/comp/env/jdbc/mysqlds");  // "java:/comp/env/"是固定写法,后面接的是context.xml中的Resource中name属性的值
  QueryRunner query=new QueryRunner(ds);  //这个是DbUtils下的类 DbUtils可以在apache的官方网站下载,在commons目录下,现在最新版本为1.1
  list=(List)query.query(sql, new BeanListHandler(UserBean.class));
  //BeanListHandler是DbUtils下的一个类,用于查询也还可以是MapListHandler
  // list=(List)query.query(sql, new MapListHandler()); list里有多个map集合
  //修改 添加 删除调用update方法
  } catch (NamingException e) {
e.printStackTrace();
  } catch (SQLException e) {
e.printStackTrace();
  }
  return list.size()>0?true:false;
  }
}

LoginServlet是一个Servlet,代码如下:

package com.tomcattest;
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet {


public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String action=request.getParameter("action");
if(action.equals("CheckLogin")){
this.CheckLogin(request, response);
}

}


public void CheckLogin(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

request.setCharacterEncoding("gbk");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String name=request.getParameter("name");
String password=request.getParameter("password");
Database db=new Database();
String sql="select * from user where username='"+name+"' and userpassword='"+password+"'";
boolean b=db.getUser(sql);
if(b){
out.print("<script>alert('login success!');</script>");
}else{
out.print("<script>alert('fail success!');</script>");
}

}

}

最后将index.jsp页面改成如下即可:

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
   <form action="servlet/LoginServlet?action=CheckLogin" method="post">
   <input type="text" name="name"></br>
   <input type="password" name="password"></br>
   <input type="submit">
   </form>
  </body>
</html>
   发表时间:2009-03-07  
tomcat的数据源是apache的 dbcp的数据源吧???

这个数据源速度不是很快..建议换成 proxool的数据源...

目前在 service.xml配置还是没有弄出来..不过在spring下面好配置多了.
0 请登录后投票
   发表时间:2009-03-07  
tzheng517 写道
tomcat6.0 数据源配置:
这里是以Mysql数据库为例,其他的数据库都是一样的配置
首先将mysql驱动拷贝到tomcat下的lib目录下。C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib
然后修改C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf下的context.xml文件,在里面添加如下代码:

在Context标签里添加一个属性 reloadable="true"
<WatchedResource>WEB-INF/web.xml</WatchedResource><!--这个有就不需要添加-->
<Resource name="jdbc/mysqlds" auth="Container" type="javax.sql.DataSource"
    maxActive="100" maxIdle="30" maxWait="10000" username="root" password="admin" driverClassName="com.mysql.jdbc.Driver"        url="jdbc:mysql://localhost:3306/databasename"/>
下面解释一下各属性的含义:
name             表示指定的jndi名称 (这个名字这里可以随便写)
auth             表示认证方式,一般为Container
type             表示数据源床型,使用标准的javax.sql.DataSource
maxActive        表示连接池当中最大的数据库连接
maxIdle          表示最大的空闲连接数
maxWait          当池的数据库连接已经被占用的时候,最大等待时间
logAbandoned     表示被丢弃的数据库连接是否做记录,以便跟踪
username         表示数据库用户名
password         表示数据库用户的密码
driverClassName  表示JDBC DRIVER
url              表示数据库URL地址

下面以一个登陆示例来说明:
数据库中一个用户(User)表三个字段:userid,username,userpassword
新建一个web项目
建立一个包com.tomcattest包下建立三个类一个UserBean,DataBase,LoginServlet

Userbean.class的代码包含如下内容:

package com.tomcattest;

public class UserBean {

private int userid;
private String username;
private String userpassword;

public int getUserid() {
return userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUserpassword() {
return userpassword;
}
public void setUserpassword(String userpassword) {
this.userpassword = userpassword;
}

}

DataBase.class的代码如下:

package com.tomcattest;
import java.sql.SQLException;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;

public class Database {
//下载后的DbUtils解压后,将commons-dbutils-1.1.jar导入项目
public boolean getUser(String sql){
List list=null;
try {
  Context context=new InitialContext();
  DataSource ds=(DataSource) context.lookup("java:/comp/env/jdbc/mysqlds");  // "java:/comp/env/"是固定写法,后面接的是context.xml中的Resource中name属性的值
  QueryRunner query=new QueryRunner(ds);  //这个是DbUtils下的类 DbUtils可以在apache的官方网站下载,在commons目录下,现在最新版本为1.1
  list=(List)query.query(sql, new BeanListHandler(UserBean.class));
  //BeanListHandler是DbUtils下的一个类,用于查询也还可以是MapListHandler
  // list=(List)query.query(sql, new MapListHandler()); list里有多个map集合
  //修改 添加 删除调用update方法
  } catch (NamingException e) {
e.printStackTrace();
  } catch (SQLException e) {
e.printStackTrace();
  }
  return list.size()>0?true:false;
  }
}

LoginServlet是一个Servlet,代码如下:

package com.tomcattest;
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet {


public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String action=request.getParameter("action");
if(action.equals("CheckLogin")){
this.CheckLogin(request, response);
}

}


public void CheckLogin(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

request.setCharacterEncoding("gbk");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String name=request.getParameter("name");
String password=request.getParameter("password");
Database db=new Database();
String sql="select * from user where username='"+name+"' and userpassword='"+password+"'";
boolean b=db.getUser(sql);
if(b){
out.print("<script>alert('login success!');</script>");
}else{
out.print("<script>alert('fail success!');</script>");
}

}

}

最后将index.jsp页面改成如下即可:

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
   <form action="servlet/LoginServlet?action=CheckLogin" method="post">
   <input type="text" name="name"></br>
   <input type="password" name="password"></br>
   <input type="submit">
   </form>
  </body>
</html>

0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics