본문 바로가기

jsp

데이터 검색 및 페이징: 데이터베이스에서 데이터를 검색하고 페이징 처리하는 방법을 배우는 예제.

반응형

데이터 검색 및 페이징 처리는 대용량 데이터를 효율적으로 관리하고 사용자에게 편리한 방식으로 정보를 제공하는 중요한 기능입니다. JSP와 JDBC를 사용하여 데이터베이스에서 데이터를 검색하고 결과를 페이지 단위로 나누어 표시하는 방법을 아래 예제를 통해 설명하겠습니다.

예제 1: 데이터베이스에서 데이터 검색

이 예제에서는 사용자 입력을 기반으로 데이터베이스에서 특정 데이터를 검색합니다.

searchData.jsp

<%@ page import="java.sql.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Search Data</title>
</head>
<body>

<form action="searchData.jsp" method="post">
    Search Keyword: <input type="text" name="keyword">
    <input type="submit" value="Search">
</form>

<%
    String keyword = request.getParameter("keyword");
    if(keyword != null && !keyword.trim().isEmpty()) {
        try {
            // 데이터베이스 연결 설정
            String url = "jdbc:mysql://localhost:3306/YourDatabase";
            String user = "root";
            String password = "rootpassword";

            Class.forName("cohttp://m.mysql.cj.jdbc.Driver");
            Connection con = DriverManager.getConnection(url, user, password);

            // SQL 쿼리 준비
            String sql = "SELECT * FROM YourTable WHERE YourColumn LIKE ?";
            PreparedStatement pstmt = con.prepareStatement(sql);
            pstmt.setString(1, "%" + keyword + "%");

            // 쿼리 실행
            ResultSet rs = pstmt.executeQuery();

            // 검색 결과 출력
            while(rs.next()) {
                out.println("Data: " + rs.getString("YourDataColumn") + "<br>");
            }

            rs.close();
            pstmt.close();
            con.close();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
%>
</body>
</html>

예제 2: 데이터 페이징 처리

이 예제에서는 데이터베이스의 데이터를 페이지 단위로 나누어 표시합니다.

pagingData.jsp

<%@ page import="java.sql.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Data Paging</title>
</head>
<body>

<%
    int page = 1;
    int recordsPerPage = 5;
    if(request.getParameter("page") != null)
        page = Integer.parseInt(request.getParameter("page"));

    try {
        // 데이터베이스 연결 설정
        String url = "jdbc:mysql://localhost:3306/YourDatabase";
        String user = "root";
        String password = "rootpassword";

        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection con = DriverManager.getConnection(url, user, password);

        // 페이징을 위한 SQL 쿼리 준비
        String sql = "SELECT * FROM YourTable LIMIT " + (page-1)*recordsPerPage + "," + recordsPerPage;
        PreparedStatement pstmt = con.prepareStatement(sql);

        // 쿼리 실행
        ResultSet rs = pstmt.executeQuery();

        // 데이터 표시
        while(rs.next()) {
            out.println("Data: " + rs.getString("YourDataColumn") + "<br>");
        }

        rs.close();
        pstmt.close();
        con.close();
    } catch(Exception e) {
        e.printStackTrace();
    }
%>

<!-- 페이지 번호 링크 -->
<%
    for(int i=1; i<=5; i++) {
        out.println("<a href='pagingData.jsp?page=" + i + "'>" + i + "</a> ");
    }
%>

</body>
</html>

관련 전문용어 설명

  • 페이징(Paging): 데이터를 페이지 단위로 나누어 표시하는 방법으로, 대량의 데이터를 효율적으로 관리하고 사용자가 쉽게 탐색할 수 있도록 합니다.
  • PreparedStatement: SQL 쿼리를 실행하기 전에 준비하고, 매개변수를 동적으로 바인딩하는 데 사용되는 객체입니다.
  • LIKE 연산자: SQL에서 사용되며, 특정 패턴과 일치하는 레코드를 검색할 때 사용됩니다. %는 0개 이상의 문자를 나타냅니다.
반응형