기초공사 (html,css,javascript)

JSTL 적용한 list.jsp코드 본문

게시판

JSTL 적용한 list.jsp코드

에스프레소라떼 2024. 1. 18. 11:37

//list.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page import="java.sql.*" %>

<%@ page import = "java.util.*" %><!-- ArrayList를 사용하기 위한 것. -->
<%@ page import = "com.companyboard.db.*" %>

<!-- 한글오류 해결 따로 빼주어야 함 -->
<% request.setCharacterEncoding("utf-8"); %> 

<%
	// before코드 - 게시글이 담긴 DTO객체들의 리스트를 얻음
	/* ArrayList<BoardDto> dtoList = new BoardDao().selectList(); */
	
	// after - 게시글이 담긴 DTO객체들의 리스트를, request의 속성 "msgList"로 등록
	request.setAttribute("msgList", new BoardDao().selectList());
%>

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="css/import.css">
    <title>LIST</title>
</head>
<body>
    <div class="wrapper" style="padding: 20px;">
        <!-- 페이지 타이틀 -->
        <div class="tit-wrap">
            <h2 class="tit">뉴스&미디어</h2>
        </div>
        <!--// 페이지 타이틀 -->

        <!-- 셀렉트/검색창 -->
        <div class="slt-serch">
            <div class="slt-wrap slt-type01 frm-item">
                <select name="#" id="#" class="slt">
                    <option value="#" selected>전체</option>
                    <option value="#">전체</option>
                    <option value="#">전체</option>
                </select>
            </div>
    
            <div class="inp-btn frm-item">
                <div class="inp-wrap inp-type01">
                    <input type="text" placeholder="내용을 입력하세요" class="inp">
                </div>
                <button type="button" class="btn btn-type01">
                    <span class="btn-txt">검색</span>
                </button>
            </div>
        </div>
        <!-- 셀렉트/검색창 -->
        
        <div class="content">
            <!-- 게시글 목록 -->
            <div class="tbl-wrap tbl-type01">
                <table class="tbl">
                    <caption>뉴스&미디어 게시글 목록</caption>
                    <colgroup>
                        <col class="col1" style="width: 15%;"></col>
                        <col class="col2" style="width: 70%;"></col>
                        <col class="col3" style="width: 15%;"></col>
                        <col class="col3" style="width: 15%;"></col>
                        <col class="col3" style="width: 15%;"></col>
                    </colgroup>
                    <thead>
                        <tr>
                            <th scope="col">번호</th>
                            <th scope="col">제목</th>
                            <th scope="col">작성자</th>
                            <th scope="col">등록일</th>
                            <th scope="col">조회수</th>
                        </tr>
                    </thead>
                    	                   
               <!-- 리스트의 모든DTO 객체의 내용을 화면에 출력-->
               <c:forEach var="msg" items="${msgList}">
                   	<tr>
                   		<td>${msg.id}</td> 
                   		<td> 
                   			<a href="view.jsp?key=${msg.id}">
                   				${msg.btitle}
                   			</a>
                   		</td>
                   		<td>${msg.reguser}</td>
                   		<td>${msg.regdate}</td> 
                   		<td>${msg.hits}</td> 
                   	</tr>
               	 </c:forEach>
               </table>
            </div>
            
            <!--글쓰기 버튼 -->
            <br>
            <div class="write-container">
            	<input type="button" value="글쓰기" class="btn btn-type01 btn-txt" onclick="location.href='write.jsp'">
            </div>
                       
            <!--// 게시글 목록 -->

            <!-- 페이지 네비 -->
            <div class="page-nav-wrap">
                <div class="page-nav">
                    <button type="button" title="처음으로 가기" class="btn-page first"></button>
                    <button type="button" title="이전으로 가기" class="btn-page pre"></button>
                    <ul class="num-list">
                        <li class="btn-page on">
                            <a href="#" class="btn-txt">1</a>
                        </li>
                        <li class="btn-page">
                            <a href="#" class="btn-txt">2</a>
                        </li>
                        <li class="btn-page">
                            <a href="#" class="btn-txt">3</a>
                        </li>
                        <li class="btn-page page-last"><!-- 마지막 목록페이지: .btn-page.page-last -->
                            <a href="#" class="btn-txt" title="마지막 목록페이지">5</a><!-- 마지막 목록페이지: title="마지막 목록페이지" -->
                        </li>
                    </ul>
                    <button type="button" title="다음으로 가기" class="btn-page next"></button>
                    <button type="button" title="마지막으로 가기" class="btn-page last"></button>
                </div>
            </div>
            <!--// 페이지 네비 -->
        </div>
    </div>
</body>
</html>

 

위와 관련된 예제는 290페이지

 

EL을 적용한 list.jsp에서 반복문을 제거하지 못하는 이유는 반복문 때문이다.

프로그램 앞쪽에서 아예 DTO의 ArrayList를 request에 담아두고, 뒤쪽에서는 제일 마지막에 본 forEach 태그를 사용하면된다. 그렇게 하면 ArrayList에 들어있는 DTO를 하나씩  하나씩 꺼내어 출력할 수 있다.

 


// before코드 JSTL적용전 EL코드에서의 list.jsp - 게시글이 담긴 DTO객체들의 리스트를 얻음
/* ArrayList<BoardDto> dtoList = new BoardDao().selectList(); */

// after - 게시글이 담긴 DTO객체들의 리스트를, request의 속성 "msgList"로 등록
request.setAttribute("msgList", new BoardDao().selectList());

 

게시글  리스트가 들어있는 ArrayList를 msgList라는 이름으로 request에 저장한다.

그러고나면 JSTL의 forEach 태그를 이용하여 이 데이터를 모두 출력하도록 수정하면된다. 아래코드

<!-- 리스트의 모든DTO 객체의 내용을 화면에 출력-->
<c:forEach var="msg" items="${msgList}">

<tr>
<td>${msg.id}</td>
<td> <a href="view.jsp?key=${msg.id}"> ${msg.btitle} </a> </td>
<td>${msg.reguser}</td>
<td>${msg.regdate}</td>
<td>${msg.hits}</td>
</tr>

</c:forEach>

msList에는 DTO들의 ArrayList가 있으므로, 이 반복문은 그 ArrayList에서 하나씩 DTO를 꺼내어 msg라는 변수에

넣으며 반복부를 수행한다.

'게시판' 카테고리의 다른 글

JSTL까지 완성한 jsp 모든 코  (0) 2024.01.19
forward  (0) 2024.01.19
EL을 사용한 list.jsp코드  (0) 2024.01.18
Dao Dto 적용된 모든jsp코드  (0) 2024.01.18
모든jsp에 dao적용  (0) 2024.01.18