JSP 教程
1. JSP 教程 2. JSP 简介 3. JSP 开发环境搭建 4. JSP 结构 5. JSP 生命周期 6. JSP 语法 7. JSP 指令 8. JSP 动作元素 9. JSP 隐式对象 10. JSP 客户端请求 11. JSP 服务器响应 12. JSP HTTP 状态码 13. JSP 表单处理 14. JSP 过滤器 15. JSP Cookie 处理 16. JSP Session 17. JSP 文件上传 18. JSP 日期处理 19. JSP 页面重定向 20. JSP 点击量统计 21. JSP 自动刷新 22. JSP 发送邮件 23. JSP 标准标签库(JSTL) 24. JSP 连接数据库 25. JSP XML 数据处理 26. JSP JavaBean 27. JSP 自定义标签 28. JSP 表达式语言 29. JSP 异常处理 30. JSP 调试 31. JSP 国际化

JSP 连接数据库

JSP 连接数据库

本教程假定您已经了解了 JDBC 应用程序的工作方式。在您开始学习 JSP 数据库访问之前,请访问 Java MySQL 连接 来设置相关驱动及配置。

注意:

你可以下载本站提供的 jar 包:

下载后把 mysql-connector-java-<对应版本>-bin.jar 拷贝到 tomcat 下 lib 目录。

MySQL 8.0 以上版本的数据库连接有所不同:

  • 1、com.mysql.jdbc.Driver 更换为 com.mysql.cj.jdbc.Driver

  • MySQL 8.0 以上版本不需要建立 SSL 连接的,需要显示关闭。

  • 最后还需要设置 CST。

加载驱动与连接数据库方式如下:


<sql:setDataSource var="snapshot" driver="com.mysql.cj.jdbc.Driver"

     url="jdbc:mysql://localhost:3306/?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8

     user="root"  password="12345"/>

从基本概念下手,让我们来创建一个简单的表,并在表中创建几条记录。


创建测试数据

接下来我们在 MySQL 中创建 数据库,并创建 websites 数据表,表结构如下:


CREATE TABLE `websites` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `name` char(20) NOT NULL DEFAULT '' COMMENT '站点名称',

  `url` varchar(255) NOT NULL DEFAULT '',

  `alexa` int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名',

  `country` char(10) NOT NULL DEFAULT '' COMMENT '国家',

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

插入一些数据:


INSERT INTO `websites` VALUES ('1', 'Google', 'https://www.google.cm/', '1', 'USA'), ('2', '淘宝', 'https://www.taobao.com/', '13', 'CN'), ('3', '', 'http://www.55mianshi.com', '5892', ''), ('4', '微博', 'http://weibo.com/', '20', 'CN'), ('5', 'Facebook', 'https://www.facebook.com/', '3', 'USA');

数据表显示如下:




SELECT操作

接下来的这个例子告诉我们如何使用JSTL SQL标签来运行SQL SELECT语句:


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ page import="java.io.*,java.util.*,java.sql.*"%>

<%@ page import="javax.servlet.http.*,javax.servlet.*" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

 

<html>

<head>

<title>SELECT 操作</title>

</head>

<body>

<!--

JDBC 驱动名及数据库 URL 

数据库的用户名与密码,需要根据自己的设置

useUnicode=true&characterEncoding=utf-8 防止中文乱码

 -->

<sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver"

     url="jdbc:mysql://localhost:3306/?useUnicode=true&characterEncoding=utf-8"

     user="root"  password="123456"/>

 

<sql:query dataSource="${snapshot}" var="result">

SELECT * from websites;

</sql:query>

<h1>JSP 数据库实例 - </h1>

<table border="1" width="100%">

<tr>

   <th>ID</th>

   <th>站点名</th>

   <th>站点地址</th>

</tr>

<c:forEach var="row" items="${result.rows}">

<tr>

   <td><c:out value="${row.id}"/></td>

   <td><c:out value="${row.name}"/></td>

   <td><c:out value="${row.url}"/></td>

</tr>

</c:forEach>

</table>

 

</body>

</html>

访问这个JSP例子,运行结果如下:


INSERT操作

这个例子告诉我们如何使用JSTL SQL标签来运行SQL INSERT语句:


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ page import="java.io.*,java.util.*,java.sql.*"%>

<%@ page import="javax.servlet.http.*,javax.servlet.*" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

 

<html>

<head>

<title>SELECT 操作</title>

</head>

<body>

<!--

JDBC 驱动名及数据库 URL 

数据库的用户名与密码,需要根据自己的设置

useUnicode=true&characterEncoding=utf-8 防止中文乱码

 -->

<sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver"

     url="jdbc:mysql://localhost:3306/?useUnicode=true&characterEncoding=utf-8"

     user="root"  password="123456"/>

<!--

插入数据

 -->

<sql:update dataSource="${snapshot}" var="result">

INSERT INTO websites (name,url,alexa,country) VALUES ('移动站', 'http://m..com', 5093, 'CN');

</sql:update>

<sql:query dataSource="${snapshot}" var="result">

SELECT * from websites;

</sql:query>

<h1>JSP 数据库实例 - </h1>

<table border="1" width="100%">

<tr>

   <th>ID</th>

   <th>站点名</th>

   <th>站点地址</th>

</tr>

<c:forEach var="row" items="${result.rows}">

<tr>

   <td><c:out value="${row.id}"/></td>

   <td><c:out value="${row.name}"/></td>

   <td><c:out value="${row.url}"/></td>

</tr>

</c:forEach>

</table>

 

</body>

</html>

访问这个JSP例子,运行结果如下:


DELETE操作

这个例子告诉我们如何使用JSTL SQL标签来运行SQL DELETE语句:


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ page import="java.io.*,java.util.*,java.sql.*"%>

<%@ page import="javax.servlet.http.*,javax.servlet.*" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

 

<html>

<head>

<title>SELECT 操作</title>

</head>

<body>

<!--

JDBC 驱动名及数据库 URL 

数据库的用户名与密码,需要根据自己的设置

useUnicode=true&characterEncoding=utf-8 防止中文乱码

 -->

<sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver"

     url="jdbc:mysql://localhost:3306/?useUnicode=true&characterEncoding=utf-8"

     user="root"  password="123456"/>



<!--

删除 ID 为 11 的数据

 -->

<sql:update dataSource="${snapshot}" var="count">

  DELETE FROM websites WHERE Id = ?

  <sql:param value="${11}" />

</sql:update>



<sql:query dataSource="${snapshot}" var="result">

SELECT * from websites;

</sql:query>

<h1>JSP 数据库实例 - </h1>

<table border="1" width="100%">

<tr>

   <th>ID</th>

   <th>站点名</th>

   <th>站点地址</th>

</tr>

<c:forEach var="row" items="${result.rows}">

<tr>

   <td><c:out value="${row.id}"/></td>

   <td><c:out value="${row.name}"/></td>

   <td><c:out value="${row.url}"/></td>

</tr>

</c:forEach>

</table>

 

</body>

</html>

访问这个JSP例子,运行结果如下:


UPDATE操作

这个例子告诉我们如何使用JSTL SQL标签来运行SQL UPDATE语句:


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ page import="java.io.*,java.util.*,java.sql.*"%>

<%@ page import="javax.servlet.http.*,javax.servlet.*" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

 

<html>

<head>

<title>SELECT 操作</title>

</head>

<body>

<!--

JDBC 驱动名及数据库 URL 

数据库的用户名与密码,需要根据自己的设置

useUnicode=true&characterEncoding=utf-8 防止中文乱码

 -->

<sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver"

     url="jdbc:mysql://localhost:3306/?useUnicode=true&characterEncoding=utf-8"

     user="root"  password="123456"/>



<!--

修改 ID 为 3 的名字:改为 

 -->

<c:set var="SiteId" value="3"/>

 

<sql:update dataSource="${snapshot}" var="count">

  UPDATE websites SET name = '' WHERE Id = ?

  <sql:param value="${SiteId}" />

</sql:update>



<sql:query dataSource="${snapshot}" var="result">

SELECT * from websites;

</sql:query>

<h1>JSP 数据库实例 - </h1>

<table border="1" width="100%">

<tr>

   <th>ID</th>

   <th>站点名</th>

   <th>站点地址</th>

</tr>

<c:forEach var="row" items="${result.rows}">

<tr>

   <td><c:out value="${row.id}"/></td>

   <td><c:out value="${row.name}"/></td>

   <td><c:out value="${row.url}"/></td>

</tr>

</c:forEach>

</table>

 

</body>

</html>

访问这个JSP例子,运行结果如下: