java連接數據庫——javabean實例(jsp實現)

這節我在前面三節的基礎上進行整合,將講解一個實例——圖書管理數據庫操作

首先:來看看設計的流程——

  • 界面設計
    1. 註冊登錄界面
    2. 處理界面(出錯界面、歡迎界面、成功界面、跳轉界面)
  • 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>&nbsp;<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 */;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章