관리 메뉴

공부한것들을 정리하는 블로그 입니다.

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;
	}
	
}

 

 

반응형
Comments