赞
踩
本系列文章是作者暑假给学生进行实训分享的笔记,主要介绍MyEclipse环境下JSP网站开发,包括JAVA基础、网页布局、数据库基础、Servlet、前端后台数据库交互、DAO等知识。
前一篇文章讲解了MyEclipse环境下创建JSP注册表页面,并通过Servlet获取所提交的数据。这一篇文章将讲解MySQL数据库基本操作,并分享Servlet链接数据库的方法。基础性文章,希望对读者有所帮助 ,尤其是我的学生。
参考前文:
Java+MyEclipse+Tomcat (一)配置过程及jsp网站开发入门
Java+MyEclipse+Tomcat (二)配置Servlet及简单实现表单提交
Java+MyEclipse+Tomcat (三)配置MySQL及查询数据显示在JSP网页中
Java+MyEclipse+Tomcat (四)Servlet提交表单和数据库操作
Java+MyEclipse+Tomcat (五)DAO和Java Bean实现数据库和界面分开操作
Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作
前文:
[JSP暑假实训] 一.MyEclipse安装及JAVA基础知识
[JSP暑假实训] 二.JSP网站创建及Servlet实现注册表单提交、计算器运算
首先下载mysql-5.0.96-winx64,安装过程如下图所示。
1.安装MySQL 5.0
2.选择手动配置、服务类型、通用多功能型和安装路径
3.设置数据库访问量连接数为15、端口为3306(代码中设置URL用到)、编码方式为utf-8
4.设置默认超级root用户的用户名和密码,最后安装成功
安装MySQL 5.0成功后,进行数据库的简单操作。
1.运行MySQL输入默认用户密码123456,并创建数据库hcp(火车票),使用数据库。
--创建数据库
create database hcp;
--使用数据库
use database hcp;
2.创建表info(详情表),包括序号、起始地、目的地、车次、出发时间、价格、备注。
CREATE TABLE `info` (
`id` int(11) NOT NULL auto_increment,
`start` varchar(40) default NULL,
`end` varchar(40) default NULL,
`name` varchar(40) default NULL,
`starttime` datetime default NULL,
`price` float default NULL,
`otuer` varchar(100) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
其中,id为自增整数,并且为主键,其他的包括varchar类型、时间类型、浮点型等。
3.显示表结构,使用语句desc info。
4.向信息表中插入数据并显示查询的数据。
INSERT INTO `info` VALUES ('1', 'guiyang', 'kunming', 'T61', '2019-06-29 12:00:00', '56', NULL);
INSERT INTO `info` VALUES ('2', 'guiyang', 'kaili', 'T88', '2019-06-29 12:00:00', '26', NULL);
INSERT INTO `info` VALUES ('3', '贵阳', '西安', 'T98', '2019-07-04 12:00:00', '126', NULL);
INSERT INTO `info` VALUES ('4', '贵阳', '武汉', 'T34', '2019-07-04 12:00:00', '86', NULL);
INSERT INTO `info` VALUES ('5', '贵定', '西安', 'T51', '2019-07-04 12:00:00', '134', NULL);
INSERT INTO `info` VALUES ('6', '昆明', '武汉', 'T21', '2019-06-29 12:00:00', '123', NULL);
通过 “select * from info;” 查询数据,得到如下图所示结果:
此时MySQL操作数据库基本讲解结束,你同样可以实现数据库的增删改查、事务、存储过程等操作,建议安装可视化的软件来替代黑框。
1.运行该软件,点击“连接”按钮新建一个连接。
2.在“新建连接”中输入自定义连接名,数据库用户名为“root”,密码“123456”。
3.选中数据库“hcp”,可以对表进行查看、设计、新建、删除、导入、导出等操作。
其中,设计表可以修改表的内容,或者添加新的字段,如下图所示:
双击表,可以查看数据如下所示:
4.选中数据库“hcp”,右键“转储SQL文件”,将整个数据库的内容导出sql文件。
导出的SQL文件内容如下:
/* Navicat MySQL Data Transfer Source Server : 20190704 Source Server Version : 50622 Source Host : localhost:3306 Source Database : hcp Target Server Type : MYSQL Target Server Version : 50622 File Encoding : 65001 Date: 2019-07-04 23:51:16 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `info` -- ---------------------------- DROP TABLE IF EXISTS `info`; CREATE TABLE `info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `start` varchar(40) DEFAULT NULL, `end` varchar(40) DEFAULT NULL, `name` varchar(40) DEFAULT NULL, `starttime` datetime DEFAULT NULL, `price` float DEFAULT NULL, `otuer` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of info -- ---------------------------- INSERT INTO `info` VALUES ('1', 'guiyang', 'kunming', 'T61', '2019-06-29 12:00:00', '56', null); INSERT INTO `info` VALUES ('2', 'guiyang', 'kaili', 'T88', '2019-06-29 12:00:00', '26', null); INSERT INTO `info` VALUES ('3', '贵阳', '西安', 'T98', '2019-07-04 12:00:00', '126', null); INSERT INTO `info` VALUES ('4', '贵阳', '武汉', 'T34', '2019-07-04 12:00:00', '86', null); INSERT INTO `info` VALUES ('5', '贵定', '西安', 'T51', '2019-07-04 12:00:00', '134', null); INSERT INTO `info` VALUES ('6', '昆明', '武汉', 'T21', '2019-06-29 12:00:00', '123', null);
为统一并简化Java语言操作各种数据库,Sun公司提供了JDBC框架,用于所有Java应用以统一的方式连接数据库。JDBC(Java DataBase Connectivity,Java数据库连接)通过使用数据库厂家提供的数据库JDBC驱动器类,可以连接到任何流程的数据库上。
1.加载JDBC驱动程序(MySQL驱动)
Class.forName("com.mysql.jdbc.Driver") ;
2.提供JDBC连接的URL
//驱动程序名
String driverName = "com.mysql.jdbc.Driver";
//数据库用户名
String userName = "root";
//密码
String userPasswd = "123456";
//数据库名
String dbName = "hcp";
//表名
String tableName = "info";
//联结字符串
String url = "jdbc:mysql://localhost:3306/" + dbName + "?user="
+ userName + "&password=" + userPasswd;
3.创建数据库的连接
Connection connection = DriverManager.getConnection(url);
4.创建一个Statement
要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3种类型:
5.执行SQL语句
Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate和execute
1).ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句,返回一个结果集(ResultSet)对象。
2).int executeUpdate(String sqlString):用于执行INSERT、UPDATE或DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等。
3).execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的语句。
6.处理结果
两种情况:执行更新返回的是本次操作影响到的记录数、执行查询返回的结果是一个ResultSet对象。
// 此方法比较高效 列是从左到右编号的,并且从列1开始
while(rs.next()){
String name = rs.getString("name") ;
String pass = rs.getString(1) ;
}
7.关闭JDBC对象
//释放连接方法 con ps rs public static void release(Connection con,Statement ps,ResultSet rs){ try{ if(rs!=null){ // 关闭记录集 rs.close(); } if(ps!=null){ // 关闭声明 ps.close(); } if(con!=null){ // 关闭连接对象 con.close(); } }catch (Exception e) { e.printStackTrace(); } }
下面介绍最终Servlet连接本地数据库并显示内容的实验,步骤如下:
1.新建“test0704_web”工程,其文件夹如下图所示。
2.修改“index.jsp”代码如下所示:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <div align="center"> <img src="imgs/bg.jpg" height="200" width="80%" /><br /> <hr width="80%" color="red" size="3" /> <h2>火车票查询</h2> <table border="2" width="80%"> <tr> <td>序号</td><td>起始地</td><td>目的地</td> <td>车次</td><td>时间</td><td>价格</td><td>备注</td> </tr> </table> </div> </body> </html>
此时运行结果如下图所示:
3.在JSP文件中增加JAVA连接数据库的代码,放置<% %>之间,需要注意while循环多次遍历显示 < tr > < td > 布局。
PS:增加 java.sql.* 扩展包
<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <div align="center"> <img src="imgs/bg.jpg" height="200" width="80%" /><br /> <hr width="80%" color="red" size="3" /> <h2>火车票查询</h2> <!-- 添加JAVA链接数据库的代码 --> <% //驱动的名称 String driverName = "com.mysql.jdbc.Driver"; //数据库用户名密码 String userName = "root"; String userPwd = "123456"; //数据库名字 String dbName = "hcp"; //表名 String tableName = "info"; //拼接字符串链接数据库 String url = "jdbc:mysql://localhost:3306/" + dbName + "?user=" + userName + "&password=" +userPwd; //链接数据库 Class.forName("com.mysql.jdbc.Driver").newInstance(); //SQL查询 ResultSet re; Connection con = DriverManager.getConnection(url); Statement statement = con.createStatement(); String sql = "select * from " + tableName; System.out.println(sql); re = statement.executeQuery(sql); %> <table border="2" width="80%"> <tr> <td>序号</td><td>起始地</td><td>目的地</td> <td>车次</td><td>时间</td><td>价格</td><td>备注</td> </tr> <% while (re.next()) { %> <tr> <td><% out.print(re.getString(1)); %></td> <td><% out.print(re.getString(2)); %></td> <td><% out.print(re.getString(3)); %></td> <td><% out.print(re.getString(4)); %></td> <td><% out.print(re.getString(5)); %></td> <td><% out.print(re.getString(6)); %></td> <td><% out.print(re.getString(7)); %></td> </tr> <% } //关闭连接 re.close(); statement.close(); con.close(); %> </table> </div> </body> </html>
4.运行结果如下所示。
最近连续十多天给学生们分享暑假实训,JSP网站开发,周末不间断。大周末深夜凌晨办公室备课,为了什么?回想三年来,挺感谢学生们的厚爱的,无以回报,只希望自己能好好分享知识,认真教好每一位学生,将心比心,也望自己博士学成归来,能继续教书育人,感恩家乡和女神。
(By:Eastmount 2019-07-04 深夜1点 http://blog.csdn.net/eastmount/)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。