基于javaweb的JSP+Servlet简单图书管理系统(java+servlet+mysql+jsp+bootstrap)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

051323332409

061323332409

071323332409

081323332409

基于javaweb的JSP+Servlet简单图书管理系统(java+servlet+mysql+jsp+bootstrap)

登录:
admin 123456

图书管理,增删改查

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
try {
//防止查询表单minprice输入为空转化为double出现异常
minprice = Integer.valueOf(request.getParameter("minprice"));
} catch (NumberFormatException e) {
minprice = 0;
}
try {
//防止查询表单minprice输入为空转化为double出现异常
maxprice = Integer.valueOf(request.getParameter("maxprice"));
} catch (NumberFormatException e) {
maxprice = 0;
}

String minpdate = request.getParameter("minPdate");
String maxpdate = request.getParameter("maxPdate");

String queryParams = "&bookname=" + name + "&cateId=" + cateId + "&minprice=" + minprice + "&maxprice=" + maxprice + "&minPdate=" + minpdate + "&maxPdate=" + maxpdate;
request.setAttribute("queryParams", queryParams);
//因为本查询方式是form的get,会刷新当前页面,导致表单数据丢失,这里为了交互良好起见,把提交前表单的值写入Session中
HttpSession session = request.getSession();
session.setAttribute("formerKeywords", name);
session.setAttribute("formerCateId", cateId);
session.setAttribute("formerMinprice", minprice);
session.setAttribute("formerMaxprice", maxprice);
session.setAttribute("formerMinpdate", minpdate);
session.setAttribute("formerMaxpdate", minpdate);
//sql拼接,以便号获取List<Book>和满足条件的count,这里是定义条件
String baseSql = "from book where price>=" + minprice; //如果前端表单传入minprice为空,则minprice=0为异常处理的结果
String sql = baseSql;
if (maxprice != 0) sql = baseSql + " and price<=" + maxprice; //如果前端表单maxprice输入不为空
if (!minpdate.equals("")) sql += " and pdate>= '" + minpdate + "'";
if (!maxpdate.equals("")) sql += " and pdate<= '" + maxpdate + "'";
if (cateId != 0) sql += " and cateId=" + cateId;
if (!name.equals("")) {
String keywords = "";
for (int i = 0; i < name.length(); i++) //将关键字分解成一个一个字进行模糊查询
keywords += "%" + name.charAt(i);
sql += " and name like " + "'" + keywords + "%'";
}
String countSql = "select count(*) " + sql; //查询满足条件的记录数
sql = "select * " + sql + " limit ?,?";
System.out.println(sql);
System.out.println(countSql);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
                map.put("data", "修改成功!");
}
}

//放回json到前端
JSONObject msg = JSONObject.fromObject(map);
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.println(msg);
}

//后台主页查询出所有记录并分页显示
public void pageList(HttpServletRequest request, HttpServletResponse response) throws Exception {
BookDao bookDao = new BookDao();
String p = request.getParameter("page");
int page;
try {
//当前页数
page = Integer.valueOf(p);
} catch (NumberFormatException e) {
page = 1;
}
//书籍总数
int totalBooks = bookDao.counts("select count(*) from book");
//每页书籍数
int booksPerPage = 5;
//总页数
int totalPages = totalBooks % booksPerPage == 0 ? totalBooks / booksPerPage : totalBooks / booksPerPage + 1;
//本页起始书籍序号
int beginIndex = (page - 1) * booksPerPage;
List<Book> books = bookDao.getAllBooks(beginIndex, booksPerPage);
request.setAttribute("totalPages", totalPages);
request.setAttribute("page", page);
request.setAttribute("books", books);
request.setAttribute("type", "pageList");
request.getRequestDispatcher("home.jsp").forward(request, response);
}
}


@WebFilter(filterName = "LoginFilter")
public class LoginFilter implements Filter {
public FilterConfig config;
public void destroy() {
this.config = null;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
    }
if (type.equals("search")) {
try {
searchBook(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
if (type.equals("detail")) {
try {
bookDetail(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}

}

public void bookDetail(HttpServletRequest request, HttpServletResponse response) throws Exception {
int id = Integer.parseInt(request.getParameter("id"));
BookDao bookDao = new BookDao();
Book book = bookDao.queryBookById(id);
request.setAttribute("book", book);
request.getRequestDispatcher("detail.jsp").forward(request, response);
}

//根据条件查询书籍并分页
public void searchBook(HttpServletRequest request, HttpServletResponse response) throws Exception {
//获取查询条件的参数
String name = request.getParameter("bookname");
int cateId = Integer.parseInt(request.getParameter("cateId"));
double minprice;
double maxprice;
try {
//防止查询表单minprice输入为空转化为double出现异常
minprice = Integer.valueOf(request.getParameter("minprice"));
} catch (NumberFormatException e) {
minprice = 0;
}
try {
//防止查询表单minprice输入为空转化为double出现异常
maxprice = Integer.valueOf(request.getParameter("maxprice"));
} catch (NumberFormatException e) {
maxprice = 0;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32


@WebServlet(name = "BookServlet", urlPatterns = {"/book.do"})
@MultipartConfig(
maxFileSize = 5 * 1024 * 1024
)
public class BookServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String type = request.getParameter("type");
if (type.equals("add") || type.equals("update")) {
try {
addOrUpdate(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String type = request.getParameter("type");
//不分页显示所有书籍
if (type.equals("show")) {
try {
showBooks(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
//分页显示所有书籍
if (type.equals("pageList")) {
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
            }
}

//放回json到前端
JSONObject msg = JSONObject.fromObject(map);
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.println(msg);
}

//后台主页查询出所有记录并分页显示
public void pageList(HttpServletRequest request, HttpServletResponse response) throws Exception {
BookDao bookDao = new BookDao();
String p = request.getParameter("page");
int page;
try {
//当前页数
page = Integer.valueOf(p);
} catch (NumberFormatException e) {
page = 1;
}
//书籍总数
int totalBooks = bookDao.counts("select count(*) from book");
//每页书籍数
int booksPerPage = 5;
//总页数
int totalPages = totalBooks % booksPerPage == 0 ? totalBooks / booksPerPage : totalBooks / booksPerPage + 1;
//本页起始书籍序号
int beginIndex = (page - 1) * booksPerPage;
List<Book> books = bookDao.getAllBooks(beginIndex, booksPerPage);
request.setAttribute("totalPages", totalPages);
request.setAttribute("page", page);
request.setAttribute("books", books);
request.setAttribute("type", "pageList");
request.getRequestDispatcher("home.jsp").forward(request, response);
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
        }
}

}

public void bookDetail(HttpServletRequest request, HttpServletResponse response) throws Exception {
int id = Integer.parseInt(request.getParameter("id"));
BookDao bookDao = new BookDao();
Book book = bookDao.queryBookById(id);
request.setAttribute("book", book);
request.getRequestDispatcher("detail.jsp").forward(request, response);
}

//根据条件查询书籍并分页
public void searchBook(HttpServletRequest request, HttpServletResponse response) throws Exception {
//获取查询条件的参数
String name = request.getParameter("bookname");
int cateId = Integer.parseInt(request.getParameter("cateId"));
double minprice;
double maxprice;
try {
//防止查询表单minprice输入为空转化为double出现异常
minprice = Integer.valueOf(request.getParameter("minprice"));
} catch (NumberFormatException e) {
minprice = 0;
}
try {
//防止查询表单minprice输入为空转化为double出现异常
maxprice = Integer.valueOf(request.getParameter("maxprice"));
} catch (NumberFormatException e) {
maxprice = 0;
}

String minpdate = request.getParameter("minPdate");
String maxpdate = request.getParameter("maxPdate");

String queryParams = "&bookname=" + name + "&cateId=" + cateId + "&minprice=" + minprice + "&maxprice=" + maxprice + "&minPdate=" + minpdate + "&maxPdate=" + maxpdate;
request.setAttribute("queryParams", queryParams);
//因为本查询方式是form的get,会刷新当前页面,导致表单数据丢失,这里为了交互良好起见,把提交前表单的值写入Session中
HttpSession session = request.getSession();
session.setAttribute("formerKeywords", name);
session.setAttribute("formerCateId", cateId);
session.setAttribute("formerMinprice", minprice);
session.setAttribute("formerMaxprice", maxprice);
session.setAttribute("formerMinpdate", minpdate);
session.setAttribute("formerMaxpdate", minpdate);
//sql拼接,以便号获取List<Book>和满足条件的count,这里是定义条件
String baseSql = "from book where price>=" + minprice; //如果前端表单传入minprice为空,则minprice=0为异常处理的结果


项目链接:
https://javayms.github.io?id=041323332409201ga
https://javayms.pages.dev?id=041323332409201ga