java servlet 连接mysql 数据库
来源:互联网 发布:夸客金融数据分析面试 编辑:程序博客网 时间:2024/05/17 23:59
前面我已经将java应用程序连接到了数据库,但是servlet与applicaton有所不同:application可以绕过像服务器(like:Tomacat)直接连接到了数据库:只需要加载驱动适当jdbc程序。
Class.forName("com.mysql.jdbc.Driver").newInstance();
用jdbc url 定义驱动程序和数据源之前的连接,并建立一个连接对象
Connection con1=
DriverManager.getConnection("jdbc:mysql://localhost:3306/sample_db?
user=root&password=password&useUnicode=true&characterEncoding=GB2312");
最后是建立一个Statement Object利用它来执行sql语句。
servlet 和应用程序不同之处在于它还需要通过像tomcat服务起来加载才能在jsp页面与 servlet建立通信,而且执行servlet本身也需要在当前目录下的WEB-INF下配置web.xml.所以在执行servlet之前需要正确的配置conf/server.xml文件.
假如你的当前目录在webapps/JSPBook.那么在server.xml中加入以下文字:
...........
Context path="/JSPBook" docBase="JSPBook" debug="0" crosscontext="true" reloadable="true">
Resource name="jdbc/sample_db" auth="Container"
type="javax.sql.DataSource"/>
ResourceParams name="jdbc/sample_db">
parameter>
name>factory/name>
value>org.apache.commons.dbcp.BasicDataSourceFactory/value>
/parameter>
parameter>
name>username/name>
value>root/value>
/parameter>
parameter>
name>password/name>
value>browser/value>
/parameter>
parameter>
name>driverClassName/name>
value>com.mysql.jdbc.Driver/value>
/parameter>
parameter>
name>url/name>
value>jdbc:mysql://localhost:3306/sample_db?useUnicode
=true&characterEncoding=UTF-8/value>
/parameter>
parameter>
name>maxActive/name>
value>20/value>
/parameter>
parameter>
name>maxIdle/name>
value>5/value>
/parameter>
parameter>
name>maxWait/name>
value>10000/value>
/parameter>
/ResourceParams>
/Context>
......
注意:数据库中的用户名和密码自己修改成自己设置的.
紧接着就是配置JSPBook/WEB-INF/web.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> Welcome to Tomcat Welcome to Tomcat
..........
servlet>
servlet-name>ConnectDatabase/servlet-name>
servlet-class>tw.com.javaworld.CH14.ConnectDatabase/servlet-class>
/servlet>
servlet-mapping>
servlet-name>ConnectDatabase/servlet-name>
url-pattern>/CH14/ConnectDatabase/url-pattern>
/servlet-mapping>
.............
至于驱动程序的配置:请参考:
[url=http://blog.chinaunix.net/u/21684/showart_193282.html]一路风尘[/url]
下面测试:
其中数据库sample_db 中的表employee资料如下:
+-------------+------------------+------+-----+---------+----------------+| Field
| Type | Null | Key | Default | Extra |+-------------+------------------+------+-----+---------+----------------+| employee_id
| int(10) unsigned | NO | PRI | NULL | auto_increment || last_name
| varchar(15) | NO | | | || first_name
| varchar(15) | NO | | | || birth | date | NO |
| | || sex | enum('M','F') | YES | |
M | || email | varchar(40) | YES | |
NULL | |+-------------+------------------+------+-----+---------+----------------+
package tw.com.javaworld.CH14;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
/**
* Title: 建立Servlet小应用程序与student.gdb数据库的连接
* Description: Java语言演示程序:建立Servlet小应用程序与student.gdb数据库的连接,用于北京师范大学计算机系Java课程教学示范。
* Copyright: Copyright (c) 2002
* Company: 北京师范大学计算机系
* @author 孙一林
* @version 1.0
*/
public class ConnectDatabase extends HttpServlet{
/** 建立Servlet与数据库的连接并通过SQL命令获取数据库数据*/
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
PrintWriter out;
String title = "Servlet建立与数据库的连接";
response.setContentType("text/html;charset=GB2312");
out = response.getWriter();
out.println("");
out.println(title);
out.println("");
out.println("" + title + "");
out.println("这是从Servlet输出的数据库数据");
String driverName = "com.mysql.jdbc.Driver";
Driver d;
Connection con;
Statement stmt;
ResultSet results;
try {
d = (Driver)Class.forName(driverName).newInstance();
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sample_db","root","password");
stmt = con.createStatement();
String sqlstr = "select * from employee";
results = stmt.executeQuery(sqlstr); // 获取数据库结果集
displayResult(results,out); // 输出为HTML显示格式
stmt.close();
con.close();
}
catch (Exception e) {
out.println("错误:" + e.toString());
}
out.println("");
out.close();
}
/** 在Web页面中显示数据库数据*/
public void displayResult(ResultSet results,PrintWriter out){
StringBuffer buf = new StringBuffer();
String temp;
try {
ResultSetMetaData rsmd = results.getMetaData();
int numCols = rsmd.getColumnCount();
int i, rowcount = 0;
for (i=1; i = numCols; i++){
if (i > 1) buf.append(",");
buf.append(rsmd.getColumnLabel(i));
}
buf.append("/n");
while (results.next() && rowcount 100){
for (i=1; i = numCols; i++) {
if (i > 1) buf.append(",");
buf.append((results.getString(i)));
}
buf.append("
");
rowcount++;
}
out.println("
");
out.println(buf.toString());
results.close();
} catch (Exception e) {
out.println("错误:" + e.toString());
return;
}
}
}
编译好.java 文件之后,启动Tomcat打开浏览器:http://localhost:8080/JSPBook/CH14/ConnectDatabase (CH14:package)
如果出现以下结果:那就ok
Servlet建立与数据库的连接
这是从Servlet输出的数据库数据
employee_id,last_name,first_name,birth,sex,email
10001,Lin,Spence,1985-07-23,M,llfeng@163.com10002,Feby,Bufei,1999-09-22,F,feibibufei@163.com10003,Deng,TianXiong,1978-12-11,F,txDeng@163.com10004,Naimei,Lin,1990-03-03,M,xiaoxiao@must.com10005,Wang,Tom,1978-12-11,F,aaa@asdf.com10006,Zheng,Caimu,1978-12-11,F,ilvoeyou@love.com10007,Peifei,Wang,2003-02-03,M,pfwang@must.edu.mo10008,Zhu,Guowei,1978-12-11,F,aaa@asdf.com10009,Hua,Jiahui,1978-12-11,M,ilvoeyou@love.com10010,Li,Zicheng,1978-12-11,F,aaa@asdf.com
Class.forName("com.mysql.jdbc.Driver").newInstance();
用jdbc url 定义驱动程序和数据源之前的连接,并建立一个连接对象
Connection con1=
DriverManager.getConnection("jdbc:mysql://localhost:3306/sample_db?
user=root&password=password&useUnicode=true&characterEncoding=GB2312");
最后是建立一个Statement Object利用它来执行sql语句。
servlet 和应用程序不同之处在于它还需要通过像tomcat服务起来加载才能在jsp页面与 servlet建立通信,而且执行servlet本身也需要在当前目录下的WEB-INF下配置web.xml.所以在执行servlet之前需要正确的配置conf/server.xml文件.
假如你的当前目录在webapps/JSPBook.那么在server.xml中加入以下文字:
...........
Context path="/JSPBook" docBase="JSPBook" debug="0" crosscontext="true" reloadable="true">
Resource name="jdbc/sample_db" auth="Container"
type="javax.sql.DataSource"/>
ResourceParams name="jdbc/sample_db">
parameter>
name>factory/name>
value>org.apache.commons.dbcp.BasicDataSourceFactory/value>
/parameter>
parameter>
name>username/name>
value>root/value>
/parameter>
parameter>
name>password/name>
value>browser/value>
/parameter>
parameter>
name>driverClassName/name>
value>com.mysql.jdbc.Driver/value>
/parameter>
parameter>
name>url/name>
value>jdbc:mysql://localhost:3306/sample_db?useUnicode
=true&characterEncoding=UTF-8/value>
/parameter>
parameter>
name>maxActive/name>
value>20/value>
/parameter>
parameter>
name>maxIdle/name>
value>5/value>
/parameter>
parameter>
name>maxWait/name>
value>10000/value>
/parameter>
/ResourceParams>
/Context>
......
注意:数据库中的用户名和密码自己修改成自己设置的.
紧接着就是配置JSPBook/WEB-INF/web.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> Welcome to Tomcat Welcome to Tomcat
..........
servlet>
servlet-name>ConnectDatabase/servlet-name>
servlet-class>tw.com.javaworld.CH14.ConnectDatabase/servlet-class>
/servlet>
servlet-mapping>
servlet-name>ConnectDatabase/servlet-name>
url-pattern>/CH14/ConnectDatabase/url-pattern>
/servlet-mapping>
.............
至于驱动程序的配置:请参考:
[url=http://blog.chinaunix.net/u/21684/showart_193282.html]一路风尘[/url]
下面测试:
其中数据库sample_db 中的表employee资料如下:
+-------------+------------------+------+-----+---------+----------------+| Field
| Type | Null | Key | Default | Extra |+-------------+------------------+------+-----+---------+----------------+| employee_id
| int(10) unsigned | NO | PRI | NULL | auto_increment || last_name
| varchar(15) | NO | | | || first_name
| varchar(15) | NO | | | || birth | date | NO |
| | || sex | enum('M','F') | YES | |
M | || email | varchar(40) | YES | |
NULL | |+-------------+------------------+------+-----+---------+----------------+
package tw.com.javaworld.CH14;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
/**
* Title: 建立Servlet小应用程序与student.gdb数据库的连接
* Description: Java语言演示程序:建立Servlet小应用程序与student.gdb数据库的连接,用于北京师范大学计算机系Java课程教学示范。
* Copyright: Copyright (c) 2002
* Company: 北京师范大学计算机系
* @author 孙一林
* @version 1.0
*/
public class ConnectDatabase extends HttpServlet{
/** 建立Servlet与数据库的连接并通过SQL命令获取数据库数据*/
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
PrintWriter out;
String title = "Servlet建立与数据库的连接";
response.setContentType("text/html;charset=GB2312");
out = response.getWriter();
out.println("");
out.println(title);
out.println("");
out.println("" + title + "");
out.println("这是从Servlet输出的数据库数据");
String driverName = "com.mysql.jdbc.Driver";
Driver d;
Connection con;
Statement stmt;
ResultSet results;
try {
d = (Driver)Class.forName(driverName).newInstance();
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sample_db","root","password");
stmt = con.createStatement();
String sqlstr = "select * from employee";
results = stmt.executeQuery(sqlstr); // 获取数据库结果集
displayResult(results,out); // 输出为HTML显示格式
stmt.close();
con.close();
}
catch (Exception e) {
out.println("错误:" + e.toString());
}
out.println("");
out.close();
}
/** 在Web页面中显示数据库数据*/
public void displayResult(ResultSet results,PrintWriter out){
StringBuffer buf = new StringBuffer();
String temp;
try {
ResultSetMetaData rsmd = results.getMetaData();
int numCols = rsmd.getColumnCount();
int i, rowcount = 0;
for (i=1; i = numCols; i++){
if (i > 1) buf.append(",");
buf.append(rsmd.getColumnLabel(i));
}
buf.append("/n");
while (results.next() && rowcount 100){
for (i=1; i = numCols; i++) {
if (i > 1) buf.append(",");
buf.append((results.getString(i)));
}
buf.append("
");
rowcount++;
}
out.println("
");
out.println(buf.toString());
results.close();
} catch (Exception e) {
out.println("错误:" + e.toString());
return;
}
}
}
编译好.java 文件之后,启动Tomcat打开浏览器:http://localhost:8080/JSPBook/CH14/ConnectDatabase (CH14:package)
如果出现以下结果:那就ok
Servlet建立与数据库的连接
这是从Servlet输出的数据库数据
employee_id,last_name,first_name,birth,sex,email
10001,Lin,Spence,1985-07-23,M,llfeng@163.com10002,Feby,Bufei,1999-09-22,F,feibibufei@163.com10003,Deng,TianXiong,1978-12-11,F,txDeng@163.com10004,Naimei,Lin,1990-03-03,M,xiaoxiao@must.com10005,Wang,Tom,1978-12-11,F,aaa@asdf.com10006,Zheng,Caimu,1978-12-11,F,ilvoeyou@love.com10007,Peifei,Wang,2003-02-03,M,pfwang@must.edu.mo10008,Zhu,Guowei,1978-12-11,F,aaa@asdf.com10009,Hua,Jiahui,1978-12-11,M,ilvoeyou@love.com10010,Li,Zicheng,1978-12-11,F,aaa@asdf.com
- java servlet 连接mysql 数据库
- java servlet 连接mysql数据库乱码
- [java学习12]servlet连接mysql数据库
- java servlet 连接数据库
- Servlet如何连接MySQL数据库
- servlet连接mysql数据库详解
- java连接MySql数据库!
- JAVA 连接 MySQL 数据库
- java连接mysql数据库
- java连接mysql数据库
- java连接mysql数据库
- Java连接MySQL数据库
- Java连接mysql数据库
- java连接MySQL数据库
- java连接mysql数据库
- Java连接Mysql数据库
- java连接mysql数据库
- java连接mysql数据库
- struts2基础描述
- 开发您的第一个 Eclipse RCP 应用程序(1/12)
- 递归加载树形列表的过程(函数)
- (转载)从番茄花园事件,到国产知识产权说开去
- 开发您的第一个 Eclipse RCP 应用程序(2/12)
- java servlet 连接mysql 数据库
- Tomcat5.5数据源的配置(JNDI)
- Server的Transfer和Response的Redirect
- 开发您的第一个 Eclipse RCP 应用程序(3/12)
- 开发您的第一个 Eclipse RCP 应用程序(4/12)
- 开发您的第一个 Eclipse RCP 应用程序(5/12)
- 开发您的第一个 Eclipse RCP 应用程序(6/12)
- 《手把手教你把Vim改装成一个IDE编程环境 Ver: 0.7》下载
- linux上的php环境默认不支持bcdiv函数解决方法