728x90
JSTL <c:foreach> , ${sessionScope}태그; 게시물 목록 불러오기
지난 <c:foreach>로는 방명록을 불러오는 코드였다면
아래 코드는 게시판에 게시물을 불러오기 위해 구현한 코드이다.
boardList.jsp
더보기
<!-- 게시물 목록을 불러오기 위한 HTML입니다. -->
<c:forEach items="${bList }" var="bList" varStatus="status">
<tr>
<td>${bList.no }</td>
<td class="text-left"><a href="/site/board?action=read&no=${bList.no }">${bList.title }</a></td>
<td>${bList.name }</td>
<td>${bList.hit }</td>
<td>${bList.regDate }</td>
<c:if test = "${sessionScope.authUser.no == bList.userNo }">
<td><a href="/site/board?action=delete&no=${bList.no }">[삭제]</a></td>
</c:if>
</tr>
</c:forEach>
BoardController.java
더보기
// 게시물 목록을 불러오기 위한 자바 컨트롤러 입니다.
else {
System.out.println("board");
//데이터 가져오기
BoardDao bDao = new BoardDao();
List<BoardVo> bookList = bDao.boardList();
// request에 데이터 추가
request.setAttribute("bList", bookList);
WebUtil.forward(request, response, "/WEB-INF/views/board/list.jsp");
}
BoardDao.java
더보기
// 게시물 목록을 불러오기 위한 자바 DAO입니다.
public List<BoardVo> boardList() {
List<BoardVo> boardList = new ArrayList<BoardVo>();
getConnection();
try {
// 3. SQL문 준비 / 바인딩 / 실행
// SQL문 준비
String query = "";
query += " select b.no no ";
query += " ,b.title title ";
query += " ,b.content content";
query += " ,u.name name ";
query += " ,b.hit hit ";
query += " ,to_char(b.reg_date, 'yyyy-mm-dd hh24:mi:ss') dat ";
query += " ,b.user_no user_no ";
query += " from board b, users u ";
query += " where b.user_no = u.no ";
query += " order by no desc ";
// 바인딩
pstmt = conn.prepareStatement(query);
rs = pstmt.executeQuery();
// 4.결과처리
while (rs.next()) {
int no = rs.getInt("no");
String title = rs.getString("title");
String content = rs.getString("content");
int hit= rs.getInt("hit");
String date = rs.getString("dat");
int userNo = rs.getInt("user_no");
String name = rs.getString("name");
BoardVo bVo = new BoardVo(no, title, content, hit, date);
bVo.setName(name);
bVo.setUserNo(userNo);
boardList.add(bVo);
}
} catch (SQLException e) {
System.out.println("error:" + e);
}
close();
return boardList;
}
정리
Dao의 boardList 메서드를 사용하여
Controller의 bookList에 게시물 정보들을 대입해주었고
jsp에서 <c:forEach items=>에 bookList를 대입한 {bList}를 입력하여 bList 사이즈만큼 반복하여
본문 내용을 출력할 수 있도록 진행하였다.
이전 방명록과는 다르게
${sessionScope.authUser.no == bList.userNo}라는 코드를 볼 수 있는데
해당 코드는 session에 등록된, 즉 현재 로그인한 유저의 No를 나타내는 코드이며
현재 로그인한 유저의 no와 게시물을 작성한(bList) 유저의 No가 동일하다면
<c:if></c:if> 문 사이에 있는 코드를 실행시키는,
즉 a태그가 적용된 [삭제]라는 글씨가 사용자 화면에 구현하도록 하는 코드이다.
반응형
'Server > Java' 카테고리의 다른 글
[Jsp&Servlet] 본인 게시물 조회수 증가 방지 Controller & Dao (0) | 2022.06.09 |
---|---|
[Jsp&Servlet] 검색과 리스팅을 한번에! Controller & DAO & jsp (0) | 2022.06.09 |
[Jsp&Servlet] EL 같은 이름의 내장 객체에 대한 우선 순위 (0) | 2022.06.09 |
[Jsp&Servlet] Jsp/Servlet 게시물 등록 시 줄바꿈 (0) | 2022.06.08 |
[Jsp&Servlet] JSTL <c:foreach> 태그 (0) | 2022.06.07 |