servlet 分页搜索

包设置

在这里插入图片描述

FindByPageServlet代码

package com.zhongruan.servlet;

import com.zhongruan.model.User;
import com.zhongruan.pojo.PageInfo;
import com.zhongruan.service.IUserService;
import com.zhongruan.service.impl.UserServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

public class FindByPageServlet extends HttpServlet {
   @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session=request.getSession();
        String searchname=(String) session.getAttribute("searchname");
        String c=request.getParameter("currentPage");
        int currentPage=Integer.parseInt(c);
        String s=request.getParameter("size");
        int size=Integer.parseInt(s);
        IUserService userService=new UserServiceImpl();
        PageInfo pageInfo=null;
        pageInfo=userService.findByPage(searchname,currentPage,size);

        session.setAttribute("pageInfo",pageInfo);
        request.getRequestDispatcher("allUser.jsp").forward(request,response);

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String searchname=request.getParameter("searchname");
        int currentPage=1;
        int size=5;
        IUserService userService=new UserServiceImpl();
        PageInfo pageInfo=null;
        pageInfo=userService.findByPage(searchname,currentPage,size);
        HttpSession session=request.getSession();
        session.setAttribute("pageInfo",pageInfo);
        session.setAttribute("session",session);
        request.getRequestDispatcher("allUser.jsp").forward(request,response);
    }



}

UserDaoImpl代码

package com.zhongruan.dao.impl;

import com.zhongruan.dao.IUserDao;
import com.zhongruan.model.User;
import com.zhongruan.util.DBUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import java.util.ArrayList;
import java.util.List;

public class UserDaoImpl implements IUserDao {
    @Override
    public User findUserByname(String username) {
        ResultSet resultSet=null;
        PreparedStatement statement=null;
        Connection connection=null;
        User user=null;
        try {
            connection = DBUtil.getConnection();
            //3.写sql
            //查询
            String sql = "select * from tb_user where username=?";

            //4.得到statement对象,
            statement = connection.prepareStatement(sql);
            statement.setString(1,username);
            //5.执行sql
            resultSet = statement.executeQuery();
            //6.处理结果集
            while (resultSet.next()) {
                user=new User();
                user.setUsername(resultSet.getString(2));
                user.setPassword(resultSet.getString(3));

            }

        }catch (Exception e){
            e.printStackTrace();
        }finally{
            //7.关闭资源
            DBUtil.closeAll(resultSet,statement,connection);
        }
        return  user;
    }



    @Override
    public List<User> findAll(){
        List<User> users=new ArrayList<>();
        Connection connection=null;
        PreparedStatement statement=null;
        ResultSet resultSet=null;
        try {
            connection=DBUtil.getConnection();
            String sql="select * from tb_user";
            statement=connection.prepareStatement(sql);
            resultSet=statement.executeQuery();
            while (resultSet.next()) {
                User user=new User();
                user.setId(resultSet.getInt(1));
                user.setUsername(resultSet.getString(2));
                user.setPassword(resultSet.getString(3));
                users.add(user);
            }
        }catch (Exception e){
            e.printStackTrace();

        }
        return users;
    }



    @Override
    public void delete(Integer id) {
        Connection connection=null;
        PreparedStatement statement=null;
        try{
            connection=DBUtil.getConnection();
            statement=connection.prepareStatement("delete from tb_user where id=?");
            statement.setInt(1,id);
            statement.executeUpdate();
        }catch (ClassNotFoundException e){
            e.printStackTrace();
        }catch (Exception e){
            e.printStackTrace();
        }finally {

            DBUtil.closeAll(null,statement,connection);
        }

    }

    @Override
    public void add(String username, String password) {
        PreparedStatement statement = null;
        Connection connection = null;
        try{
            connection = DBUtil.getConnection();
            statement = connection.prepareStatement("insert into tb_user(username,password)values(?,?)");
            statement.setString(1, username);
            statement.setString(2, password);
            statement.executeUpdate();
        }catch (ClassNotFoundException e){
            e.printStackTrace();
        } catch (Exception e){
            e.printStackTrace();
        }finally {
            DBUtil.closeAll(null, statement, connection);

        }

    }

    @Override
    public void update(int id, String username, String password) {
        Connection connection = null;
        PreparedStatement statement = null;

        try {
            connection=DBUtil.getConnection();
            String sql="update tb_user set username=?,password=? where id=?";
            statement=connection.prepareStatement(sql);
            statement.setInt(3,id);
            statement.setString(1,username);
            statement.setString(2,password);
            statement.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        }
        finally {
            DBUtil.closeAll(null,statement,connection);
        }

    }

    @Override
    public User findUserById(int id) {
        ResultSet resultSet=null;
        PreparedStatement statement=null;
        Connection connection=null;
        User user=null;
        try {
            connection = DBUtil.getConnection();
            //3.写sql
            //查询
            String sql = "select * from tb_user where id=?";

            //4.得到statement对象,
            statement = connection.prepareStatement(sql);
            statement.setInt(1,id);
            //5.执行sql
            resultSet = statement.executeQuery();
            //6.处理结果集
            while (resultSet.next()) {
                user=new User();
                user.setId(resultSet.getInt(1));
                user.setUsername(resultSet.getString(2));
                user.setPassword(resultSet.getString(3));

            }

        }catch (Exception e){
            e.printStackTrace();
        }finally{
            //7.关闭资源
            DBUtil.closeAll(resultSet,statement,connection);
        }
        return  user;
    }

    @Override
    public List<User> findByPage(String username,int start, int size) {
        List<User> users=new ArrayList<>() ;
        ResultSet resultSet=null;
        PreparedStatement statement=null;
        Connection connection=null;
        String sql=null;
        try {
            connection = DBUtil.getConnection();
            //3.写sql
            //查询
            if (username==null){
                sql = "select * from tb_user limit ?,?";
                statement = connection.prepareStatement(sql);
                statement.setInt(1,start);
                statement.setInt(2,size);
            }else {
                sql = "select * from tb_user where username like ? limit ?,?";
                //4.得到statement对象,
                statement = connection.prepareStatement(sql);
                statement.setString(1,"%"+username+"%");
                statement.setInt(2,start);
                statement.setInt(3,size);
            }

            //5.执行sql
            resultSet = statement.executeQuery();
            //6.处理结果集
            while (resultSet.next()) {
                User user=new User();
                user.setId(resultSet.getInt(1));
                user.setUsername(resultSet.getString(2));
                user.setPassword(resultSet.getString(3));
                users.add(user);

            }

        }catch (Exception e){
            e.printStackTrace();
        }finally{
            //7.关闭资源
            DBUtil.closeAll(resultSet,statement,connection);
        }
        return users ;
    }


    @Override
    public int selectCount() {
        List<User> users=new ArrayList<>() ;
        ResultSet resultSet=null;
        PreparedStatement statement=null;
        Connection connection=null;
        int count=0;
        try {
            connection = DBUtil.getConnection();
            //3.写sql
            //查询
            String sql = "select count(*)from tb_user";

            //4.得到statement对象,
            statement = connection.prepareStatement(sql);
            //5.执行sql
            resultSet = statement.executeQuery();
            //6.处理结果集
            while (resultSet.next()) {
           count=resultSet.getInt(1);

            }

        }catch (Exception e){
            e.printStackTrace();
        }finally{
            //7.关闭资源
            DBUtil.closeAll(resultSet,statement,connection);
        }
        return count ;
    }
}



IUserDao代码

package com.zhongruan.dao;

import com.zhongruan.model.User;

import java.util.List;

public interface IUserDao {
    User findUserByname(String username);
    List<User> findAll();

    void delete(Integer id);
    void add(String username, String password);
    void update(int id,String username,String password);
    User findUserById(int id);
    List<User>findByPage(String username,int start,int size);
    int selectCount();

}

PageInfo代码

package com.zhongruan.pojo;

import com.zhongruan.model.User;

import java.util.List;

public class PageInfo {
    private int currentPage;
    private int size;
    private List<User> list;
    private int totalPage;
    private int totalCount;

    public int getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }

    public List<User> getList() {
        return list;
    }

    public void setList(List<User> list) {
        this.list = list;
    }

    public int getTotalPage() {
        return totalPage;
    }

    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }

    public int getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }

    @Override
    public String toString() {
        return "PageInfo{" +
                "currentPage=" + currentPage +
                ", size=" + size +
                ", list=" + list +
                ", totalPage=" + totalPage +
                ", totalCount=" + totalCount +
                '}';
    }
}

IUserService 代码

package com.zhongruan.service;

import com.zhongruan.model.User;
import com.zhongruan.pojo.PageInfo;

import java.util.List;

public interface IUserService {
    Boolean login(String username, String password);
    
    void delete(Integer id2);

    void add(String username, String password);
    
    void update(int id, String username, String password);
    User findUserById(int id);
    
    
    
    List<User> findAll();
    
    PageInfo findByPage( String username,int currentPage,int size);


}

web 代码

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>com.zhongruan.servlet.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/login</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>DeleteServlet</servlet-name>
        <servlet-class>com.zhongruan.servlet.DeleteServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>DeleteServlet</servlet-name>
        <url-pattern>/delete</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>AddServlet</servlet-name>
        <servlet-class>com.zhongruan.servlet.AddServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>AddServlet</servlet-name>
        <url-pattern>/add</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>ToUpdateServlet</servlet-name>
        <servlet-class>com.zhongruan.servlet.ToUpdateServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ToUpdateServlet</servlet-name>
        <url-pattern>/toupdate</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>UpdateServlet</servlet-name>
        <servlet-class>com.zhongruan.servlet.UpDateServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>UpdateServlet</servlet-name>
        <url-pattern>/update</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>FindPage</servlet-name>
        <servlet-class>com.zhongruan.servlet.FindByPageServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>FindPage</servlet-name>
        <url-pattern>/findByPage</url-pattern>
    </servlet-mapping>

</web-app>
单从表现层来说分页不是一个复杂的工作,稍微理一下思路,处于不同competence level的同学应该都能自己搞出来。 以上面的文章列表分页为例,我觉得分页有两点重要的, 一是:分页我们必须首先自己搞清楚,文章总数、每页显示文章数(页大小)、页数 二是:如何做好页脚的分页导航条 实际应用中,文章总数这个值我们从数据库可以得到;每页显示的文章数即分页的页大小可以自己定义;页数我们可以通过下面的个表达式简单得出。 假设: int pageSize = 10; //分页大小 int totalPosts = PagingDAO.entryList.size(); //总文章数 int totalPages = totalPosts/pageSize + ((totalPosts%pageSize)>0?1:0); //计算得出的总页数 每页的文章怎么取出来? 知道分页的大小之后,我们生成了页好的选取下拉框,每次选择第几页的时候,都会向Servlet传递当前选择页号的参数,这样Servlet调用后面的DAO相应的方法,取得文章列表信息,再回传到JSP以供显示。 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> page Size : ${pageSize} <br /> Total Posts: ${totalPosts} <br /> Total Pages: ${totalPages} <br /> Current Page: ${pageNumber} <hr /> <table> <thead> <tr align="center"> <td width="10%">Article ID</td> <td width="70%">Article Title</td> <td colspan="3">Actions</td> </tr> </thead> <tbody> <c:forEach items="${entryList}" var="entry"> <tr align="center"> <td>${entry.entryID}</td> <td>${entry.title}</td> <td><a href="viewEntry?entryID=${entry.entryID}">View</a></td> <td><a href="editEntry?entryID=${entry.entryID}">Edit</a></td> <td><a href="deleteEntry?entryID=${entry.entryID}">Delete</a></td> </tr> </c:forEach> </tbody> <tfoot> <tr align="center"> <td colspan="5"> <jsp:include page="paging_footer.jsp"></jsp:include> </td> </tr> </tfoot> </table> <hr/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值