-
- 思路分析
-
- 代码编写
- 继续完成第四步骤将查询的结果集存放到session
//存 HttpSession session= request.getSession(); session.setAttribute("books",books); //转 response.sendRedirect("booklist.jsp"); |
- 页面使用EL表达式获取作用域的数据
el表达式的语法:${ } 作用是替代页面的小脚本
<% String name= (String)session.getAttribute("username"); out.write(name); %> eL取出来的: ${username} |
在页面中需要完成类似java中的流程控制语句, el实现不了,所以需要jstl表达式
添加jar
使用指令引入
<div id="div"> <h1 style="text-align: center;">图书借阅系统</h1> <form action="bookServlet.do" method="post" style="text-align: center;" > 图书分类<select name="booktypeid"> <option value="0">全部</option> <c:forEach items="${bookTypes}" var="bookType"> <option value="${bookType.id}">${bookType.type_name }</option> </c:forEach> </select> 图书名称<input type="text" name="bookname"> 是否借阅<select name="borrow"> <option value="-1">请选择</option> <option value="0">未借阅</option> <option value="1">已借阅</option> </select> <input type="hidden" name="choose" value="1"> <input type="hidden" name="pageno" value="1"> <input type="submit" value="查询"> </form> <div style="margin: 0px auto; width: 580px;"> <table border="1" > <tr> <td>图书编号</td> <td>图书分类</td> <td>图书名称</td> <td>作者</td> <td>出版社</td> <td>操作</td> <td>详情</td> <td>删除</td> <td>修改</td> </tr> <c:forEach items="${books}" var="book"> <tr> <td>${book.book_code}</td> <td>${book.type_name}</td> <td>${book.book_name}</td> <td>${book.book_author}</td> <td>${book.publish_press}</td> <td> <c:if test="${book.is_borrow ==0}">未借阅</c:if> <c:if test="${book.is_borrow ==1}">已借阅</c:if> </td> <td><a href="">详情</a></td> <td><a href="">删除</a></td> <td><a href="">修改</a></td> </tr> </c:forEach> </table> </div> </div> |
- 完成 带条件查询
条件回显
- 在servlet中将查询条件存放到session
- 页面显示条件的数据 时从session中取出来做判断显示
- 分页的实现
//点击上一页 下一页… 提交查询的表单
完整代码:
index.jsp
<%@ page language="java" 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>Insert title here</title> </head> <body> <jsp:forward page="bookServlet.do?choose=1" /> </body> </html> |
booklist.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!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>Insert title here</title> <style type="text/css"> #div { width: 800px; height: 600px; margin: 0px auto; border: 1px solid red; } </style> <script type="text/javascript" src="js/jquery-1.8.3.js"></script> <script type="text/javascript"> function doPage(pageno){ //给查询表单的当前页码数 赋值 $("input[name='pageno']").val(pageno); //提交查询表单 $("#query").submit(); }
</script> </head> <body> <div id="div"> <h1 style="text-align: center;">图书借阅系统</h1> <form id="query" action="bookServlet.do" method="post" style="text-align: center;"> 图书分类<select name="booktypeid"> <option value="0">全部</option> <c:forEach items="${bookTypes}" var="bookType"> <option value="${bookType.id}" <c:if test="${bookType.id==booktypeid}">selected="selected" </c:if>>${bookType.type_name }</option> </c:forEach> </select> 图书名称<input type="text" name="bookname" value="${bookname}" > 是否借阅<select name="borrow"> <option value="-1">请选择</option>
<option value="0" <c:if test="${borrow==0}">selected="selected"</c:if> >未借阅</option> <option value="1" <c:if test="${borrow==1}">selected="selected"</c:if> >已借阅</option> </select> <input type="hidden" name="choose" value="1"> <input type="hidden" name="pageno" value="1"> <input type="submit" value="查询"> </form> <div style="margin: 0px auto; width: 630px;"> <table border="1"> <tr> <td>图书编号</td> <td>图书分类</td> <td>图书名称</td> <td>作者</td> <td>出版社</td> <td>操作</td> <td>详情</td> <td>删除</td> <td>修改</td> </tr> <c:forEach items="${books}" var="book"> <tr> <td>${book.book_code}</td> <td>${book.type_name}</td> <td>${book.book_name}</td> <td>${book.book_author}</td> <td>${book.publish_press}</td> <td><c:if test="${book.is_borrow ==0}">未借阅</c:if> <c:if test="${book.is_borrow ==1}">已借阅</c:if></td> <td><a href="">详情</a></td> <td><a href="">删除</a></td> <td><a href="">修改</a></td> </tr> </c:forEach> <tr> <td colspan="9"><a href="javascript:doPage(${pageBean.pageNo});">首页</a> <a href="javascript:doPage(${pageBean.pageNo -1});">上一页</a> <a href="javascript:doPage(${pageBean.pageNo +1});">下一页</a> <a href="javascript:doPage(${pageBean.totalPage});">末页</a> ${pageBean.pageNo}/${pageBean.totalPage}页 <input type="text" name="pageNo" id="pageNo"> <button onclick="doPage($('#pageNo').val())" >go</button></td> </tr>
</table> </div>
</div> </body> </html> |
Servlet
package com.demo.servlet;
import java.io.IOException; import java.io.PrintWriter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List;
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 javax.servlet.http.HttpSession;
import com.demo.pojo.Book; import com.demo.pojo.BookType; import com.demo.service.BookService; import com.demo.service.BookTypeService; import com.demo.service.impl.BookServiceImpl; import com.demo.service.impl.BookTypeServiceImpl; import com.demo.utils.PageBean;
/** * Servlet implementation class BookServlet */ @WebServlet("/bookServlet.do") public class BookServlet extends HttpServlet { private static final long serialVersionUID = 1L;
BookService bookService = new BookServiceImpl(); BookTypeService bookTypeService = new BookTypeServiceImpl();
/** * @see HttpServlet#HttpServlet() */ public BookServlet() { super(); // TODO Auto-generated constructor stub }
/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response); }
/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // jsp的操作流程4个字 取调存转 // 设置request接收客户端中文参数乱码问题 request.setCharacterEncoding("utf-8"); String choose = request.getParameter("choose"); switch (choose) { case "1": // 查询 System.out.println("进入了servlet中查询的方法"); // 查询图书类型 queryBookType(request, response); // 查询图书 queryBook(request, response); break; case "2": addBook(request, response); break; default: break; }
}
/** * 查询图书类型 * * @param request * @param response * @throws ServletException * @throws IOException */ protected void queryBookType(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 调用service层的方法 List<BookType> bookTypes = bookTypeService.queryAll(); // 存 HttpSession session = request.getSession(); session.setAttribute("bookTypes", bookTypes);
}
protected void queryBook(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 取调存转 String booktypeid = request.getParameter("booktypeid"); String bookname = request.getParameter("bookname"); String borrow = request.getParameter("borrow"); String pageno = request.getParameter("pageno"); int booktypeid1 = 0; if (booktypeid != null && !"".equals(booktypeid)) { booktypeid1 = Integer.parseInt(booktypeid); } int borrow1 = -1;//0代表未 借阅 if (borrow != null && !"".equals(borrow)) { borrow1 = Integer.parseInt(borrow); }
int pageno1 = 1; if (pageno != null && !"".equals(pageno)) { pageno1 = Integer.parseInt(pageno); }
// 查询总行数 int count = bookService.bookCount(booktypeid1, bookname, borrow1); System.out.println("总行数为"+count);
// 创建分页工具类的对象 PageBean<Book> pageBean = new PageBean<Book>(); pageBean.setPageSize(3);// 每页显示的行数 pageBean.setRows(count); // null 注意 pageno要检测是否为null 为null 报 NumberFromatException pageBean.setPageNo(pageno1); // 获取分页的第一个参数 int first = (pageBean.getPageNo() - 1) * pageBean.getPageSize(); // 调用service层 将 查询的条件及 limit的2个参数传递过去 List<Book> books = bookService.queryBook(booktypeid1, bookname, borrow1, first, pageBean.getPageSize()); pageBean.setLists(books);
// 存 HttpSession session = request.getSession(); session.setAttribute("books", books); session.setAttribute("username", "zhuyin");
//将 查询的条件存放到作用域 用于页面的数据回显 session.setAttribute("booktypeid", booktypeid); session.setAttribute("bookname", bookname); session.setAttribute("borrow", borrow); //将当前页码数和总页数存放到session 2个值都是PageBean的属性 直接存 PageBean session.setAttribute("pageBean", pageBean);
// 转 response.sendRedirect("booklist.jsp");
}
public void addBook(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 通过jsp的内置对象 request获取 request.getParameter("标签name属性值") String code = request.getParameter("code"); String bookname = request.getParameter("bookname"); String booktypeid = request.getParameter("booktypeid"); String press = request.getParameter("press"); String author = request.getParameter("author"); String publishdate = request.getParameter("publishdate");
System.out.println("bookname" + bookname);
// 创建book类的对象 将获取的值赋给对象 Book book = new Book(); book.setBook_author(author); book.setBook_code(code); book.setBook_name(bookname); book.setBook_type(Integer.parseInt(booktypeid)); book.setIs_borrow(0); book.setPublish_press(press);
// 格式需要转换 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date = null; try { date = sdf.parse(publishdate); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } book.setPublish_date(date);
// 调用service
int num = bookService.addBook(book); // 根据受影响的行数 打印js提示 并跳转页面 PrintWrite 对象 // response 是jsp9大内置对象之一 服务器给客户端的回馈 response // 设置response 响应的类型和编码格式 解决 提示中文乱码 response.setContentType("text/html; charset=UTF-8"); PrintWriter pWriter = response.getWriter(); if (num > 0) { pWriter.write("<script type='text/javascript' >alert('新增成功');location.href='success.jsp'</script>"); } else { pWriter.write("<script type='text/javascript' >alert('新增失败');location.href='error.jsp'</script>"); }
} } |