小言_互联网的博客

Java图书管理系统(初学者必看的小项目)

359人阅读  评论(0)

图书管理系统项目

第一天:准备把整个框架顺一遍,第一次独立写这个算是我人生中第一个java小项目,不清楚多少天能完成,我会坚持把自己的心得写在这里,主要是给自己看(不是学文的,文笔很差见谅,争取把注释写详细点),如果能帮助其他初学者更好了  一起加油!

点击打开链接

DriverManager.getConnection(String url,String user,String password)  我之前不太理解 特意查了下API

 

第一天搭建一个数据库实现基本功能  (因为前三步都需要连接数据库,定义一个数据库连接)

在类中创建一个构造函数初始化数据库的连接 

(PS: 为什么要创建数据库,为了初始化数据库,在后面会经常用的到)

1.创建数据库  createDatabase()   

2.创建表        createTable()

3.创建文件     addData(String filename)

 

我标记红色的请留意


  
  1. package javastudy;
  2. import java.io.BufferedReader;
  3. import java.io.FileReader;
  4. import java.io.IOException;
  5. import java.sql.DriverManager;
  6. import java.sql.PreparedStatement;
  7. import java.sql.SQLException;
  8. import com.mysql.jdbc.Connection;
  9. import com.mysql.jdbc.Statement;
  10. public class DBLib {
  11. //因为三个方法都需要连接数据库
  12. Connection conn; //定义一个变量
  13. Statement st;
  14. public DBLib() throws ClassNotFoundException//定义一个构造函数 初始化数据库连接
  15. , SQLException
  16. {
  17. Class.forName("com.mysql.jdbc.Driver"); //加载驱动程序
  18. //需要得到三个参数
  19. String url="jdbc:mysql://127.0.0.1:3306 ?useUnicode=true&characterEncoding=utf-8";//本机ip地址 本机端口 防止数据库乱码(若无乱码无须添加)
  20. String user="root"; //数据库的名字
  21. String pwd="521125"; //数据库密码
  22. conn=(Connection) DriverManager.getConnection(url, user, pwd); //初始化数据库 拿到三个参数
  23. st=(Statement) conn.createStatement(); //创建一个 Statement 对象来将 SQL 语句发送到数据库。
  24. }
  25. public void createDatabase() throws SQLException //创建一个数据库
  26. {
  27. String sql="drop database if exists Book;"; //判断数据库存在删除
  28. st.executeUpdate(sql);//执行给定 SQL 语句
  29. sql="create database Book;"; //创建表
  30. st.executeUpdate(sql);//执行
  31. }
  32. public void createTable() throws SQLException //创建一个表
  33. {
  34. String sql="use Book;";//使用表
  35. st.executeQuery(sql);//执行
  36. sql="create table BOOKS";
  37. sql+="(";
  38. sql+=" ID int(4) not null primary key auto_increment,";
  39. sql+=" Name varchar(100),";
  40. sql+=" Author varchar(50),";
  41. sql+=" Price decimal,";
  42. sql+="Publisher varchar(100)";
  43. sql+=") ENGINE=InnoDB DEFAULT CHARSET=utf8;";//我额外加的 因为我安装数据库 未设置UTF-8 出现乱码
  44. st.executeUpdate(sql);//执行语句
  45. }
  46. public void addData(String filename) throws SQLException//创建一个文档
  47. , IOException
  48. {
  49. String sql="use Book;";//使用表
  50. st.executeUpdate(sql);//执行
  51. FileReader fr=new FileReader(filename); //读取
  52. BufferedReader br=new BufferedReader(fr); //缓冲区(包装类)
  53. String line;
  54. sql=" INSERT INTO BOOKS (Name,Author,Price,Publisher) VALUES(?,?,?,?)"; //sql语句
  55. PreparedStatement ps=conn.prepareStatement(sql);
  56. while((line=br.readLine())!=null) //判断是否读完
  57. {
  58. String[] values=line.split(","); //以逗号拆分 用一个字符串数组接收
  59. ps.setString(1, values[0]); //字段从1数组从0开始
  60. ps.setString(2, values[1]);
  61. ps.setDouble(3, Double.parseDouble(values[2]));//把字符串强制 转换Double
  62. ps.setString(4, values[3]);
  63. st.executeUpdate(sql);//执行
  64. }
  65. br.close(); //关闭资源
  66. }
  67. }
?useUnicode=true&characterEncoding=utf-8";//本机ip地址 本机端口 防止数据库乱码(若无乱码无须添加) String user="root"; //数据库的名字 String pwd="521125"; //数据库密码 conn=(Connection) DriverManager.getConnection(url, user, pwd); //初始化数据库 拿到三个参数 st=(Statement) conn.createStatement(); //创建一个 Statement 对象来将 SQL 语句发送到数据库。 } public void createDatabase() throws SQLException //创建一个数据库 { String sql="drop database if exists Book;"; //判断数据库存在删除 st.executeUpdate(sql);//执行给定 SQL 语句 sql="create database Book;"; //创建表 st.executeUpdate(sql);//执行 } public void createTable() throws SQLException //创建一个表 { String sql="use Book;";//使用表 st.executeQuery(sql);//执行 sql="create table BOOKS"; sql+="("; sql+=" ID int(4) not null primary key auto_increment,"; sql+=" Name varchar(100),"; sql+=" Author varchar(50),"; sql+=" Price decimal,"; sql+="Publisher varchar(100)"; sql+=") ENGINE=InnoDB DEFAULT CHARSET=utf8;";//我额外加的 因为我安装数据库未设置UTF-8 出现乱码 st.executeUpdate(sql);//执行语句 } public void addData(String filename) throws SQLException//创建一个文档 , IOException { String sql="use Book;";//使用表 st.executeUpdate(sql);//执行 FileReader fr=new FileReader(filename); //读取 BufferedReader br=new BufferedReader(fr); //缓冲区(包装类) String line; sql=" INSERT INTO BOOKS (Name,Author,Price,Publisher) VALUES(?,?,?,?)"; //sql语句 PreparedStatement ps=conn.prepareStatement(sql); while((line=br.readLine())!=null) //判断是否读完 { String[] values=line.split(","); //以逗号拆分 用一个字符串数组接收 ps.setString(1, values[0]); //字段从1数组从0开始 ps.setString(2, values[1]); ps.setDouble(3, Double.parseDouble(values[2]));//把字符串强制 转换Double ps.setString(4, values[3]); st.executeUpdate(sql);//执行 } br.close(); //关闭资源 } }

2.创建一个init  初始化测试创建数据库是否成功

第一个问题:

遇到一个错误 创建数据实现,无法向里面加入数据,显示代码错误 

解决方法

 

由于粗心,和对代码的不熟悉浪费了十分钟去查错误,特意去看了API把
1.executeUpdate()  2.executeQuery();

上面错误代码我没有修改!复制时需要注意

第二个问题 数据库在创建时 生成的不是utf-8 

解决方法1:

第3个问题 导入文字出现乱码 

解决方法1:去根目录找文件把属性改成utf-8   C:\Users\Administrator\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\图书管理项目 (未成功)

解决方案2:去官网找了一篇大佬的资料 

 jsp用来显示结果,用来做页面呈现
 逻辑处理用Servlet来做。

 jsp:用来显示结果


  
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding= "UTF-8" import= "javastudy.*"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>Insert title here </title>
  8. <script type="text/javascript" src="pytjon/jquery-1.11.1.js"> </script>
  9. <script type="text/javascript">
  10. $( function(){
  11. $( "input[type='button']").click( function(data){ //当按钮被点击
  12. $.post( "initDB.jsp", function(data){ //进入initDB。jsp
  13. $( "#info").html(data);
  14. });
  15. });
  16. });
  17. </script>
  18. </head>
  19. <body>
  20. <input type="button" value="初始化数据">
  21. <div id="info"> </div>
  22. </body>

 servlet:处理逻辑,处理业务,


  
  1. package javastudy;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import java.sql.SQLException;
  5. import javax.servlet.ServletException;
  6. import javax.servlet.annotation.WebServlet;
  7. import javax.servlet.http.HttpServlet;
  8. import javax.servlet.http.HttpServletRequest;
  9. import javax.servlet.http.HttpServletResponse;
  10. /**
  11. * Servlet implementation class InitIt
  12. */
  13. @WebServlet("/InitIt")
  14. public class InitIt extends HttpServlet {
  15. private static final long serialVersionUID = 1L;
  16. /**
  17. * @see HttpServlet#HttpServlet()
  18. */
  19. public InitIt() {
  20. super();
  21. // TODO Auto-generated constructor stub
  22. }
  23. /**
  24. * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  25. */
  26. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  27. // TODO Auto-generated method stub
  28. //response.getWriter().append("Served at: ").append(request.getContextPath());
  29. DBLib lib;
  30. try {
  31. lib = new DBLib();
  32. lib.createDatabase();
  33. lib.createTable();
  34. lib.addData(this.getServletContext().getRealPath("") + "\\data\\data.txt");
  35. response.setCharacterEncoding("utf-8");
  36. PrintWriter out=response.getWriter();
  37. out.print("初始化成功!");
  38. } catch (ClassNotFoundException | SQLException e) {
  39. // TODO Auto-generated catch block
  40. e.printStackTrace();
  41. }
  42. }
  43. /**
  44. * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  45. */
  46. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  47. // TODO Auto-generated method stub
  48. doGet(request, response);
  49. }
  50. }

  
  1. Servlet解决乱码的方法
  2. response.setContentType("text/html;charset=utf-8");
  3. response.setCharacterEncoding("utf-8");
  4. 注解配置Servlet
  5. Annotation=注解
  6. web.xml配置servlet的方法
  7. <servlet>
  8. <servlet-name>a </servlet-name>
  9. <servlet-class>javastudy.InitIt </servlet-class>
  10. </servlet>
  11. <servlet-mapping>
  12. <servlet-name>a </servlet-name>
  13. <url-pattern>/myservlet </url-pattern>
  14. </servlet-mapping>

前面的数据库创建测试通过,数据库成功搭建

把整个项目步骤写一下:

JSP网站开发模式二:JSP+JavaBeans+Servlet Model II MVC的思想(Model=模型,View=视图,Control=控制)

  将控制业务逻辑的代码写到Servlet中,讲页面的展现(HTML)和业务逻辑的控制(Java)分离开来。

 

 

步骤:1.建立一个JavaBean,它是一个类Book


  
  1. package javastudy;
  2. public class Book {
  3. int id;
  4. String name;
  5. String author;
  6. float price;
  7. String publisher;
  8. public int getId() {
  9. return id;
  10. }
  11. public void setId(int id) {
  12. this.id = id;
  13. }
  14. public String getName() {
  15. return name;
  16. }
  17. public void setName(String name) {
  18. this.name = name;
  19. }
  20. public String getAuthor() {
  21. return author;
  22. }
  23. public void setAuthor(String author) {
  24. this.author = author;
  25. }
  26. public float getPrice() {
  27. return price;
  28. }
  29. public void setPrice(float price) {
  30. this.price = price;
  31. }
  32. public String getPublisher() {
  33. return publisher;
  34. }
  35. public void setPublisher(String publisher) {
  36. this.publisher = publisher;
  37. }
  38. }

 

      2.建立一类叫做BookDAO ,这是数据访问层DAO=Data Access Object=数据访问接口连接数据库,实现以下方法。

    2.1BookDAO()

 


  
  1. Connection conn; //定义公共变量
  2. Statement st;
  3. String sql;
  4. PreparedStatement ps;
  5. public BookDAO() throws ClassNotFoundException,SQLException//定义一个构造函数 初始化数据库连接
  6. {
  7. Class.forName("com.mysql.jdbc.Driver"); //加载驱动程序
  8. //需要得到三个参数
  9. String url="jdbc:mysql://127.0.0.1:3306/book?useUnicode=true&characterEncoding=utf-8";//本机ip地址 本机端口 防止数据库乱码
  10. String user="root"; //数据库的名字
  11. String pwd="521125"; //数据库密码
  12. conn=DriverManager.getConnection(url,user,pwd); //初始化数据库 拿到三个参数
  13. st=conn.createStatement(); //创建一个 Statement 对象来将 SQL 语句发送到数据库。
  14. }

 

 2.2 addBook(Book book)

 


  
  1. //增加
  2. public int addBook(Book book) throws Exception
  3. {
  4. sql="insert into BOOKS(name,author,price,publisher) values(?,?,?,?)";
  5. ps=conn.prepareStatement(sql);//创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。
  6. ps.setString(1,book.getName());
  7. ps.setString(2,book.getAuthor());
  8. ps.setDouble(3,book.getPrice());
  9. ps.setString(4,book.getPublisher());
  10. return ps.executeUpdate();
  11. }

 

 2.3 deleteBook(int id)

 


  
  1. //删除
  2. public int deleteBook(int id) throws Exception //通过ID查找
  3. {
  4. sql="delete from books where id=?";
  5. ps=conn.prepareStatement(sql);
  6. ps.setInt(1, id);
  7. return ps.executeUpdate();
  8. // 在此 PreparedStatement 对象中执行 SQL 语句,该语句必须是一个 SQL 数据操作语言语句,或者是无返回内容的 SQL 语句
  9. }

  2.4 ArrayList<Book> getBooks()


  
  1. //拿到所有 的图书
  2. public ArrayList <Book> getbooks() throws Exception {
  3. sql="select * from books";
  4. ps=conn.prepareStatement(sql);
  5. ResultSet rs = ps.executeQuery();
  6. ArrayList <Book> list=new ArrayList <Book>();
  7. while(rs.next()) {
  8. Book book=new Book();
  9. book.setId(rs.getInt(1));
  10. book.setName(rs.getString(2));
  11. book.setAuthor(rs.getString(3));
  12. book.setPrice(rs.getFloat(4));
  13. book.setPublisher(rs.getString(5));
  14. list.add(book);
  15. }
  16. return list;
  17. }

  2.5 modifyBook(int id,Book newbook)

 


  
  1. //修改一本书
  2. public int modifyBook(int id, Book newbook) throws Exception {
  3. // TODO Auto-generated method stub
  4. sql="update books set name=?,author=?,price=?,publisher=? where id=?";
  5. ps=conn.prepareStatement(sql);
  6. ps.setString(1, newbook.getName());
  7. ps.setString(2, newbook.getAuthor());
  8. ps.setDouble(3, newbook.getPrice());
  9. ps.setString(4, newbook.getPublisher());
  10. ps.setInt(5, id);
  11. return ps.executeUpdate();
  12. }

  2.6getBookById(int id)


  
  1. //通过一本书得到信息
  2. public Book getBookById(int id) throws SQLException
  3. {
  4. String sql="select * from books where id=?";
  5. ps=conn.prepareStatement(sql);
  6. ps.setInt(1, id);
  7. ResultSet rs=ps.executeQuery();
  8. rs.next();
  9. Book book=new Book();
  10. book.setId(rs.getInt(1));
  11. book.setName(rs.getString(2));
  12. book.setAuthor(rs.getString(3));
  13. book.setPrice(rs.getFloat(4));
  14. book.setPublisher(rs.getString(5));
  15. return book;
  16. }

 2.7getBooks(String bookName)

 


  
  1. //搜索图书
  2. public ArrayList <Book> getBook(String books) throws Exception {
  3. // SELECT * FROM users WHERE username LIKE '%三%'
  4. //sql="select * from books where name=?";
  5. //select * from table_name where id like '83%58193';
  6. //sql:select id,name from tablename where contains( address, '上海' );
  7. /* SELECT student_id,student_name
  8. FROM students
  9. WHERE CONTAINS( address, 'beijing' )*/
  10.  
  11. sql="SELECT * FROM books WHERE name LIKE '%?%'";
  12. ps=conn.prepareStatement(sql);
  13. ps.setString(1, books);
  14. ResultSet rs = ps.executeQuery(sql);
  15. ArrayList <Book> list=new ArrayList <Book>();
  16. while(rs.next()) {
  17. Book book=new Book();
  18. book.setId(rs.getInt(1));
  19. book.setName(rs.getString(2));
  20. book.setAuthor(rs.getString(3));
  21. book.setPrice(rs.getFloat(4)); 
  22. book.setPublisher(rs.getString(5));
  23. list.add(book);
  24. }
  25. return list;
  26. }
//搜索图书 public ArrayList<Book> getBook(String books) throws Exception { // SELECT * FROM users WHERE username LIKE '%三%' //sql="select * from books where name=?"; //select * from table_name where id like '83%58193'; //sql:select id,name from tablename where contains( address, '上海' ); /* SELECT student_id,student_name FROM students WHERE CONTAINS( address, 'beijing' )*/   sql="SELECT * FROM books WHERE name LIKE '%?%'"; ps=conn.prepareStatement(sql); ps.setString(1, books); ResultSet rs = ps.executeQuery(sql); ArrayList<Book> list=new ArrayList<Book>(); while(rs.next()) { Book book=new Book(); book.setId(rs.getInt(1)); book.setName(rs.getString(2)); book.setAuthor(rs.getString(3)); book.setPrice(rs.getFloat(4));  book.setPublisher(rs.getString(5)); list.add(book); } return list; }

搜索功能待更新 

3.做一个jsp页面,bookList.jsp。

    整体给大家看一下:

  <input type="hidden" name="id">  隐藏 

   booklist.jsp,页面加载时,列表显示所有的图书

    3.1【样式表+Js代码】


  
  1. <script type="text/javascript">
  2. function altRows(id){
  3. if( document.getElementsByTagName){
  4. var table = document.getElementById(id);
  5. var rows = table.getElementsByTagName( "tr");
  6. for(i = 0; i < rows.length; i++){
  7. if(i % 2 == 0){
  8. rows[i].className = "evenrowcolor";
  9. } else{
  10. rows[i].className = "oddrowcolor";
  11. }
  12. }
  13. }
  14. }
  15. window.onload= function(){
  16. altRows( 'gridtable');
  17. }
  18. </script>

  
  1. <style type="text/css">
  2. table .gridtable {
  3. font-family: verdana,arial,sans-serif;
  4. font-size: 11px;
  5. color: #333333;
  6. border-width: 1px;
  7. border-color: #a9c6c9;
  8. border-collapse: collapse;
  9. }
  10. table .gridtable th {
  11. border-width: 1px;
  12. padding: 8px;
  13. border-style: solid;
  14. border-color: #a9c6c9;
  15. }
  16. table .gridtable td {
  17. border-width: 1px;
  18. padding: 8px;
  19. border-style: solid;
  20. border-color: #a9c6c9;
  21. }
  22. .oddrowcolor{
  23. background-color: #d4e3e5;
  24. }
  25. .evenrowcolor{
  26. background-color: #c3dde0;
  27. }
  28. *{ margin: 0; padding: 0;}
  29. body{ overflow:hidden; background: url( "images/2.jpg");}
  30. </style>
font-family: verdana,arial,sans-serif; font-size:11px; color:#333333; border-width: 1px; border-color: #a9c6c9; border-collapse: collapse; } table.gridtable th { border-width: 1px; padding: 8px; border-style: solid; border-color: #a9c6c9; } table.gridtable td { border-width: 1px; padding: 8px; border-style: solid; border-color: #a9c6c9; } .oddrowcolor{ background-color:#d4e3e5; } .evenrowcolor{ background-color:#c3dde0; } *{margin:0;padding:0;} body{overflow:hidden;background:url("images/2.jpg");} </style>

    3.2【增】页面有一个增加图书按钮,可以增加图书

 


  
  1. $("#btnAdd").click(function(){
  2. location.href="add.jsp";
  3. });

  
  1. <embed src="music/4.mp3" width="0.01" height="0.01"> </embed>
  2. <form method="post" action="AddIt">
  3. <table class="gridtable" id="gridtable">
  4. <tr> <td colspan="2">添加图书信息 </td> </tr>
  5. <tr> <td>名称 </td> <td> <input type="text" name="name" > </td> </tr>
  6. <tr> <td>作者 </td> <td> <input type="text" name="author" > </td> </tr>
  7. <tr> <td>价格 </td> <td> <input type="text" name="price" > </td> </tr>
  8. <tr> <td>出版社 </td> <td> <input type="text" name="publisher"> </td> </tr>
  9. <tr> <td colspan="2"> <input type="submit" value="添加图书信息"> <div id="info"> </div> </td> </tr>
  10. </table>
  11. </form>
  12. </body>

  
  1. response.setCharacterEncoding("utf-8");
  2. request.setCharacterEncoding("utf-8");
  3. //int id=Integer.parseInt(request.getParameter("id")); //得到ID
  4. String name=request.getParameter("name");
  5. String author=request.getParameter("author");
  6. float price=Float.parseFloat(request.getParameter("price"));
  7. String publisher=request.getParameter("publisher");
  8. Book newbook=new Book();
  9. newbook.name=name;
  10. newbook.author=author;
  11. newbook.price=price;
  12. newbook.publisher=publisher;
  13. BookDAO dao;
  14. try {
  15. dao=new BookDAO();
  16. dao.addBook(newbook);
  17. response.sendRedirect("BookList.jsp");
  18. } catch (Exception e) {
  19. // TODO Auto-generated catch block
  20. e.printStackTrace();
  21. }

    3.2【删】页面上有一个删除按钮,可以删除图书


  
  1. $("#btnDelete").click(function(){
  2. //将被选中的图书的id收集起来
  3. var ids="";
  4. var i=0;
  5. $("input[type='checkbox'][name='selectit']").each(function(index, element) {
  6. if(index>0)
  7. {
  8. if($(this).prop("checked"))
  9. {
  10. var id= $(this).parent().parent().children()
  11. .eq(0).children().eq(0).val();
  12. ids+=id;
  13. i++;
  14. if(!$(this).is(":last"))
  15. {
  16. ids+=",";
  17. }
  18. }
  19. }
  20. });
  21. var answer=confirm("你确定要删除选定的这" + i+ "本图书吗?");
  22. if(!answer)
  23. {
  24. return;
  25. }
  26. location.href="DeleteIt?ids=" + ids;
  27. });

  
  1. response.setCharacterEncoding("utf-8");
  2. String ids=request.getParameter("ids");
  3. String [] id=ids.split(",");
  4. try {
  5. BookDAO dao =new BookDAO();
  6. for(int i=0;i <id.length;i++)
  7. {
  8. dao.deleteBook(Integer.parseInt(id[i]));
  9. }
  10. } catch (Exception e) {
  11. // TODO Auto-generated catch block
  12. e.printStackTrace();
  13. }
  14. response.sendRedirect("BookList.jsp");
  15. //response.getWriter().append("Served at: ").append(request.getContextPath());
  16. }
String ids=request.getParameter("ids"); String [] id=ids.split(","); try { BookDAO dao =new BookDAO(); for(int i=0;i<id.length;i++) { dao.deleteBook(Integer.parseInt(id[i])); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } response.sendRedirect("BookList.jsp"); //response.getWriter().append("Served at: ").append(request.getContextPath()); }

    3.3【改】每本图书后面有一个修改按钮,可以修改图书

 


  
  1. $("input[type='button'][name='modifyit']").click(function(){
  2. //获取id
  3. var id= $(this).parent().parent().children()
  4. .eq(0).children().eq(0).val();
  5. //页面跳转
  6. location.href="modify.jsp?id="+id;
  7. });

  
  1. <body>
  2. <embed src="music/3.mp3" width="0.01" height="0.01"> </embed>
  3. <%  
  4.   int id= Integer.parseInt(request.getParameter(" id"));  //需要封装 
  5.   BookDAO dao= new BookDAO();
  6.   Book book= dao.getBookById(id);  //得到 ID
  7. %>
  8. <form method="post" action="Modify">
  9. <table class="gridtable" id="gridtable" >
  10. <tr> <td colspan="2">修改图书信息 </td> </tr>
  11.   <tr> <td> <input type="hidden" name="id" value="<%=book.getId()%>"> </td> </tr>
  12.     <tr> <td>名称 </td> <td> <input type="text" name="name"value="<%=book.getName() %>"> </td> </tr>
  13.     <tr> <td>作者 </td> <td> <input type="text" name="author"value="<%=book.getAuthor() %>"> </td> </tr>
  14.     <tr> <td>价格 </td> <td> <input type="text" name="price"value="<%=book.getPrice() %>"> </td> </tr>
  15.     <tr> <td>出版社 </td> <td> <input type="text" name="publisher"value="<%=book.getPublisher() %>"> </td> </tr>
  16.   <tr> <td colspan="2"> <input type="submit" value="修改图书信息"> <div id="info"> </div> </td> </tr>
  17. </table>
  18. </form>
  19. </body>
Book book=dao.getBookById(id);  //得到ID %> <form method="post" action="Modify"> <table class="gridtable" id="gridtable" > <tr><td colspan="2">修改图书信息</td></tr>   <tr><td><input type="hidden" name="id" value="<%=book.getId()%>"></td></tr>     <tr><td>名称</td><td><input type="text" name="name"value="<%=book.getName() %>"></td></tr>     <tr><td>作者</td><td><input type="text" name="author"value="<%=book.getAuthor() %>"></td></tr>     <tr><td>价格</td><td><input type="text" name="price"value="<%=book.getPrice() %>"></td></tr>     <tr><td>出版社</td><td><input type="text" name="publisher"value="<%=book.getPublisher() %>"></td></tr>   <tr><td colspan="2"><input type="submit" value="修改图书信息"><div id="info"></div></td></tr> </table> </form> </body>

  
  1. response.setCharacterEncoding("utf-8");
  2. request.setCharacterEncoding("utf-8");
  3. int id=Integer.parseInt(request.getParameter("id"));  //得到ID
  4. String name=request.getParameter("name");
  5. String author=request.getParameter("author");
  6. float price=Float.parseFloat(request.getParameter("price"));
  7. String publisher=request.getParameter("publisher");
  8. Book newbook=new Book();
  9. newbook.name=name;
  10. newbook.author=author;
  11. newbook.price=price;
  12. newbook.publisher=publisher;
  13. BookDAO dao;
  14. try {dao=new BookDAO();
  15. dao.modifyBook(id,newbook);
  16. } catch (Exception e) {
  17. // TODO Auto-generated catch block
  18. e.printStackTrace();
  19. }
  20. response.sendRedirect("BookList.jsp");
  21. //response.getWriter().append("Served at: ").append(request.getContextPath());
  22. }
request.setCharacterEncoding("utf-8"); int id=Integer.parseInt(request.getParameter("id"));  //得到ID String name=request.getParameter("name"); String author=request.getParameter("author"); float price=Float.parseFloat(request.getParameter("price")); String publisher=request.getParameter("publisher"); Book newbook=new Book(); newbook.name=name; newbook.author=author; newbook.price=price; newbook.publisher=publisher; BookDAO dao; try {dao=new BookDAO(); dao.modifyBook(id,newbook); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } response.sendRedirect("BookList.jsp"); //response.getWriter().append("Served at: ").append(request.getContextPath()); }

 3.4【查】页面上有一个选中按钮,可以根据图书的是否被选中查询显示图书

 

 


  
  1. $("#query").click(function(){
  2. //将被选中的图书的id收集起来
  3. /* var ids="";
  4. var i=0;
  5. var
  6. $("input[type='checkbox'][name='selectit']").each(function(index, element) {
  7. if(index>0)
  8. {
  9. if($(this).prop("checked"))
  10. {
  11. var id= $(this).parent().parent().children()
  12. .eq(0).children().eq(0).val();
  13. ids+=id;
  14. i++;
  15. if(!$(this).is(":last"))
  16. {
  17. ids+=",";
  18. }
  19. }
  20. }
  21. });
  22. */
  23. var arr=[];
  24. $("input[type='checkbox']:checked").each(function(){
  25. arr.push(this.value);
  26. })
  27. var json = JSON.stringify(arr);//数组转换成json,都在了,数组和json
  28. alert(json + arr);
  29. var answer=confirm("你确定要查询选定的这" + arr.length + "本图书吗?");
  30. if(!answer)
  31. {
  32. return;
  33. }
  34. location.href="reveal.jsp?ids="+arr;
  35. });

     无须处理 只需要判断选中多少 遍历出来 没用到Servlet

 

 

3.5【搜】页面上有一个搜索按钮,可以根据图书的名称和作者,来搜索并显示图书

(待)修改

 


  
  1. $("#search").click(function(){
  2. location.href="search.jsp";
  3. });

  
  1. <body>
  2. <center>
  3. <marquee width="300" direction=left height="50"> <center> <font color="pink" size="7" face="华文彩云"> <b>图书信息 </b> </font> </center> </marquee>
  4. <embed src="music/3.mp3" width="0.01" height="0.01"> </embed>
  5. <table class="gridtable" id="gridtable" height="400" width="30%">
  6. <%
  7. request.setCharacterEncoding("UTF-8");
  8. response.setCharacterEncoding("UTF-8");
  9. String name=request.getParameter("name");
  10. String condition=request.getParameter("condition");
  11. out.print(name);
  12. %>
  13. <%
  14. BookDAO dao= new BookDAO();
  15. ArrayList< Book> list=dao.getbooks();
  16. for(int i=0;i <list.size();i++){
  17. Book book= list.get(i);
  18. %>
  19. <tr>
  20. <td> <%=i+1 %> <input type="hidden" name="id" value="<%=book.getId()%>"> </td>
  21. <td> <h3> <%=book.getName() %> </h3> </td>
  22. <td> <h3> <%=book.getAuthor() %> </h3> </td>
  23. <td> <h3> <%=book.getPrice() %> </h3> </td>
  24. <td> <h3> <%=book.getPublisher() %> </h3> </td>
  25. </tr>
  26. <%
  27. }
  28. %>
  29. </table>
  30. </center>
  31. </body>

 

创建一个BookDAO的类实现数据库的基本功能 增删改查,新建个类aaa做测试


  
  1. package javastudy;
  2. import java.util.ArrayList;
  3. public class aaa {
  4. public static void main(String[] args) throws Exception {
  5. // TODO Auto-generated method stub
  6. BookDAO dao=new BookDAO();
  7. ArrayList <Book> list = dao.getbooks();
  8. for (Book book : list) {
  9. System.out.println(book);
  10. }
  11. dao.getbooks();
  12. }
  13. }

 

        基本框架已经实现,开始写其功能 可能会遇到很多问题加油!

<strong><span style="color:#000000">目前是1.0  等今后有时间升级2.0   有兴趣的可以问我要代码  项目没完成就不在这发了  下周一在去完善 </span></strong>
<strong><span style="color:#000000">通宵把我之前写的东西重新捋一遍   好累 会的太少  完成2.0 就准备往下学 等以后在此基础上 升级  </span></strong>
<strong><span style="color:#000000">看我博客的同学 如果有兴趣的可以和我一起研究          今天通宵把其他功能全部实现,就差最后一步(搜索还有点小BUG) 加了很多图片音乐 加了个数字时钟          我打算以后做一个UI用户登录  今后学到新的知识再往上加 (本人菜鸟一只  希望大佬指点一二)</span></strong>
 

  
  1. <body>
  2. <center>
  3. <marquee width= "300" direction=left height= "50"><center><font color= "pink" size= "7" face= "华文彩云"><b>图书信息</b></font></center></marquee>
  4. <embed src= "music/3.mp3" width= "0.01" height= "0.01"></embed>
  5. <table class= "gridtable" id= "gridtable" height= "400" width= "30%">
  6. <%
  7. request.setCharacterEncoding( "UTF-8");
  8. response.setCharacterEncoding( "UTF-8");
  9. String name=request.getParameter( "name");
  10. //name+="%"+name+"%";
  11. String condition=request.getParameter( "condition");
  12. // out.print(name);
  13. BookDAO dao= new BookDAO();
  14. ArrayList<Book> list=dao.serachBook(name);
  15. if(list== null || list.size()== 0){
  16. out.print( "没用找到相应的图书");
  17. }
  18. for( int i= 0;i<list.size();i++){
  19. Book book=list.get(i);
  20. %>
  21. <tr>
  22. <td><%=i+ 1 %><input type= "hidden" name= "id" value= "<%=book.getId()%>"></td>
  23. <td><h3><%=book.getName() %></h3></td>
  24. <td><h3><%=book.getAuthor() %></h3></td>
  25. <td><h3><%=book.getPrice() %></h3></td>
  26. <td><h3><%=book.getPublisher() %></h3></td>
  27. </tr>
  28. <%
  29. }
  30. %>
  31. </table>
  32. </center>
  33. </body>

     


  
  1. <body>
  2. <embed src="music/3.mp3" width="0.01" height="0.01"> </embed>
  3. <center>
  4. <div class="divMain">
  5. <marquee width="300" direction=left height="50"> <center> <font color="#0000ff" size="7" face="华文彩云"> <b>跟小刘学java 从入门到精通! </b> </font> </center> </marquee>
  6. <h1 align="center" class="STYLE1">请输入要查询的关键字 </h1>
  7. <form action="seek.jsp" method="post">
  8. <h2> <span class="STYLE2"> 请选择查询条件 </span> </h2>
  9. <select name="condition">
  10. <option value ="author">作者 </option>
  11. <option value ="name" selected="selected">书名 </option>
  12. </select>
  13. <span class="STYLE3">请输入 </span>
  14. <input type="text" name="name" /> <br />
  15. <input type="submit" value="提交信息 " />
  16. </form>
  17. </div>
  18. </center>
  19. </body>

 

      

 全部代码都放在我博客上了,可以去下载完整的项目 

源码下载地址

https://download.csdn.net/download/liuy521/10222825


转载:https://blog.csdn.net/LiuY521/article/details/79008415
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场