图书管理系统MVC模式_分页(EL&JSTL)

本文介绍了一个简单的用户登录验证及书籍查询系统实现方案,包括登录页面设计、Servlet控制器处理流程、数据库查询逻辑及结果展示。

登陆页面login.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>登陆页面</title>
</head>
<body>
<%
String flag = (String)request.getAttribute("flag");
if(flag!=null){
    out.print("<div style='font-size:36px;color:red;text-align:center'>"+flag+"</div>");
}
%>
<form action="LoginServlet01" method="get">
    <table align="center" width="500px" frame="box" rules="rows">
        <tr><td>用户名</td><td><input type="text" size="20" name="username"></td></tr>
        <tr><td>密码</td><td><input type="password" size="20" name="password"></td></tr>
        <tr><td colspan="2"><input type="submit" value="登录"></td></tr>
    </table>
</form>
</body>
</html>

model包下建Book.java

package model;

public class Book {
    private String id;
    private String name;
    private String author;
    private String publish;
    private Double price;
    private String des;

    public Book() {
        super();
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    public String getPublish() {
        return publish;
    }
    public void setPublish(String publish) {
        this.publish = publish;
    }
    public Double getPrice() {
        return price;
    }
    public void setPrice(Double price) {
        this.price = price;
    }
    public String getDes() {
        return des;
    }
    public void setDes(String des) {
        this.des = des;
    }
}

注:其中调用JdbcUtil.java工具类,详细参考本人优快云博客文章JdbcUtil工具类

login.jsp跳转controller包下的LoginServlet01.java

package controller;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
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 org.junit.Test;

import JdbcUtil.JdbcUtil;
import model.Book;

/**
 * Servlet implementation class LoginServlet
 */
@WebServlet("/LoginServlet01")
public class LoginServlet01 extends HttpServlet {
    JdbcUtil jdbc=new JdbcUtil();
    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置请求的编码格式
        request.setCharacterEncoding("UTF-8");
        String username=request.getParameter("username");
        String passward=request.getParameter("password");

        boolean flag=query(username,passward);

        if(flag) {
            //将request转为session保存用户名
            request.getSession().setAttribute("username", username);
            //页面跳转QueryServlet作页码查询控制操作
            request.getRequestDispatcher("QueryServlet").forward(request,response);
        }else {
            request.setAttribute("flag", "用户名或密码错误,请重新输入");
            request.getRequestDispatcher("login.jsp").forward(request, response);
        }
    }


    public List<Book> query_book() {
        try {
            String sql="select * from tb_book";
            ResultSet rs=jdbc.Query(sql,null);
            List<Book> books=new ArrayList<Book>();
            while(rs.next()) {
                Book book=new Book();
                book.setId(rs.getString(1));
                book.setName(rs.getString(2));
                book.setAuthor(rs.getString(3));
                book.setPublish(rs.getString(4));
                book.setPrice(rs.getDouble(5));
                book.setDes(rs.getString(6));
                books.add(book);
            }
            return books;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            jdbc.close();
        }
        return null;
    }


    public boolean query(String username,String password) {
        try {

            String sql="select * from tb_users where username=? and password=?";
            ResultSet rs=jdbc.Query(sql, username,password);
            if(rs.next()) {
                return true;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }   finally {
            jdbc.close();
        }
        return false;
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

flag为false时跳转QueryServlet(注解的跳转地址),同在controller下的QueryServlet.java

package controller;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
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 org.junit.Test;

import JdbcUtil.JdbcUtil;
import model.Book;
import util.CommonUtil;

/**
 * Servlet implementation class LoginServlet
 */
@WebServlet("/QueryServlet")
public class QueryServlet extends HttpServlet {
    JdbcUtil jdbc=new JdbcUtil();
    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            String index=request.getParameter("pageIndex");
            int pageindex=1;
            if(index!=null) {
                pageindex=Integer.parseInt(index);
            }
            //传递页码到jsp页面
            request.setAttribute("pageIndex", pageindex);

            String sql="select * from tb_book limit " +(pageindex-1)*CommonUtil.pageSize+","+CommonUtil.pageSize+"";
            ResultSet rs=jdbc.Query(sql,null);
            List<Book> books=new ArrayList<Book>();
            while(rs.next()) {
                Book book=new Book();
                book.setId(rs.getString(1));
                book.setName(rs.getString(2));
                book.setAuthor(rs.getString(3));
                book.setPublish(rs.getString(4));
                book.setPrice(rs.getDouble(5));
                book.setDes(rs.getString(6));
                books.add(book);
            }

            //求总页数
            int totalCount=totalCount();
            int totalPage=totalCount%CommonUtil.pageSize==0?totalCount/CommonUtil.pageSize:totalCount/CommonUtil.pageSize+1;

            request.setAttribute("pageIndex", pageindex);
            request.setAttribute("totalPage", totalPage);
            //传递列表结果集到JSP页面
            request.setAttribute("books", books);
            //传递列表的结果集到JSP页面
            request.getRequestDispatcher("index.jsp").forward(request, response);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            jdbc.close();
        }

    }

    private int totalCount() {
        try {
            String sql="select count(*) from tb_book";
            ResultSet rs=jdbc.Query(sql, null);
            int totalCount=0;
            if(rs.next()) {
                totalCount=rs.getInt(1);
            }
            return totalCount;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return 0;
    }


    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

util包下的CommonUtil.java设置每页显示的条数

package util;

public class CommonUtil {
    public static int pageSize=5;//每页显示5条
}

成功页面index.jsp(EL&JSTL)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*,model.*"%>
<%@ 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>成功登陆页面</title>
</head>
<body>
    欢迎用户:${username }&nbsp;&nbsp;登陆系统!!!
    <table align="center" frame="box" rules="all" width="600px">
        <thead>
        <th>id</th>
        <th>name</th>
        <th>author</th>
        <th>publish</th>
        <th>price</th>
        <th>des</th>
        </thead>
        <tbody>
        <c:forEach items="${books}" var="book">
        <tr>
            <td>${book.id }</td>
            <td>${book.name }</td>
            <td>${book.author }</td>
            <td>${book.publish }</td>
            <td>${book.price }</td>
            <td>${book.des }</td>
        </tr>
        </c:forEach>
        </tbody>
    </table>
    <a href="QueryServlet?pageIndex=1">首页</a>&nbsp;&nbsp;

    <c:if test="${pageIndex!=1 }">
    <a href="QueryServlet?pageIndex=${pageIndex-1 }">上一页</a>&nbsp;&nbsp;
    </c:if>

    <!--设置中间  -->
    <c:forEach begin="1" end="${totalPage }" varStatus="status">
        <a href="QueryServlet?pageIndex=${status.index }">${status.index }</a>&nbsp;&nbsp;
    </c:forEach>
    ...&nbsp;&nbsp;
    <c:if test="${pageIndex!=totalPage }">
    <a href="QueryServlet?pageIndex=${pageIndex+1 }">下一页</a>&nbsp;&nbsp;
    <a href="QueryServlet?pageIndex=${totalPage }">尾页</a>&nbsp;&nbsp;
    </c:if>
</body>
</html>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值