橘子味的心
标题:JSP+MySQL实例

在本章中,我们将讨论如何使用JSP访问数据库(这里以MySQL数据库为例)。并假设您对JDBC应用程序的工作方式有很好的了解。在开始通过JSP进行数据库访问之前,请确保您具有适当的JDBC环境设置以及安装好MySQL数据库。

学习本教程的前置知识 -

  • MySQL数据安装和简单操作
  • JDBC连接到MySQL

如果没有学习过MySQL,请参考:MySQL教程 。有关如何使用JDBC及其环境设置访问数据库的更多详细信息,可以参阅JDBC教程

这里,我们从基本概念开始,首先在MySQL的testdb数据库中创建一个表:employees,并在该表中创建一些记录,参考以下SQL语句:

  1. USE testdb;
  2. DROP TABLE IF EXISTS `employees`;
  3. CREATE TABLE `employees` (
  4. `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  5. `name` varchar(64) NOT NULL DEFAULT '',
  6. `age` int(3) unsigned NOT NULL DEFAULT '0',
  7. `education` varchar(32) DEFAULT '' COMMENT '学历',
  8. `address` varchar(254) DEFAULT NULL,
  9. `salary` float(8,2) unsigned DEFAULT NULL,
  10. PRIMARY KEY (`id`)
  11. ) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
  12.  
  13. -- ----------------------------
  14. -- Records of employees
  15. -- ----------------------------
  16. INSERT INTO `employees` VALUES ('1', '李小春', '23', '其它', '海口市人民大道1800号', '8900.00');
  17. INSERT INTO `employees` VALUES ('2', '张辉', '28', '本科', '广州天河区珠村市场', '15800.98');
  18. INSERT INTO `employees` VALUES ('3', '林贤弟', '29', '博士', '广州白云区龙塘村120号', '18990.99');
  19. INSERT INTO `employees` VALUES ('4', '王小简', '23', '本科', '海口人民大道1688号', '899.98');
  20. INSERT INTO `employees` VALUES ('5', '蔡世杰', '27', '专科', '上海市宝山区联杨路2211弄26号', '15800.00');
  21. INSERT INTO `employees` VALUES ('6', '张承龙', '30', '本科', '上海市虹口区虬江路522号', '23000.00');
  22. INSERT INTO `employees` VALUES ('7', '李林奕', '26', '本科', '上海市徐汇区漕宝路440号', '32600.00');
  23. INSERT INTO `employees` VALUES ('8', '刘皓轩', '28', '研究生', '上海松江九亭立同商务广场', '29000.00');
  24. INSERT INTO `employees` VALUES ('9', '周佳豪', '36', '博士', '深圳市宝安区沙井街道办107国道富达工业区B栋', '48000.00');
  25. INSERT INTO `employees` VALUES ('10', '陈聪', '23', '本科', '福田区文蔚大厦19层', '9800.00');
  26. SQL

打开Eclipse创建一个动态Web项目:JspMySQL, 其项目结构如下所示 -

注意:需要将MySQL的连接驱动程序:mysql-connector-java-5.1.40-bin.jar放入到{WebApp}/WEB-INFO/lib目录下。

1. 查询数据示例

以下示例显示了如何在JSP编程中使用JTSL执行SQL SELECT语句。

文件:select.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  6. <html>
  7. <head>
  8. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  9. <title>JSP+MySQL查询数据</title>
  10. </head>
  11. <body>
  12. <div style="margin: auto; width: 80%">
  13. <sql:setDataSource var="connection" driver="com.mysql.jdbc.Driver"
  14. url="jdbc:mysql://localhost/testdb?useSSL=false&characterEncoding=utf8"
  15. user="root" password="123456" />
  16.  
  17. <sql:query dataSource="${connection}" var="result">
  18. SELECT * from employees;
  19. </sql:query>
  20. <table border="1" width="100%">
  21. <tr>
  22. <th>编号</th>
  23. <th>名字</th>
  24. <th>薪水</th>
  25. <th>地址</th>
  26. </tr>
  27.  
  28. <c:forEach var="row" items="${result.rows}">
  29. <tr>
  30. <td><c:out value="${row.id}" /></td>
  31. <td><c:out value="${row.name}" /></td>
  32. <td><c:out value="${row.salary}" /></td>
  33. <td><c:out value="${row.address}" /></td>
  34. </tr>
  35. </c:forEach>
  36. </table>
  37. </div>
  38. </body>
  39. </html>
  40. HTML

在编写上面示例代码后,运行项目,打开浏览器访问URL: http://localhost:8080/JspMySQL/select.jsp , 应该会看到以下结果 -

2. 插入数据示例

以下示例显示了如何在JSP编程中使用JTSL执行SQL INSERT语句。

文件:insert.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  6. <html>
  7. <head>
  8. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  9. <title>JSP+MySQL插入数据</title>
  10. </head>
  11. <body>
  12. <div style="margin: auto; width: 80%">
  13. <sql:setDataSource var="connection" driver="com.mysql.jdbc.Driver"
  14. url="jdbc:mysql://localhost/testdb?useSSL=false&characterEncoding=utf8"
  15. user="root" password="123456" />
  16.  
  17. <sql:update dataSource="${connection}" var="count">
  18. INSERT INTO employees(`name`,`age`,`education`,`address`,`salary`)
  19. VALUES ('李路路', 24, '本科', '北京朝阳区', 13600);
  20. </sql:update>
  21.  
  22. <sql:query dataSource="${connection}" var="result">
  23. SELECT * from employees;
  24. </sql:query>
  25. <table border="1" width="100%">
  26. <tr>
  27. <th>编号</th>
  28. <th>名字</th>
  29. <th>薪水</th>
  30. <th>地址</th>
  31. </tr>
  32.  
  33. <c:forEach var="row" items="${result.rows}">
  34. <tr>
  35. <td><c:out value="${row.id}" /></td>
  36. <td><c:out value="${row.name}" /></td>
  37. <td><c:out value="${row.salary}" /></td>
  38. <td><c:out value="${row.address}" /></td>
  39. </tr>
  40. </c:forEach>
  41. </table>
  42. </div>
  43. </body>
  44. </html>
  45. HTML

在编写上面示例代码后,运行项目,打开浏览器访问URL: http://localhost:8080/JspMySQL/insert.jsp , 应该会看到以下结果 -

3. 删除数据示例

以下示例显示了如何在JSP编程中使用JTSL执行SQL DELETE语句。

文件:delete.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  6. <html>
  7. <head>
  8. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  9. <title>JSP+MySQL删除数据</title>
  10. </head>
  11. <body>
  12. <div style="margin: auto; width: 80%">
  13. <sql:setDataSource var="connection" driver="com.mysql.jdbc.Driver"
  14. url="jdbc:mysql://localhost/testdb?useSSL=false&characterEncoding=utf8"
  15. user="root" password="123456" />
  16.  
  17. <!-- 执行删除语句 -->
  18. <sql:update dataSource="${connection}" var="count">
  19. DELETE FROM employees WHERE id>5;
  20. </sql:update>
  21.  
  22. <sql:query dataSource="${connection}" var="result">
  23. SELECT * from employees;
  24. </sql:query>
  25. <table border="1" width="100%">
  26. <tr>
  27. <th>编号</th>
  28. <th>名字</th>
  29. <th>薪水</th>
  30. <th>地址</th>
  31. </tr>
  32.  
  33. <c:forEach var="row" items="${result.rows}">
  34. <tr>
  35. <td><c:out value="${row.id}" /></td>
  36. <td><c:out value="${row.name}" /></td>
  37. <td><c:out value="${row.salary}" /></td>
  38. <td><c:out value="${row.address}" /></td>
  39. </tr>
  40. </c:forEach>
  41. </table>
  42. </div>
  43. </body>
  44. </html>
  45. HTML

在编写上面示例代码后,运行项目,打开浏览器访问URL: http://localhost:8080/JspMySQL/delete.jsp , 应该会看到以下结果 -

4. 更新数据示例

以下示例显示了如何在JSP编程中使用JTSL执行SQL UPDATE语句。

文件:update.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  6. <html>
  7. <head>
  8. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  9. <title>JSP+MySQL更新数据</title>
  10. </head>
  11. <body>
  12. <div style="margin: auto; width: 80%">
  13. <sql:setDataSource var="connection" driver="com.mysql.jdbc.Driver"
  14. url="jdbc:mysql://localhost/testdb?useSSL=false&characterEncoding=utf8"
  15. user="root" password="123456" />
  16.  
  17. <!-- 执行更新语句 -->
  18. <c:set var = "empId" value = "1"/>
  19. <sql:update dataSource="${connection}" var="count">
  20. UPDATE employees SET name='李家诚' WHERE id=?
  21. <sql:param value = "${empId}" />
  22. </sql:update>
  23.  
  24. <c:set var = "empId" value = "2"/>
  25. <sql:update dataSource = "${connection}" var = "count">
  26. UPDATE employees SET salary = '19999.99' WHERE id=?
  27. <sql:param value = "${empId}" />
  28. </sql:update>
  29.  
  30. <sql:query dataSource="${connection}" var="result">
  31. SELECT * from employees;
  32. </sql:query>
  33. <table border="1" width="100%">
  34. <tr>
  35. <th>编号</th>
  36. <th>名字</th>
  37. <th>薪水</th>
  38. <th>地址</th>
  39. </tr>
  40.  
  41. <c:forEach var="row" items="${result.rows}">
  42. <tr>
  43. <td><c:out value="${row.id}" /></td>
  44. <td><c:out value="${row.name}" /></td>
  45. <td><c:out value="${row.salary}" /></td>
  46. <td><c:out value="${row.address}" /></td>
  47. </tr>
  48. </c:forEach>
  49. </table>
  50. </div>
  51. </body>
  52. </html>
  53. HTML

在编写上面示例代码后,运行项目,打开浏览器访问URL: http://localhost:8080/JspMySQL/update.jsp , 应该会看到以下结果 -