jsp04

该博客介绍了如何在JSP中利用EL表达式存取session数据,进行条件查询,并通过JSTL实现页面上的流程控制和条件回显。详细讲解了在Servlet中处理查询条件,以及如何实现分页功能,包括上一页和下一页的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    1. 思路分析

    1. 代码编写
  • 继续完成第四步骤将查询的结果集存放到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>&nbsp;

   图书名称<input type="text" name="bookname">&nbsp;

   是否借阅<select name="borrow">

   <option value="-1">请选择</option>

    <option value="0">未借阅</option>

    <option value="1">已借阅</option>

   </select>&nbsp;

   <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>

 

  • 完成 带条件查询

条件回显

  1. 在servlet中将查询条件存放到session

  1. 页面显示条件的数据 时从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>&nbsp; 图书名称<input type="text" name="bookname" value="${bookname}" >&nbsp; 是否借阅<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>&nbsp;

           <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">&nbsp;

                     <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>");

                 }

 

        }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值