首先声明,我写的不是很好,是个新手,这是我提供的一些思路,勿喷,有问题欢迎指出。
步骤:
- 使用idea创建工程,创建com.xxxxx.dao
- 创建Book实体类。根据你的数据库创造的成员变量,包含方法和声明。(Auto incr建议点上,它是让id逐渐增大的)
package com.lvshuai90104.dao; public class Book { private int id; private String bookName; private String bookAuthor; private String bookPublish; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = bookName; } public String getBookAuthor() { return bookAuthor; } public void setBookAuthor(String bookAuthor) { this.bookAuthor = bookAuthor; } public String getBookPublish() { return bookPublish; } public void setBookPublish(String bookPublish) { this.bookPublish = bookPublish; } public Book(int id, String bookName, String bookAuthor, String bookPublish) { this.id = id; this.bookName = bookName; this.bookAuthor = bookAuthor; this.bookPublish = bookPublish; } public Book(String bookName, String bookAuthor, String bookPublish) { this.bookName = bookName; this.bookAuthor = bookAuthor; this.bookPublish = bookPublish; } }
3接口BookDaoimpl,这是你所有的方法,增删改查。
package com.lvshuai90104.dao; import java.util.ArrayList; public interface BookDaoimpl { //得到所有的书的信息 public abstract ArrayList<Book> getBookList(); //添加一本书 public abstract void addBook(Book book); //删除一本书 public abstract void delBook(int id); //查找书 public abstract Book getBookById(int id); //更改书 public abstract void modifyBook(Book book); }
4、ConnFactory链接数据库。
package com.lvshuai90104.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnFactory { public static final String URL = "jdbc:mysql://localhost:3306/book?characterEncoding=UTF-8&eroDateTimeBehavior=convertToNull"; public static final String USER = "root"; public static final String PASSWORD = "123456"; public static Connection getConn(){ Connection conn = null; try { //加载驱动链接 Class.forName("com.mysql.jdbc.Driver"); //建立链接 conn = DriverManager.getConnection(URL, USER, PASSWORD); } catch (ClassNotFoundException e) { e.printStackTrace(); }finally { return conn; } } //关闭链接 public static void closeConn(Connection conn){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } }
5、BookDao,实现方法。
package com.lvshuai90104.dao;
import java.sql.*;
import java.util.ArrayList;
public class BookDao implements BookDaoimpl {
@Override
//获取所有的书籍
public ArrayList<Book> getBookList() {
//定义一个Book类型的数组booklist
ArrayList<Book>booklist = new ArrayList<>();
//链接数据库
Connection conn = ConnFactory.getConn();
Statement stmt = null;
ResultSet rs = null;
try {
//通过MySql的JDBC驱动访问数据库
stmt = conn.createStatement();
//rs储存查询结果
rs = stmt.executeQuery("SELECT * FROM book");
//将rs的值放入book里,再添加到booklist里,通过循环全部放在booklist里
while (rs.next()){
Book book = new Book(rs.getInt("id"),rs.getString("book_name"),rs.getString("book_author"),rs.getString("book_publish"));
booklist.add(book);
}
} catch (SQLException e) {
e.printStackTrace();
}
//返回booklist
return booklist;
}
@Override
public void addBook(Book book) {
Connection conn = ConnFactory.getConn();
//测试插入数据库
PreparedStatement pstmt = null;
try {
String inset = "insert into book(book_name,book_author,book_publish) values (?,?,?)";
pstmt = conn.prepareStatement(inset);
//1,2,3分别对应后面三个?位置
pstmt.setString(1,book.getBookName());
pstmt.setString(2,book.getBookAuthor());
pstmt.setString(3,book.getBookPublish());
//这句不要丢
pstmt.execute();
} catch (SQLException e) {
e.printStackTrace();
}
ConnFactory.closeConn(conn);
}
@Override
public void delBook(int id) {
Connection conn = ConnFactory.getConn();
PreparedStatement pstmt = null;;
try{
String inset = "delete from book where id=?";
pstmt = conn.prepareStatement(inset);
pstmt.setInt(1,id);
} catch (SQLException e) {
e.printStackTrace();
}
ConnFactory.closeConn(conn);
}
@Override
public Book getBookById(int id) {
Connection conn = ConnFactory.getConn();
Statement stmt = null;
ResultSet rs = null;
Book book = null;
try {
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT * FROM where id="+id);
while (rs.next()){
book = new Book(rs.getInt("id"),rs.getString("book_name"),rs.getString("book_author"),rs.getString("book_publish"));
}
} catch (SQLException e) {
e.printStackTrace();
}
ConnFactory.closeConn(conn);
return book;
}
@Override
public void modifyBook(Book book) {
Connection conn = ConnFactory.getConn();
PreparedStatement pstmt = null;;
try{
String inset = "update book set book_name=?,book_author=?,book_publish=? where id = ?";
pstmt = conn.prepareStatement(inset);
pstmt.setString(1,book.getBookName());
pstmt.setString(2,book.getBookAuthor());
pstmt.setString(3,book.getBookPublish());
pstmt.setInt(4,book.getId());
pstmt.execute();
} catch (SQLException e) {
e.printStackTrace();
}
ConnFactory.closeConn(conn);
}
}
6、为了防止汉字出现乱码设置过滤器CharsetFilter
package com.lvshuai90104.dao;
import javax.servlet.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebFilter(filterName = "CharsetFilter",urlPatterns = "/*")
public class CharsetFilter implements Filter {
public void init(FilterConfig config) throws ServletException {
}
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
chain.doFilter(request, response);
}
}
7、BookServlet1,创建servlet,用来把数据发送给servlet
package Servlet;
import com.lvshuai90104.dao.Book;
import com.lvshuai90104.dao.BookDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
@WebServlet(name = "BookServlet1",urlPatterns = "/BookServlet1")
public class BookServlet1 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
BookDao dao = new BookDao();
ArrayList<Book> books = dao.getBookList();
//将books的值并赋予books
request.getSession().setAttribute("books",books);
//将值发送给index.jsp
response.sendRedirect("index.jsp");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
8、index.jsp,用来在网页显示数据。
<%@ page import="java.util.ArrayList" %>
<%@ page import="com.lvshuai90104.dao.Book" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--c标签,需要导入jstl.jar和standard.jar--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<table border="1">
<tr><td>id</td><td>name</td><td>author</td><td>publish</td></tr>
<%--通过session获取books(bookservlet1)--%>
<c:forEach items="${sessionScope.books}" var="books">
<tr>
<td>${books.id}</td>
<td>${books.bookName}</td>
<td>${books.bookAuthor}</td>
<td>${books.bookPublish}</td>
</tr>
</c:forEach>
</table>
<a href="addbook.jsp">添加图书</a>
</body>
</html>
配置jar包
9、AddBook添加书的jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="AddBook.do" method="post">
name:<input type="text" name="bookName"/><br>
author:<input type="text" name="bookAuthor"/><br>
publish:<input type="text" name="bookPublish"/><br>
<input type="submit">
</form>
</body>
</html>
10、AddBook,创建servlet,实现添加书servlet
package Servlet;
import com.lvshuai90104.dao.Book;
import com.lvshuai90104.dao.BookDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "AddBook",urlPatterns = "/AddBook.do")
public class AddBook extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取addbook的值。
String bookName = request.getParameter("bookName");
String bookAuthor = request.getParameter("bookAuthor");
String bookPublish = request.getParameter("bookPublish");
BookDao dao = new BookDao();
//将获取的值放在book中
Book book = new Book(bookName,bookAuthor,bookPublish);
//将book通过dao方法插入数据库中
dao.addBook(book);
//将值传给BookServlet1中,并跳转到BookServlet1
response.sendRedirect("BookServlet1");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
结构图
还有几个功能没实现,有时间我会继续修改,希望对大家有用。
可以加我qq要源码1469131641