java连接数据库——javabean实例(jsp实现)

news/2024/5/18 21:42:53 标签: javabean, JDBC, 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 */;

 


http://www.niftyadmin.cn/n/1472549.html

相关文章

正则表达+验证 [记录]

时间 日期 日期时间//日期 2014-01-01var reg /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/;//时间 12:00:00var reg /^(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/;//日期时间 2014-01-01 12:00:00var reg /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|…

前端框架jQ使用之入门知识

jQuery——前端框架&#xff08;jquery.js、node.js、argus.js&#xff09; 它是一个快速的js库&#xff0c;对js进行了封装&#xff0c;用来更方便的处理HTML、event、dom以及动画效果。 一、首先需要知道两个概念&#xff1a;jQ对象&DOM对象 第一个——jQ对象&#xf…

Java之优先队列

PriorityQueue属于Java Collections Framework。PriorityQueue基于优先级堆&#xff0c;它是Queue接口的实现。当我们需要一个Queue实现时&#xff0c;可以使用这种数据结构&#xff0c; 并且我们需要根据每个元素的优先级&#xff0c;以特定的排序顺序来维护该集合的元素。它在…

前端框架jQ使用之下拉框文本内容的转移

在掌握了jQ的基础知识之后&#xff0c;我们来看看jQ如何实现下拉框文本内容的转移&#xff1f; 其实&#xff0c;在之前&#xff0c;博主我也写过一篇使用js实现下拉框文本内容的转移的文章&#xff0c;需要比较强的逻辑&#xff0c;jQ就简化了代码书写&#xff0c;便于理解。…

Day21-自定义分页

一. 先简单来个示例 1.1 在urls.py中增加1条&#xff0c;user_list from django.conf.urls import url,include from django.contrib import admin from app01 import viewsurlpatterns [url(r^tpl_1/, views.tpl_1),url(r^tpl_2/, views.tpl_2),url(r^tpl_3/, views.tpl_3),u…

前端框架jQ使用之图片浮动和日历显示

在掌握了jQ的基础知识之后&#xff0c;我们来看看jQ如何实现图片浮动和日历显示&#xff1f; 其实&#xff0c;图片浮动和日历显示并没有直接关系&#xff0c;我只是把他们写到了一起&#xff0c; 写在前面&#xff1a;一定要记得导入js库&#xff0c;建议不要最新的。 直接…

前端框架jQ使用之鼠标点击切换列表

在掌握了jQ的基础知识之后&#xff0c;我们来看看jQ如何实现鼠标点击切换列表&#xff1f; 这个效果使用js也可以实现&#xff0c;当然使用其他jQ代码也能实现&#xff0c;但是博主写的这个代码便于维护&#xff0c;只有你写过项目&#xff0c;一定会发现便于维护的代码和普通…

+4 高速缓存

高速缓冲存储器&#xff08;Cache&#xff09;其原始意义是指存取速度比一般随机存取记忆体&#xff08;RAM&#xff09;来得快的一种RAM&#xff0c;一般而言它不像系统主记忆体那样使用DRAM技术&#xff0c;而使用昂贵但较快速的SRAM技术&#xff0c;也有快取记忆体的名称。高…