这节我在前面三节的基础上进行整合,将讲解一个实例——图书管理数据库操作
首先:来看看设计的流程——
- 界面设计
- 注册登录界面
- 处理界面(出错界面、欢迎界面、成功界面、跳转界面)
- MySQL数据库操作——建立数据库和数据表
- 对接后台——数据库连接和操作
- 定义一个JavaBean(也就是一个实体类)
- 依次写好JSP(index.jsp add.jsp del.jsp edit.jsp error.jsp update.jsp)
注意事项:
1.在数据库中和JSP文件中要统一字符集格式utf-8/gb2312只能选一个
2.需要准备MySQL驱动的jar包
接下来是具体的代码:
index.jsp
<%@ page language="java" contentType="text/html; charset=gb2312"
pageEncoding="UTF-8" import="java.sql.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>图书管理界面</title>
</head>
<body>
<a href=add.jsp>增加图书信息</a><p>
<table border="1" >
<tr><td>书名<td>作者<td>价格<td>管理
<jsp:useBean id="db" class="book.bookInfo" scope="page"/><!-- 导入自己的类(Javabean) -->
<%
String s="select * from book_info";
ResultSet rs=db.executeQuery(s);
while(rs.next())
{
int id=rs.getInt(1);
out.println("<tr><td>"+rs.getString(2)+"</td><td>"+rs.getString(3)+"</td><td>"+rs.getString(4)+"</td><td><a href='del.jsp?id="+id+"'>删除</a> <a href='edit.jsp?id="+id+"'>修改</a></td></tr>");
}
rs.close();
db.close();
%>
</table>
</body>
</html>
add.jsp
<%@ page language="java" contentType="text/html; charset=gb2312"
pageEncoding="UTF-8" import="java.sql.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>增加图书</title>
</head>
<body>
<form action="add.jsp" method="post">
<table >
<CAPTION>添加图书信息</CAPTION>
<tr>
<th width="30%">书名:</th>
<td width="70%"><input name="bookname" type="text"></td>
</tr>
<tr>
<th>作者:</th>
<td><input name="author" type="text"></td>
</tr>
<tr>
<th>价格:</th>
<td><input name="price" type="text">元</td>
</tr>
<tr>
<th colspan="2">
<input type="submit" name="submit" value="添加">
<input type="reset" value="重置">
</th>
</tr>
</table>
</form>
<jsp:useBean id="db" class="book.bookInfo" scope="page"/>
<%
request.setCharacterEncoding("gb2312");
String submit=request.getParameter("submit");
if(submit!=null&&!submit.equals(""))
{
String bookname=request.getParameter("bookname");
String author=request.getParameter("author");
String price=request.getParameter("price");
String sql="insert into book_info(bookname,author,price) values('"+bookname+"','"+author+"',"+price+")";
int i=db.executeUpdate(sql);
if(i!=-1)
{
out.println("<script language='javaScript'> alert('添加成功,点击确定跳转到主页!');</script>");
response.setHeader("refresh","1;url=index.jsp");
}
else{
out.println("<script language='javaScript'> alert('添加失败,点击确定返回添加页面!');</script>");
response.setHeader("refresh","1;url=add.jsp");
}
db.close();
}
%>
</body>
</html>
del.jsp
<%@ page language="java" contentType="text/html; charset=gb2312"
pageEncoding="UTF-8" import="java.sql.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>删除图书</title>
</head>
<body>
<jsp:useBean id="db" class="book.bookInfo" scope="page"/>
<%
request.setCharacterEncoding("gb2312");
String id=request.getParameter("id");
int i=db.executeUpdate("delete from book_info where id="+id);
if(i==1)
{out.println("<script language='javaScript'> alert('删除成功,点击确定后自动跳到主页!');</script>");
response.setHeader("refresh","1;url=index.jsp");
}
else{
out.println("<script language='javaScript'> alert('删除失败,点击确定后自动跳到主页!');</script>");
response.setHeader("refresh","1;url=del.jsp");
}
db.close();
%>
</body>
</html>
edit.jsp
<%@ page language="java" contentType="text/html; charset=gb2312"
pageEncoding="UTF-8" import="java.sql.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>修改图书</title>
</head>
<body>
<jsp:useBean id="db" class="book.bookInfo" scope="page"/>
<%
request.setCharacterEncoding("gb2312");
String id=request.getParameter("id");
ResultSet rs=db.executeQuery("select * from book_info where id="+id);
rs.next();
%>
<form action="update.jsp" method="post">
<table border="1" width="50%" >
<CAPTION>修改图书信息</CAPTION>
<tr>
<th width="30%">书名:</th>
<td width="70%">
<input name="bookname" type="text" value="<%=rs.getString(2)%>"></td>
</tr>
<tr>
<th>作者:</th>
<td><input name="author" type="text" value="<%=rs.getString(3)%>"></td>
</tr>
<tr>
<th>价格:</th>
<td><input name="price" type="text" value="<%=rs.getString(4)%>">元</td>
</tr>
<tr>
<th colspan="2">
<input type="hidden" name="id" value="<%=id%>">
<input type="submit" value="修改">
<input type="reset" value="重置">
</th>
</tr>
</table>
</form>
<%
db.close();
%>
</body>
</html>
update.jsp
<%@ page language="java" contentType="text/html; charset=gb2312" import="java.sql.*" errorPage="error.jsp"%>
<html>
<head>
<title>图书修改完成</title>
</head>
<body>
<jsp:useBean id="db" class="book.bookInfo" scope="page"/>
<%
request.setCharacterEncoding("gb2312");
String bookname=request.getParameter("bookname");
String author=request.getParameter("author");
String price=request.getParameter("price");
String id=request.getParameter("id");
String sql="update book_info set bookname='"+bookname+"',author='"+author+"',price="+price+" where id="+id;
int i=db.executeUpdate(sql);
if(i==1)
{out.println("<script language='javaScript'> alert('修改成功,点击确定后自动跳到主页。');</script>");
response.setHeader("refresh","1;url=index.jsp");
return;
}
db.close();
%>
</body>
</html>
这是我多加的回收站功能——recycle.jsp
<%@ page language="java" import="java.sql.*" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>回收站</title>
</head>
<body>
<table border="1" >
<tr><td>书名<td>作者<td>价格<td>恢复
<jsp:useBean id="db" class="book.bookInfo" scope="page"/><!-- 导入自己的类(Javabean) -->
<%!
int i = 0;
int rec_id = 0;
%>
<%
request.setCharacterEncoding("gb2312");
// 获取已删除的书籍信息的id
String id=request.getParameter("id");
i=db.executeUpdate("delete from book_info where id="+id);
ResultSet rec_info = db.executeQuery("select * from recycleinfo");
if(i==1)
{
// 向回收信息表中加入已删除的书籍信息的id
int de_sql = db.executeUpdate("insert into recycleinfo(id) values(i)");
// 遍历回收信息表中已经存在的删除的书籍信息的id
ResultSet de_rs = db.executeQuery("select * from recycleinfo where id");
while(de_rs.next()){
rec_id = rec_info.getInt(1);
out.println("<tr><td>"+de_rs.getString(2)+"</td><td>"+de_rs.getString(3)+"</td><td>"+de_rs.getString(4)+"</td><td><a href='del.jsp?id="+rec_id+"'>恢复</a></td></tr>");
}
}else{
out.println("<script language='javaScript'> alert('数据库内部错误,信息回收失败!');</script>");
};
db.close();
%>
</table>
</body>
</html>
error.jsp
<%@ page language="java" isErrorPage="true" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>错误页面</title>
</head>
<body>
错误信息为:
<%=exception.getMessage()%><br>
<%=exception.toString()%>
</body>
</html>
连接数据的java类——bookInfo.java
package book;
import java.sql.*;
public class bookInfo {
private String driverStr="com.mysql.jdbc.Driver";
private String connStr="jdbc:mysql://localhost:3306/bookinfo?characterEncoding=gb2312";//数据库名
private String dbusername="root";
private String dbpassword="123456";//密码和数据库一致
private Connection conn=null;
private Statement stmt=null;
public bookInfo()
{
try{
Class.forName(driverStr);
conn = DriverManager.getConnection(connStr,dbusername, dbpassword);
stmt = conn.createStatement();
}
catch(Exception ex){System.out.println("无法同数据库建立连接!");}
}
public int executeUpdate(String s)
{
int result=0;
try{result=stmt.executeUpdate(s);}
catch(Exception ex){System.out.println("执行更新错误!");}
return result;
}
public ResultSet executeQuery(String s)
{
ResultSet rs=null;
try{rs=stmt.executeQuery(s);}
catch(Exception ex){System.out.println("执行查询错误!");}
return rs;
}
public void close()
{
try{
stmt.close();
conn.close();
}
catch(Exception e){}
}
}
数据库建表和插入数据——SQL
# MySQL-Front 3.2 (Build 7.31)
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES 'gbk' */;
# Host: 127.0.0.1 Database: book
# ------------------------------------------------------
# Server version 5.0.15-nt
DROP DATABASE IF EXISTS `book`;
CREATE DATABASE `book` /*!40100 DEFAULT CHARACTER SET gbk */;
USE `book`;
#
# Table structure for table bookinfo
#
CREATE TABLE `bookinfo` (
`id` int(10) unsigned NOT NULL auto_increment,
`bookname` varchar(45) NOT NULL default '',
`author` varchar(45) NOT NULL default '',
`price` float NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
#
# Dumping data for table bookinfo
#
/*!40101 SET NAMES gb2312 */;
INSERT INTO `bookinfo` VALUES (1,' Web开发技术教程','张娜、陈宁等',35);
INSERT INTO `bookinfo` VALUES (2,' Web基础教程','姜仲等',29);
INSERT INTO `bookinfo` VALUES (3,'数据库应用原理','张冬青',28);
INSERT INTO `bookinfo` VALUES (4,' Java核心技术技术',' Gray Cornell',50);
INSERT INTO `bookinfo` VALUES (5,'JSP2.0应用教程','陈旭东',29);
/*!40101 SET NAMES gbk */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;