1. 程式人生 > >Web - 根據條件查詢使用者資訊(篩選)並展示.

Web - 根據條件查詢使用者資訊(篩選)並展示.

準備工作就不在介紹了, 可以參考查詢所有使用者資訊的案例:
https://blog.csdn.net/qq_42986107/article/details/83117451
在這裡插入圖片描述

Servlet -> Condifition.java

@WebServlet("/selectBycondition")
public class ConditionServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html; charset=utf-8");
        // 獲取傳遞過來的引數(查詢條件)
        String sex = request.getParameter("sex");
        String address = request.getParameter("address");

        // 建立UserService物件 , 並呼叫其方法.1
        UserService us = new UserService();
        List<User> user = us.selectByCondition(sex,address);

        // 將資訊設定到域中
        request.setAttribute("user",user);
        // 將選擇的條件也設定到域中 , 方便回顯.
        request.setAttribute("sex",sex);
        request.setAttribute("address",address);
        // 請求轉發到list頁面 ,進行展示.
        request.getRequestDispatcher(request.getContextPath()+"/list.jsp").forward(request,response);
    }
}

Service層 -> UserService.java

public class UserService {
    // 呼叫UserDao物件中的方法 ,
    UserDao ud = new UserDao();
    
    // 根據條件查詢資料.
    public List<User> selectByCondition(String sex, String address) {
        return ud.selectByCondition(sex,address);
    }
}

Dao層 -> UserDao.java

public class UserDao { 
    // 根據條件 , 查詢資料.
    public List<User> selectByCondition(String sex, String address) {
        // 建立QueryRunner物件.
        QueryRunner qr = new QueryRunner(DataSourceUtil.getDataSource());
        // 建立sql語句.
        String sql = "select * from user where 1=1 ";

        // 建立一個集合 , 對兩個條件進行判斷 , 否和就新增進去.
        List list = new ArrayList();
        // 如果查詢條件不為空 , 就新增查詢條件.
        if (sex!=null&&sex.trim().length()>0){
            sql+=" and sex=? ";
            list.add(sex);
        }

        if(address!=null&&address.trim().length()>0){
            sql+=" and address=? ";
            list.add(address);
        }
        // 執行sql
        try {
            return qr.query(sql,new BeanListHandler<>(User.class),list.toArray());
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
}

展示頁面 -> list.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<!-- 網頁使用的語言 -->
<html lang="zh-CN">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>使用者資訊管理系統</title>

    <!-- 1. 匯入CSS的全域性樣式 -->
    <link href="resource/css/bootstrap.min.css" rel="stylesheet">
    <!-- 2. jQuery匯入,建議使用1.9以上的版本 -->
    <script src="resource/js/jquery-2.1.0.min.js"></script>
    <!-- 3. 匯入bootstrap的js檔案 -->
    <script src="resource/js/bootstrap.min.js"></script>
    <style type="text/css">
        td, th {
            text-align: center;
        }
    </style>
</head>
<body>
<div class="container">
    <h3 style="text-align: center">使用者資訊列表</h3>
    <table border="1" class="table table-bordered table-hover">
        <tr>
           <td colspan="8">
               <%-- action預設不寫就是本地址 --%>
               <form action="">
                   性別:
                   <select name="sex">
                       <option value="">---請選擇---</option>
                       <%-- 進行資訊回顯.--%>
                       <c:if test="${empty sex}">
                           <option value="男">男</option>
                           <option value="女">女</option>
                       </c:if>
                       <%-- 如果選中男,就回顯男 --%>
                       <c:if test="${sex=='男'}">
                           <option value="男" selected>男</option>
                           <option value="女">女</option>
                       </c:if>

                       <c:if test="${sex=='女'}">
                           <option value="男">男</option>
                           <option value="女" selected>女</option>
                       </c:if>
                   </select>
                   籍貫:<input type="text" name="address" placeholder="城市名稱..." value="${address}" >
                   <input type="submit" value="查詢使用者">
               </form>
           </td>
        </tr>
        <tr class="success">
            <th>編號</th>
            <th>姓名</th>
            <th>性別</th>
            <th>年齡</th>
            <th>籍貫</th>
            <th>QQ</th>
            <th>郵箱</th>
            <th>操作</th>
        </tr>

        <c:forEach items="${user}" var="user">
            <tr>
                <td>${user.id}</td>
                <td>${user.name}</td>
                <td>${user.sex}</td>
                <td>${user.age}</td>
                <td>${user.address}</td>
                <td>${user.qq}</td>
                <td>${user.email}</td>
                <td>
                    <a class="btn btn-default btn-sm" href="update.jsp">修改</a>&nbsp;
                    <a class="btn btn-default btn-sm" href="javascript:;" onclick="userDel(${user.id})">刪除</a>
                </td>
            </tr>
        </c:forEach>

        <tr>
            <td colspan="8" align="center"><a class="btn btn-primary" href="add.jsp">新增聯絡人</a></td>
        </tr>
    </table>
</div>
</body>
</html>