공부한것들을 정리하는 블로그 입니다.
7-2. 글 목록 조회, 글 검색 기능 : getBoardList.jsp, BoardDAO.java 본문
(2019) 사이드 프로젝트/BoardWeb(게시판-MVC1,MVC2,스프링MVC)
7-2. 글 목록 조회, 글 검색 기능 : getBoardList.jsp, BoardDAO.java
호 두 2019. 6. 24. 13:54반응형
getBoardList.jsp
- login_proc.jsp에서 받은 id를 이용해 상단에 이용자의 id를 출력합니다. ex) **님 환영합니다
- boardDAO.getBoardList()를 실행하여 boardList 에 데이터를 리턴받은 후(Controller), 해당 데이터를 화면에 출력한다(View).
- 페이징은 나중에 추가 할 예정이며 관련 글은 그때 설명드리도록 하겠습니다.
- 글 검색 기능은 post보다는 get 방식이 자주 보입니다.(get은 가져오는 것이고 post는 수행하는 것입니다)
<%@page import="java.io.Console"%>
<%@ page import="java.util.List" %>
<%@ page import="com.springbook.biz.board.impl.BoardDAO" %>
<%@ page import="com.springbook.biz.board.BoardVO" %>
<%@ page import="com.springbook.biz.user.UserVO" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
String id = (String)session.getAttribute("id");
//redirect 방식은 request를 유지하지 않기 때문에 다른 페이지로 이동하면 없어진다. 다른 페이지에서 request는 새로운 객체임
//System.out.println("[getBoardList.jsp] aa = " + (String)request.getAttribute("aa") );
//System.out.println("[getBoardList.jsp] id = " + id );
//System.out.println("[getBoardList.jsp] searchCondition = " + request.getParameter("searchCondition") );
//System.out.println("[getBoardList.jsp] searchKeyword = " + request.getParameter("searchKeyword") );
BoardVO vo = new BoardVO();
BoardDAO boardDAO = new BoardDAO();
vo.setSearchCondition( request.getParameter("searchCondition") );
vo.setSearchKeyword( request.getParameter("searchKeyword") );
List<BoardVO> boardList;
boardList = boardDAO.getBoardList(vo);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>글 목록</title>
</head>
<body>
<center>
<h1>글 목록</h1>
<h3><%=id%>님 환영합니다....<a href="logout_proc.jsp">log out</a></h3>
<!-- 검색 시작 -->
<form action="getBoardList.jsp" method="get">
<table border="1" cellpadding="0" cellspacing="0" width="700">
<tr>
<td align="right">
<select id="searchCondition" name="searchCondition">
<option value="TITLE">제목</option>
<option value="CONTENT">내용</option>
</select>
<input id="searchKeyword" name="searchKeyword" type="text">
<input type="submit" value="검색 ">
</td>
</tr>
</table>
</form>
<!-- 검색 종료 -->
<table border="1" cellpadding="0" cellspacing="0" width="700">
<tr>
<th bgcolor="orange" width="100">번호</th>
<th bgcolor="orange" width="200">제목</th>
<th bgcolor="orange" width="150">작성자</th>
<th bgcolor="orange" width="150">등록일</th>
<th bgcolor="orange" width="100">조회수</th>
</tr>
<%
for(BoardVO board: boardList) { %>
<tr>
<td><%= board.getSeq() %></td>
<td align="left">
<a href="getBoard.jsp?seq=<%= board.getSeq() %>">
<%= board.getTitle() %>
</a>
</td>
<td><%= board.getWriter() %></td>
<td><%= board.getRegDate() %></td>
<td><%= board.getCnt() %></td>
</tr>
<% } %>
</table>
<br>
<a href="insertBoard.jsp">새 글 등록</a>
</center>
</body>
</html>
BoardDAO.java
- 기존에 진행했던 실습예제에서 getBoardList() 메서드에 수정이 있었습니다. 글 목록 조회 기능이며 또한 글 검색 기능을 겸하게 되었습니다.
- 올바른 객체지향을 위해서는 글 목록 조회(getBoardList)와 글 검색(getBoardListFromSearch : 가제)이 기능적으로(메서드) 분리되어야 마땅합니다. 이 부분도 추후 실습에서 함께 다루도록 하고 우선은 이렇게 진행하도록 하겠습니다.
package com.springbook.biz.board.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.springbook.biz.board.BoardVO;
import com.springbook.biz.common.JDBCUtil;
import hello.printSimpleName;
@Repository("boardDAO")
public class BoardDAO {
private Connection conn = null;
private PreparedStatement stmt = null;
private ResultSet rs = null;
private final String BOARD_INSERT = "insert into board(seq, title, writer, content, regdate) values((select nvl(max(seq),0)+1 from board),?,?,?,sysdate)";
private final String BOARD_UPDATE = "update board set title=?, content=? where seq=?";
private final String BOARD_DELETE = "delete board where seq=?";
private final String BOARD_GET = "select * from board where seq=?";
// private final String BOARD_LIST = "select * from board order by seq desc";
private final String BOARD_LIST = "select * from board order by seq desc";
private final String BOARD_LIST_T = "select * from board where title like '%'||?||'%' order by seq desc";
private final String BOARD_LIST_C = "select * from board where content like '%'||?||'%' order by seq desc";
printSimpleName p = new printSimpleName();
public void insertBoard(BoardVO vo) {
System.out.println("===> JDBC로 insertBoard() 기능 처리");
try {
conn = JDBCUtil.getConnection();
stmt = conn.prepareStatement(BOARD_INSERT);
stmt.setString(1, vo.getTitle());
stmt.setString(2, vo.getWriter());
stmt.setString(3, vo.getContent());
stmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtil.close(stmt, conn);
}
}
public void updateBoard(BoardVO vo) {
System.out.println("===> JDBC로 updateBoard() 기능 처리");
try {
conn = JDBCUtil.getConnection();
stmt = conn.prepareStatement(BOARD_UPDATE);
stmt.setString(1, vo.getTitle());
stmt.setString(2, vo.getContent());
stmt.setInt(3, vo.getSeq());
stmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtil.close(stmt, conn);
}
}
public void deleteBoard(BoardVO vo) {
System.out.println("===> JDBC로 deleteBoard() 기능 처리");
try {
conn = JDBCUtil.getConnection();
stmt = conn.prepareStatement(BOARD_DELETE);
stmt.setInt(1, vo.getSeq());
stmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtil.close(stmt, conn);
}
}
public BoardVO getBoard(BoardVO vo) {
System.out.println("===> JDBC로 getBoard() 기능 처리");
BoardVO board = null;
try {
conn = JDBCUtil.getConnection();
stmt = conn.prepareStatement(BOARD_GET);
stmt.setInt(1, vo.getSeq());
rs = stmt.executeQuery();
if(rs.next()) {
board = new BoardVO();
board.setSeq(rs.getInt("SEQ"));
board.setTitle(rs.getString("TITLE"));
board.setWriter(rs.getString("WRITER"));
board.setContent(rs.getString("CONTENT"));
board.setRegDate(rs.getDate("REGDATE"));
board.setCnt(rs.getInt("CNT"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtil.close(stmt, conn);
}
return board;
}
// public List<BoardVO> getBoardList(BoardVO vo) {
// System.out.println("===> JDBC로 getBoardList() 기능 처리");
// List<BoardVO> boardList = new ArrayList<BoardVO>();
// try {
// conn = JDBCUtil.getConnection();
// stmt = conn.prepareStatement(BOARD_LIST);
// rs = stmt.executeQuery();
// while(rs.next()) {
// BoardVO board = new BoardVO();
// board.setSeq(rs.getInt("SEQ"));
// board.setTitle(rs.getString("TITLE"));
// board.setWriter(rs.getString("WRITER"));
// board.setContent(rs.getString("CONTENT"));
// board.setRegDate(rs.getDate("REGDATE"));
// board.setCnt(rs.getInt("CNT"));
// boardList.add(board);
// }
// } catch (Exception e) {
// e.printStackTrace();
// } finally {
// JDBCUtil.close(stmt, conn);
// }
// return boardList;
// }
// public List<BoardVO> getBoardListFromSearch(BoardVO vo) {
public List<BoardVO> getBoardList(BoardVO vo) {
System.out.println("===> JDBC로 getBoardList() 기능 처리");
List<BoardVO> boardList = new ArrayList<BoardVO>();
String flagBoardListFromSearch = "N";
try {
conn = JDBCUtil.getConnection();
if (vo.getSearchCondition() != null && vo.getSearchKeyword() != null) {
flagBoardListFromSearch = "Y";
}
if("Y".equals(flagBoardListFromSearch) && vo.getSearchCondition().equals("TITLE")) {
stmt = conn.prepareStatement(BOARD_LIST_T);
stmt.setString(1, vo.getSearchKeyword());
} else if("Y".equals(flagBoardListFromSearch) && vo.getSearchCondition().equals("CONTENT") ) {
stmt = conn.prepareStatement(BOARD_LIST_C);
stmt.setString(1, vo.getSearchKeyword());
} else {
stmt = conn.prepareStatement(BOARD_LIST);
}
rs = stmt.executeQuery();
while(rs.next()) {
BoardVO board = new BoardVO();
board.setSeq(rs.getInt("SEQ"));
board.setTitle(rs.getString("TITLE"));
board.setWriter(rs.getString("WRITER"));
board.setContent(rs.getString("CONTENT"));
board.setRegDate(rs.getDate("REGDATE"));
board.setCnt(rs.getInt("CNT"));
boardList.add(board);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtil.close(stmt, conn);
}
return boardList;
}
}
반응형
'(2019) 사이드 프로젝트 > BoardWeb(게시판-MVC1,MVC2,스프링MVC)' 카테고리의 다른 글
7-6. 페이징처리(paging, pagination) : BoardDAO.java, BoardList2.jsp, PagingVO.java (2) | 2019.07.04 |
---|---|
7-5. 실습 중간점검 , 프로젝트 별첨 (0) | 2019.06.28 |
7-4. 글 조회수 카운트, session을 이용한 조회수 중복 방지 처리(jsp) : BoardDAO.java, getBoard.jsp (0) | 2019.06.28 |
7-3. 글 상세 조회 : getBoard.jsp (0) | 2019.06.24 |
7-1. 로그인, 로그아웃, 로그인 검증 및 실패 후처리 : login.jsp, login_proc.jsp, logout_proc.jsp (3) | 2019.06.24 |
7. MVC Model1 아키텍처로 게시판 개발 : web.xml, representation-layer.xml, index.jsp (0) | 2019.06.20 |
6. 트랜잭션 처리 : 스프링 AOP Advisor 사용 (0) | 2019.06.19 |
5-1. DAO클래스 구현 : JdbcDaoSupprot 클래스를 상속하는 방법, JdbcTemplate 클래스를 <bean> 등록하고, 의존성 주입으로 처리하는 방법 (0) | 2019.06.19 |
Comments