[JSP] 게시판 리스트 구현하기

 

jsp 회원등록,수정,삭제,리스트(CRUD) 로직 구현하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
lse if (command.equals("/board/boardList.do")) {
            System.out.println("글쓰기리스트");
            
            
            String page = request.getParameter("page");      //글쓰기 게시판 페이지 !!
            if(page==null) page="1";
            int pagex = Integer.parseInt(page);
            
            
            
            // 글쓰기게시판 리스트에서 찾을 내용을 keyword 값으로 받아서 
            // 계속 둘려줌
            
            String keyword =request.getParameter("keyword");
            if(keyword==null) keyword = "";
            
            System.out.println("keyword = " + keyword);
            
            // 글쓰기 게시판에서 제목으로 검색이냐 , 작성자로 검색이냐를 알려줌
            
            
            String searchType = request.getParameter("searchType");
            if(searchType==null) searchType = "";
            
            System.out.println("searchType =" +searchType);
            
            
            // 받아온 페이지값과 keyword 값 searchType 을 새로운 객체 생성하여 값을 저장해줌!!
            
            SearchCriteria scri = new SearchCriteria();  
            scri.setPage(pagex);            
            scri.setSearchType(searchType);
            scri.setKeyword(keyword);
            
            System.out.println("scri="+scri);
            
            // 검색창에서 전송해서 받은 keyword 값을 넣어서 글 개수를 출력하는 부문...
            
            BoardDao bd = new BoardDao();
            int result = bd.boardTotal(scri);
            
            
            System.out.println("result="+result);
            
            //  페이지 메이커 클래스에서 서치타입 scri 값을 넣어주고 전체 게시물 값도 확인해줌....
            
            PageMaker pm = new PageMaker();
            pm.setScri(scri);
            pm.setTotalCount(result); // << Dao  boardtotal 로직도 같이 실행됨.
            
            System.out.println("pm"+pm);
            
            System.out.println("----------------------------------------");
                
            // scri 추가로 넣어줌.. 값을 sql 구문도 변경.
            // MemberDao  boardlistall sql 구문 변경 필수.
            
            ArrayList<BoardVo> alist  = bd.boardSelectAll(scri);
            
           
            
            request.setAttribute("pm", pm);
                    
            
            request.setAttribute("alist", alist);
            
            System.out.println("alist="+alist);
            System.out.println("pm="+pm);
            
        
            RequestDispatcher rd = request.getRequestDispatcher("/board/boardList.jsp");
            rd.forward(request, response);
        
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
    public ArrayList<BoardVo> boardSelectAll(SearchCriteria scri){    // SearchCriteria scri 값을 안넣어주면 
        ArrayList<BoardVo> alist = new ArrayList<BoardVo>();          // 29번 scri . << 이거 안됌 주의
        
        ResultSet rs = null;
        
        String str="";
            if(scri.getSearchType().equals("subject")){
                str = "and subject like ?";
            }else {
                str="and writer like  ?";
            }
        
        
        
        
        // "SELECT * FROM BOARD where delyn='N' ORDER BY originbidx DESC,depth asc"; ( 기존 로직)
        
        
            String sql = "SELECT * FROM ("
                    + "    SELECT ROWNUM AS rnum, A.* FROM ("
                    + "        select * from board where delyn='N' "+str+" order by originbidx desc, depth ASC)A "
                    + "    )B WHERE rnum BETWEEN ? AND ? ";
        
        try {
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1"%"+scri.getKeyword()+"%" );
            pstmt.setInt(2, (scri.getPage()-1)*15+1);
            pstmt.setInt(3, scri.getPage()*15);
            rs = pstmt.executeQuery();
            
            
            while(rs.next()) {
                
            
                BoardVo bv = new BoardVo();
                bv.setBidx(rs.getInt("bidx"));
                bv.setSubject(rs.getString("subject"));
                bv.setWriter(rs.getString("writer"));
                bv.setIp(rs.getString("ip"));
                bv.setWriteday(rs.getString("writeday"));
                bv.setLevel_(rs.getInt("level_"));
                bv.setHit(rs.getInt("hit"));           // 조회수 증가시키기
                alist.add(bv);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
            
        
        
        return alist;
    }
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="damain.BoardVo" %> 
<%@page import="damain.PageMaker" %>
    
    <%
    
    ArrayList<BoardVo> alist = (ArrayList<BoardVo>)request.getAttribute("alist");
    
    PageMaker pm = (PageMaker)request.getAttribute("pm");
    
    
    %>
    
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
#btn{
float: right;
margin-right: 40px;
}
 
#btn1{
margin-left: 30px;
}
 
body{
display:flex;
text-align:center;
justify-content: center;
align-items: center;
 
}
 
#main{
margin-top: 150px;
 
}
 
</style>
 
<!-- FONT AWE -->
<script src="https://kit.fontawesome.com/6c060c00b1.js" crossorigin="anonymous"></script>
 
<!-- BOOT STRAP -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
</head>
<body>
 
 
 
 
  <div id="main">
        <h1 style="text-align: center; ">고객센터</h1>
        <hr><br>
        <button type="button" class="btn btn-primary" id="btn1" onclick="location.href='<%=request.getContextPath()%>/'">홈으로</button>
        <button type="button" class="btn btn-info" id="btn" onclick="location.href='<%=request.getContextPath()%>/board/boardWrite.do'">글쓰기</button>
        <form name="frm" action="<%=request.getContextPath() %>/board/boardList.do" method="post">
        <table style="text-align: right;margin-top: 30px;">
        <tr>
        <td width="1000px;">
           <select name="searchType">
           <option value="subject">제목</option>
           <option value="writer">작성자</option>
           </select>
         </td>
         <td>
         <input type="text" name="keyword" size="20">
         </td>
         <td>
         <input type="submit" name="submit" value="검색">
         </td>
        </tr>
    </table> 
        </form>
        
        
        <br><br>
        <table class="table table-hover" style="width: 1200px; text-align: center;" id="table1">
            <thead>
                <tr>
                    <th>번호</th>
                    <th>제목</th>
                    <th>글쓴이</th>
                    <th>작성일</th>
                    <th>조회수</th>
                </tr>
            </thead>
            
            <% for(BoardVo bv : alist) {  %>
            <tbody>
                <tr>
                    <td><%=bv.getBidx() %></td>
                    <td>
                    
                    <%
                    
                    for (int i=1; i<= bv.getLevel_(); i++) { 
                        out.println("&nbsp;&nbsp;");
                        if (i == bv.getLevel_()){
                            out.println("ㄴ");
                        }    
                    }        
                    %>
                    
                     
                    
                    <a href="<%=request.getContextPath()%>/board/boardContent.do?bidx=<%=bv.getBidx()%>"><%=bv.getSubject() %></a>
                    
                    </td>
                    
                    
                    <td><%=bv.getWriter() %></td>
                    <td><%=bv.getWriteday().substring(0,16) %></td>
                    <td><%=bv.getHit() %></td>
                </tr>
           
            </tbody>
            <% } %>
        </table>
          
 
 
 
  
<
        <br><br>
        <nav aria-label="Page navigation example">
            <ul class="pagination justify-content-center">
              <li class="page-item">
              
              <%  
              
              String keyword = pm.getScri().getKeyword();            // boardtotal 결과 값 키워드 가져오기
              String searchType = pm.getScri().getSearchType();      //   / /      결과 값 서치타입 가져오기
              
              
              
              
              if (pm.isPrev() == true){
                  out.println("<a class=page-link  href='"+request.getContextPath()+"/board/boardList.do?page="+(pm.getStartPage()-1)+"&keyword="+keyword+"&searchType="+searchType+"'>◀</a>");     }
              %>
              
              </li>
              <li class="page-item" style="display: flex;">
              <%
     
     for(int i = pm.getStartPage(); i<=pm.getEndPage(); i++){
         out.println("<a class=page-link href='"+request.getContextPath()+"/board/boardList.do?page="+i+"&keyword="+keyword+"&searchType"+searchType+"'>"+i+"</a>");
     }
     
               %>
              </li>
          
              <li class="page-item">
              
                <%
     
     if(pm.isNext()&&pm.getEndPage()>0){
         out.println("<a class=page-link href='"+request.getContextPath()+"/board/boardList.do?page="+(pm.getEndPage()+1)+"&keyword="+keyword+"&searchType="+searchType+"'>▶</a>");
     }
     
               
                %>
                
              </li>
            </ul>
        </nav>
         
    </div>
</body>
</html>
 
<!-- class="page-link" -->
cs