Data Scientist 옌

매일 발전하는 IT문제해결사

국비지원교육 (22.01-22.07)/강의노트

22-04-28(목) 064일차 [Java, HTML, JavaScript, JSP, Servlet] MODEL2+WEB_MVC 패턴으로 게시판 만들기(select, update)

옌炎 2022. 6. 14. 18:24
728x90

수업내용


1교시 (09:30-10:20)

  • regex_1.html
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
	<script src="http://code.jquery.com/jquery-latest.min.js"></script> 
	<script type="text/javascript">
	
		// var(전역변수, 지역변수) : ECMAScript 3 
		// const(상수 : 변경하면 않되는 리터럴), let(지역변수) : ECMAScript 5,6 
		$(document).ready(function(){
			
			$('#midBtn').click(function(){
				
				const expId = /^a-zA-Z+$/;
				const midV = $('#mid').val();
				let midL = midV.length;
				alert("midL >>> : " + midL);
				
				if (midL < 6 || midL > 8){
					alert("id는 영문자 6 ~ 8 ");
					$('#mid').val('');
					$('#mid').focus();
					return false;
				}else if (!expId.test(midV)){
					alert("id는 영문자 ");
					$('#mid').val('');
					$('#mid').focus();
					return false;
				}
			});
		
			$('#mpwBtn').click(function(){
				/*			
					적어도 하나의 대문자 영어 편지 ,(?=.*?[A-Z])
					영문 소문자 1 자 이상 (?=.*?[a-z])
					적어도 하나의 숫자 (?=.*?[0-9])
					하나 이상의 특수 문자 (?=.*?[#?!@$%^&*-])
				*/
				const expPw = /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/;
				const mpwV = $('#mpw').val();
				let mpwL = mpwV.length;
				alert("mpwL >>> : " + mpwL);
				
				if (mpwL < 8 || mpwL > 20){
					alert("pw는 8 ~ 20 ");
					$('#mpw').val('');
					$('#mpw').focus();
					return false;
				}else if (!expPw.test(mpwV)){
					alert("pw는 하나의 대문자 영문소문자 1자이상 하나의 숫자 특수문자 하나 이상");
					$('#mpw').val('');
					$('#mpw').focus();
					return false;
				}
			});
			
			$('#mbirthBtn').click(function(){
				
				const expBirth = /^(19[0-9][0-9]|20\d{2})-(0[0-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/;
				const mbirthV = $('#mbirth').val();			
				alert("mbirthV >>> : " + mbirthV);
				
				if (!expBirth.test(mbirthV)){
					alert("생일 오류 0000-00-00");
					$('#mbirth').val('');
					$('#mbirth').focus();
					return false;
				}		
			});
			
			$('#memailBtn').click(function(){
				
				const expEmail = /^[a-zA-Z0-9_-]+\@[a-zA-Z]+\.[a-zA-Z]+$/;
				const memailV = $('#memail').val();			
				alert("memailV >>> : " + memailV);
				
				if (!expEmail.test(memailV)){
					alert("이메일  오류");
					$('#memail').val('');
					$('#memail').focus();
					return false;
				}		
			});
			
			$('#mhpBtn').click(function(){
				
				const expHp = /^\d{3}\-\d{4}\-\d{4}$/;
				const mhpV = $('#mhp').val();			
				alert("mhpV >>> : " + mhpV);
				
				if (!expHp.test(mhpV)){
					alert("핸드폰 오류 000-0000-0000");
					$('#mhp').val('');
					$('#mhp').focus();
					return false;
				}		
			});
		});
	</script>
</head>

<body>
	<h3>정규표현식</h3>
	<hr>
	<form>
		<input type="text" name="mid" id="mid" />
		<input type="button" id="midBtn" value="id_val"><br>
		
		<input type="text" name="mpw" id="mpw" />
		<input type="button" id="mpwBtn" value="pw_val"><br>
		
		<input type="text" name="mbirth" id="mbirth" />
		<input type="button" id="mbirthBtn" value="birth_val"><br>
		
		<input type="text" name="memail" id="memail" />
		<input type="button" id="memailBtn" value="email_val"><br>
		
		<input type="text" name="mhp" id="mhp" />
		<input type="button" id="mhpBtn" value="hp_val"><br>
	</form>
</body>
</html>

2교시 (10:30-11:20)

  • 지난 시간 복습

3교시 (11:30-12:20)

업데이트 부분 수정하기

  • boardSelectAll.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@ page import="java.util.ArrayList" %>
<%@ page import="a.b.c.com.kosmo.board.vo.BoardVO" %>    

<%@ page import="org.apache.log4j.LogManager" %>
<%@ page import="org.apache.log4j.Logger" %>

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
	<!-- 디바이스에 최적화된 크기로 출력됨 ------------------------------------->
	<meta name="viweport" content="width=device-width, iitail-scale=1">
	
	<!-- jQuery CDN 불러오기  -------------------------------------------->
	<script  src="http://code.jquery.com/jquery-latest.min.js"></script>
	<script type="text/javascript">
	
		/*
			//체크박스 체크 확인하기 
			function checkOnly(chk){
				// alert(">>> : " + chk);
				var chkObj = document.getElementsByName("bnumChk");
				console.log("chkObj >>> : " + chkObj);
				for (var i=0; i < chkObj.length; i++){
					if (chkObj[i] != chk){
						chkObj[i].checked = false;
					}
				}
			}
			
			// 체크박스 체크 카운트
			function chkInfo(){			
				var obj = document.getElementsByName("bnumChk");
				var nCnt = 0;			
				for(var i=0; i < obj.length; i++){ 
		          	if (obj[i].checked == true){ 
		          		nCnt++;
		          	}		          			            
		        }			
				console.log('nCnt >>> : ' + nCnt);			
				return nCnt;
			}
		*/
		
		$(document).ready(function(){
			
			// 등록하기
			$("#I").on('click', function(){
				location.href="/kosServlet/kosmo/board/board.html";
			});
			
			// 조회하기 
			$("#SALL").on('click', function(){
				location.href="/kosServlet/board?isudType=SALL";
			});
			
			// 체크박스 하나만 체크 되게 하기 bnumChk
			$(document).on('click', '#bnumChk', function(){
				// var b = $(this).prop('checked');
				// console.log("b >>> : " + b);
				// alert("b >>> : " + b);
				if ($(this).prop('checked')){
					$('.bnumChk').prop('checked', false);
					$(this).prop('checked', true);
				}
			});
			
			// 수정하기 
			$(document).on('click', '#U', function(){			
				if ($('.bnumChk:checked').length == 0 ){
					alert("수정할 글번호 하나를 선택하시오 !!!");
					return;
				}
				
				$('#isudType').val('U');
				$('#boardSelectAll').attr({
					"action":"/kosServlet/board",
					"method":"GET",
					"enctype":"application/x-www-form-urlencoded"
				}).submit();			
			});		
		});
	
	</script>
	<style type="text/css">
	
		.tt{
			text-align: center;
		}
		
		a{ text-decoration-line: none;}
	</style>
</head>
<body>
	<h3>boardSelectAll.jsp</h3>
	<hr>
	<form name="boardSelectAll" id="boardSelectAll">
		<table border="1">
		  <tr>
		  	<td class="tt">
				<input type="checkbox" class="chkAll" name="chkAll" id="chkAll"/>
			</td>
			<td class="tt">순번</td>
			<td class="tt">글번호</td>
			<td class="tt">글제목</td>
			<td class="tt">글쓴이</td>
			<td class="tt">글내용</td>
			<td class="tt">등록일</td>
		  </tr>  
		<% request.setCharacterEncoding("UTF-8"); %>  
		<%
			Logger logger = LogManager.getLogger(this.getClass());
			logger.info("boardSelectAll.jsp 진입 >>> : ");
		
			Object obj = request.getAttribute("aList_selectALL");
			if (obj == null) return;
		
			ArrayList<BoardVO> aList = (ArrayList<BoardVO>)obj;
			int nCnt = aList.size();
			logger.info("boardSelectAll.jsp 전체조회 건수 >>> : " + nCnt);
			
			for (int i=0; i < nCnt; i++){
				BoardVO _bvo = aList.get(i);
		%>
			<tr>
				<td class="tt">
					<input type="checkbox" class="bnumChk" name="bnumChk" id="bnumChk" value="<%= _bvo.getBnum() %>" />
				</td>
				<td class="tt"><%= i + 1 %></td>
				<td class="tt"><%= _bvo.getBnum() %></td>
				<td class="tt"><%= _bvo.getBsubject() %></td>
				<td class="tt"><%= _bvo.getBwriter() %></td>
				<td class="tt"><%= _bvo.getBmemo() %></td>
				<td class="tt"><%= _bvo.getInsertdate() %></td>
			</tr>	
		<%		
			}
			
		%>
			<tr>		
				<td colspan="7" align="right">
					<input type="hidden" name="isudType" id="isudType" value="" />
					<input type="button" value="등록" id="I">
					<input type="button" value="조회" id="SALL">
					<input type="button" value="수정" id="U">
					<input type="button" value="삭제" id="D">			
				</td>
			</tr>	
		</table>
	</form>
</body>
</html>

안 넘어갈 경우 강제로 넘기기

  • BoardController.java
package a.b.c.com.kosmo.board.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

import a.b.c.com.common.ChabunUtil;
import a.b.c.com.common.EncryptSHA;
import a.b.c.com.kosmo.board.dao.BoardDAO;
import a.b.c.com.kosmo.board.dao.BoardDAOImpl;
import a.b.c.com.kosmo.board.service.BoardService;
import a.b.c.com.kosmo.board.service.BoardServiceImpl;
import a.b.c.com.kosmo.board.vo.BoardVO;

// http://localhost:8088/kosServlet/board
// /kosServlet/board
@WebServlet("/board")
public class BoardController extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	Logger logger = LogManager.getLogger(BoardController.class);

	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
		throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		logger.info("BoardController :: doGet() 함수 진입 >>> : ");
		
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter out = response.getWriter();
		
		String isudType = request.getParameter("isudType");
		logger.info("BoardController :: doGet() 함수 진입 isudType >>> : " + isudType);
		
		if (isudType !=null && isudType.length() > 0) {
			isudType = isudType.toUpperCase();	

			if ("I".equals(isudType)) {
				
				String bnum = ChabunUtil.getBoardChabun("");
				String bsubject = request.getParameter("bsubject");
				String bwriter = request.getParameter("bwriter");
				String bpw = request.getParameter("bpw");				
				String bmemo = request.getParameter("bmemo");
			
				BoardVO bvo = null;
				bvo = new BoardVO();
				
				bvo.setBnum(bnum);
				bvo.setBsubject(bsubject);
				bvo.setBwriter(bwriter);
				// 패스워드 암호화 하기 
				bpw = EncryptSHA.encryptSHA256(bpw);
				bvo.setBpw(bpw);
				bvo.setBmemo(bmemo);

				logger.info("bvo.getBnum() >>> : " + bvo.getBnum());
				logger.info("bvo.getBsubject() >>> : " + bvo.getBsubject());
				logger.info("bvo.getBwriter() >>> : " + bvo.getBwriter());
				logger.info("bvo.getBpw() >>> : " + bvo.getBpw());
				logger.info("bvo.getBmemo() >>> : " + bvo.getBmemo());
								
				BoardService bs = new BoardServiceImpl();
				boolean bool = bs.boardInsert(bvo);
				
				if (bool) {
					
					logger.info("입력 성공 >>> :" + bool);
					
					// setAttribute(java.lang.String, java.lang.Object)
					request.setAttribute("bool", new Boolean(bool));
					
					RequestDispatcher rd = request.getRequestDispatcher("/kosmo/board/boardInsert.jsp");
					rd.forward(request, response);
				}else {
					
					logger.info("입력 실패 >>> :" + bool);
					
					out.println("<script>");
					out.println("location.href='/kosmo/board/board.html'");
					out.println("</script>");
				}
				
			}
			if ("SALL".equals(isudType)) {
				logger.info("BoardController :: doGet() 함수 진입 SALL isudType >>> : " + isudType);
				
				// 서비스 호출 
				BoardService bs = new BoardServiceImpl();
				ArrayList<BoardVO> aList = bs.boardSelectAll();
				
				if (aList !=null && aList.size() > 0) {
					
					logger.info("전체조회 성공 >>> : " + aList.size());
					request.setAttribute("aList_selectALL", aList);
					RequestDispatcher rd = request.getRequestDispatcher("/kosmo/board/boardSelectAll.jsp");
					rd.forward(request, response);
				}else {
					
					logger.info("전체조회 실패 >>> : ");
					
					out.println("<script>");
					out.println("location.href='/kosmo/board/board.html'");
					out.println("</script>");
				}
			}
			
			if ("U".equals(isudType)) {
				logger.info("BoardController :: doGet() 함수 진입 U isudType >>> : " + isudType);
								
				String bnum = request.getParameter("bnumChk");
				
				BoardVO bvo = null;
				bvo = new BoardVO();
				bvo.setBnum(bnum);
			
				// 서비스 호출 
				BoardService bs = new BoardServiceImpl();
				ArrayList<BoardVO> aList = bs.boardSelect(bvo);
				
				if (aList !=null && aList.size() > 0) {
					
					logger.info("조회 성공 >>> : " + aList.size());
					
					request.setAttribute("aList_select", aList);
					RequestDispatcher rd = request.getRequestDispatcher("/kosmo/board/boardSelect.jsp");
					rd.forward(request, response);
					
				}else {
					
					logger.info("조회 실패 >>> : ");
					
					out.println("<script>");
					out.println("location.href='/kosServlet/board?isudType=SALL'");
					out.println("</script>");
				}				
			}
			
			// 수정하기 
			if ("UOK".equals(isudType)) {
				logger.info("BoardController :: doGet() 함수 진입UOK isudType >>> : " + isudType);
				
				String bnum = request.getParameter("bnum");
				String bsubject = request.getParameter("bsubject");
				String bmemo = request.getParameter("bmemo");
				
				BoardVO bvo = null;
				bvo = new BoardVO();				
				bvo.setBnum(bnum);
				bvo.setBsubject(bsubject);				
				bvo.setBmemo(bmemo);

				logger.info("bvo.getBnum() >>> : " + bvo.getBnum());
				logger.info("bvo.getBsubject() >>> : " + bvo.getBsubject());
				
				// 서비스 호출
				BoardService bs = new BoardServiceImpl();
				boolean bool = bs.boardUpdate(bvo);
				
				// 결과 포워드 하기 /kosmo/board/boardUpdate.jsp
				if (bool) {
					
					logger.info("수정 성공 >>> :" + bool);
					
					request.setAttribute("bool", new Boolean(bool));					
					RequestDispatcher rd = request.getRequestDispatcher("/kosmo/board/boardUpdate.jsp");
					rd.forward(request, response);
				} else {
					
					logger.info("수정 실패 >>> :" + bool);
					
					out.println("<script>");
					out.println("alert('글 수정 실패')");
					out.println("location.href='/kosServlet/board?isudType=SALL'");
					out.println("</script>");
				}
			}
			
		} else {
			logger.info("isudType 구분자가 없어서 무슨일을 할 지 모르겠어요 >>> : ");
		}
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
		throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

조건 조회

  • BoardSqlMap.java
package a.b.c.com.kosmo.board.sql;

public abstract class BoardSqlMap {
	
	// 전체 조회
	public static String getBoardSelectAll() { 
		
		StringBuffer sb = new StringBuffer();
		
		sb.append(" SELECT 										\n");
		sb.append(" 		 A.BNUM          BNUM 				\n");
		sb.append(" 		,A.BSUBJECT      BSUBJECT 			\n");
		sb.append(" 		,A.BWRITER       BWRITER 			\n");
		sb.append(" 		,A.BPW           BPW 				\n");
		sb.append(" 		,A.BMEMO         BEMMO 				\n");
		sb.append(" 		,A.DELETEYN      DELETEYN 			\n");
		sb.append(" 		,TO_CHAR(A.INSERTDATE, 'YYYY-MM-DD')    INSERTDATE \n");
		sb.append(" 		,TO_CHAR(A.UPDATEDATE, 'YYYY-MM-DD')    UPDATEDATE \n");
		sb.append(" FROM 	MVC_BOARD A 						\n");
		sb.append(" WHERE 	A.DELETEYN = 'Y' 					\n");
		sb.append(" ORDER 	BY 1 DESC 							\n");
				
		return sb.toString();
	}
	
	// 조건 조회
	public static String getBoardSelect() { 
		
		StringBuffer sb = new StringBuffer();
		
		sb.append(" SELECT 										\n");
		sb.append(" 		 A.BNUM          BNUM 				\n");
		sb.append(" 		,A.BSUBJECT      BSUBJECT 			\n");
		sb.append(" 		,A.BWRITER       BWRITER 			\n");
		sb.append(" 		,A.BPW           BPW 				\n");
		sb.append(" 		,A.BMEMO         BEMMO 				\n");
		sb.append(" 		,A.DELETEYN      DELETEYN 			\n");
		sb.append(" 		,TO_CHAR(A.INSERTDATE, 'YYYY-MM-DD')    INSERTDATE \n");
		sb.append(" 		,TO_CHAR(A.UPDATEDATE, 'YYYY-MM-DD')    UPDATEDATE \n");
		sb.append(" FROM 	MVC_BOARD A 						\n");
		sb.append(" WHERE 	A.DELETEYN = 'Y' 					\n");
		sb.append(" ORDER 	A.BNUM = ? 							\n"); // placeholder 1
				
		return sb.toString();
		}
	
	// 입력하기
	public static String getBoardInsert() {
		
		StringBuffer sb = new StringBuffer();
		/*
		INSERT INTO MVC_BOARD (BNUM, BSUBJECT, BWRITER, BPW, BMEMO, DELETEYN, INSERTDATE, UPDATEDATE)
		VALUES (?, ?, ?, ?, ?, 'Y', SYSDATE, SYSDATE
		*/
		
		sb.append(" INSERT INTO 						\n");
		sb.append(" 	 MVC_BOARD 						\n");
		sb.append(" 				(   				\n");
		sb.append(" 				 	 BNUM  			\n"); // COLUMN 1
		sb.append(" 					,BSUBJECT  		\n"); // COLUMN 2
		sb.append(" 					,BWRITER  		\n"); // COLUMN 3
		sb.append(" 					,BPW  			\n"); // COLUMN 4
		sb.append(" 					,BMEMO  		\n"); // COLUMN 5
		sb.append(" 					,DELETEYN  		\n"); // COLUMN 6
		sb.append(" 					,INSERTDATE  	\n"); // COLUMN 7
		sb.append(" 					,UPDATEDATE  	\n"); // COLUMN 8
		sb.append(" 				)   				\n");
		sb.append(" 	  	VALUES   					\n");
		sb.append(" 				(   				\n"); 
		sb.append(" 				 	 ?  			\n"); // placeholder 2
		sb.append(" 					,?  			\n"); // placeholder 2
		sb.append(" 					,?  			\n"); // placeholder 3
		sb.append(" 					,?  			\n"); // placeholder 4
		sb.append(" 					,?  			\n"); // placeholder 5
		sb.append(" 					,'Y'  			\n"); // 'Y'	     6
		sb.append(" 					,SYSDATE  		\n"); // SYSDATE     7
		sb.append(" 					,SYSDATE  		\n"); // SYSDATE     8
		sb.append(" 				)   				\n");
		
		return sb.toString();
	}
	
	public static String getBoardUpdate() {
		
		StringBuffer sb = new StringBuffer();
		
		sb.append("UPDATE    MVC_BOARD 					\n");
		sb.append("SET       BSUBJECT 	= ?  			\n"); // placeholder 1
		sb.append("			,BMEMO 		= ?      		\n"); // placeholder 2
		sb.append("         ,UPDATEDATE = SYSDATE 		\n");
		sb.append("WHERE     DELETEYN 	= 'Y' 			\n");
		sb.append("AND       BNUM 		= ? 			\n"); // placeholder 3

		return sb.toString();
		}
	
	public static String getBoardDelete() { return null;}
}
  • BoardDAOImpl.java
package a.b.c.com.kosmo.board.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

import a.b.c.com.common.DBCP_Connectivity;
import a.b.c.com.common.KosConnectivity;
import a.b.c.com.kosmo.board.service.BoardServiceImpl;
import a.b.c.com.kosmo.board.sql.BoardSqlMap;
import a.b.c.com.kosmo.board.vo.BoardVO;

public class BoardDAOImpl implements BoardDAO {
	
	Logger logger = LogManager.getLogger(BoardDAOImpl.class);

	// 전체 조회
	@Override
	public ArrayList<BoardVO> boardSelectAll() {
		// TODO Auto-generated method stub
		logger.info("BoardDAOImpl:: boardSelectAll() 함수 진입 >>> : ");
		
		// 사용할 객체를 지역변수로 선언하고 디폴트 값으로 초기화한다.
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rsRs = null;
		ArrayList<BoardVO> aList = null;
		
		// JDBC를 이용해서 데이터 가져오기
		try {
			conn = KosConnectivity.getConnection();
			String sqls = BoardSqlMap.getBoardSelectAll();
			pstmt = conn.prepareStatement(sqls);
			logger.info("전체 조회 >>> : \n" + sqls);
			
			rsRs = pstmt.executeQuery();
			
			if (rsRs != null) {
				aList = new ArrayList<BoardVO>();
				
				while (rsRs.next()) {
					BoardVO _bvo = new BoardVO();
					_bvo.setBnum(rsRs.getString(1));
					_bvo.setBsubject(rsRs.getString(2));
					_bvo.setBwriter(rsRs.getString(3));
					_bvo.setBpw(rsRs.getString(4));
					_bvo.setBmemo(rsRs.getString(5));
					_bvo.setDeleteyn(rsRs.getString(6));
					_bvo.setInsertdate(rsRs.getString(7));
					_bvo.setUpdatedate(rsRs.getString(8));
					
					aList.add(_bvo);
				}
			}
			KosConnectivity.conClose(conn, pstmt, rsRs);
		} catch (Exception e) {
			logger.info("전체 조회시 디비 에러가 >>> : " + e);
		} finally {
			KosConnectivity.conClose(conn, pstmt, rsRs);
		}
		
		return aList;
	}

	// 조건 조회
	@Override
	public ArrayList<BoardVO> boardSelect(BoardVO bvo) {
		// TODO Auto-generated method stub
		
		logger.info("BoardDAOImpl:: boardSelect() 함수 진입 >>> : ");
		logger.info("BoardDAOImpl :: boardSelect() bvo.getBnum() >>> : " + bvo.getBnum());
		
		// 사용할 객체를 지역변수로 선언하고 디폻트 값으로 초기화 한다.
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rsRs = null;
		ArrayList<BoardVO> aList = null;
		
		// JDBC를 이용해서 데이터 가져오기
		try {
			conn = KosConnectivity.getConnection();
			
			String sqls = BoardSqlMap.getBoardSelect();
			pstmt = conn.prepareStatement(sqls);
			
			pstmt.clearParameters();
			pstmt.setNString(1,  bvo.getBnum());
			logger.info("조건 조회 >>> : \n" + sqls);
			
			rsRs = pstmt.executeQuery();
			
			if (rsRs != null) {
				aList = new ArrayList<BoardVO>();
				
				while (rsRs.next()) {
					BoardVO _bvo = new BoardVO();
					_bvo.setBnum(rsRs.getString(1));
					_bvo.setBsubject(rsRs.getString(2));
					_bvo.setBwriter(rsRs.getString(3));
					_bvo.setBpw(rsRs.getString(4));
					_bvo.setBmemo(rsRs.getString(5));
					_bvo.setDeleteyn(rsRs.getString(6));
					_bvo.setInsertdate(rsRs.getString(7));
					_bvo.setUpdatedate(rsRs.getString(8));
					
					aList.add(_bvo);
				}
			}
			KosConnectivity.conClose(conn, pstmt, rsRs);
		} catch (Exception e) {
			logger.info("조건 조회 시 디비 에러가 >>> : " + e);
		} finally {
			KosConnectivity.conClose(conn, pstmt, rsRs);
		}
		
		return aList;
	}

	// 입력하기 
	@Override
	public boolean boardInsert(BoardVO bvo) {
		// TODO Auto-generated method stub
		
		logger.info("BoardDAOImpl:: boardInsert() 함수 진입 >>> : ");
		logger.info("bvo >>> : " + bvo);
		
		// 사용할 객체를 지역변수로 선언하고 초기화 하기 
		Connection conn = null;
		PreparedStatement pstmt = null;
		int nCnt = 0;
		boolean bool = false;
		
		// JDBC 객체 이용해서 테이블에 인서트 하기 
		try {
			conn = KosConnectivity.getConnection();
			String sqls = BoardSqlMap.getBoardInsert();
			pstmt = conn.prepareStatement(sqls);
			logger.info("인서트 >>> : \n" + sqls);
			
			// 플레이스 홀더에 입력할 데이터 바인딩하기 
			pstmt.clearParameters();
			pstmt.setString(1, bvo.getBnum());
			pstmt.setString(2, bvo.getBsubject());
			pstmt.setString(3, bvo.getBwriter());
			pstmt.setString(4, bvo.getBpw());
			pstmt.setString(5, bvo.getBmemo());
			
			nCnt = pstmt.executeUpdate();
			if (!conn.getAutoCommit()) conn.commit();
			logger.info("인서트 결과는 >>> : " + nCnt);
			
			if (nCnt > 0) bool = true;
			
			KosConnectivity.conClose(conn, pstmt);
		}catch(Exception e) {
			logger.info("인서트 디비 에러가 >>> : " + e);
		}finally {
			KosConnectivity.conClose(conn, pstmt);
		}

		return bool;
	}

	// 수정하기
	@Override
	public boolean boardUpdate(BoardVO bvo) {
		// TODO Auto-generated method stub
		
		logger.info("BoardDAOImpl :: boardUpdate() 함수 진입 >>> : ");
		logger.info("bvo >>> : " + bvo);
		
		// 사용할 객체를 지역변수로 선언하고 초기화하기
		Connection conn = null;
		PreparedStatement pstmt = null;
		int nCnt = 0;
		boolean bool = false;
		
		// JDBC 객체 이용해서 테이블에 인서트 하기
		try {
			conn = KosConnectivity.getConnection();
			String sqls = BoardSqlMap.getBoardUpdate();
			pstmt = conn.prepareStatement(sqls);
			logger.info("업데이트 >>> : \n" + sqls);
			
			// 플레이스 홀더에 입력할 데이터 바인딩 하기
			pstmt.clearParameters();
			pstmt.setString(1, bvo.getBsubject());
			pstmt.setString(2,  bvo.getBmemo());
			pstmt.setString(3, bvo.getBnum());
			
			nCnt = pstmt.executeUpdate();
			if (!conn.getAutoCommit()) conn.commit();
			logger.info("업데이트 결과는 >>> : " + nCnt);
			
			if (nCnt > 0) bool = true;
			
			KosConnectivity.conClose(conn, pstmt);
		} catch (Exception e) {
			logger.info("업데이트 디비 에러가 >>>: " + e);
		} finally {
			KosConnectivity.conClose(conn, pstmt);
		}
		
		return bool;
	}

	@Override
	public boolean boardDelete(BoardVO bvo) {
		// TODO Auto-generated method stub
		return false;
	}
}
  • BoardSelect.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@ page import="java.util.ArrayList" %>
<%@ page import="a.b.c.com.kosmo.board.vo.BoardVO" %>

<%@ page import="org.apache.log4j.LogManager" %>
<%@ page import="org.apache.log4j.Logger" %>

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
	<!-- 디바이스에 최적화된 크기로 출력됨 -->
	<meta name="viewport" content="width=device-width, initial-scale=1">
	
	<!-- jQuery CDN 불러오기 -->
	<script src="http://code.jquery.com/jquery-latest.min.js"></script>
	<script type="text/javascript">
		
		$(document).ready(function(){
		
			// 글쓰기 on (매개변수 3개)
			$(document).on('click', '#insertBtn', function(){
				location.href="/kosServlet/kosmo/board/board.html";
			});
			
			// 글목록 on(매개변수 3개)
			$(document).on('click', "#selectAllBtn", function() {
				location.href="/kosServlet/board?isudType=SALL";
			});
			
			// 수정하기
			$(document).on('click', '#updateBtn', function(){
				alert("updateBtn >>> : ");
				
				$("#boardSelectForm").attr({
					"action":"/kosServlet/board",
					"method":"GET",
					"enctype":"application/x-www-form-urlencoded"
				}).submit();
			});
		});
	</script>
</head>
<body>
	<h3>boardSelect.jsp</h3>
	<hr>
	<% request.setCharacterEncoding("UTF-8"); %>
	<%
		Logger logger = LogManager.getLogger(this.getClass());
		logger.info("boardSelect.jsp 진입 >>> : ");
		
		Object obj = request.getAttribute("aList_select");
		if (obj == null) return;
		
		ArrayList<BoardVO> aList = (ArrayList<BoardVO>)obj;
		
		if (aList != null && aList.size() > 0) {
			BoardVO _bvo = aList.get(0);
	%>
	<form name="boardSelectForm" id="boardSelectForm">
		<table>
			<tr>
				<td>글번호</td>
				<td>
					<input type="text" class="bnum" name="bnum" id="bnum" 
						placeholder="글번호" style="width:100px;" value="<%= _bvo.getBnum() %>" readonly/>
				</td>
			</tr>
			<tr>
				<td>글제목</td>
				<td>
					<input type="text" class="bsubject" name="bsubject" id="bsubject" 
						placeholder="글제목" style="width:250px;"  value="<%= _bvo.getBsubject() %>" />
				</td>
			</tr>
			<tr>
				<td>글쓴이</td>
				<td>
					<input type="text" class="bwriter" name="bwriter" id="bwriter" 
						placeholder="글쓴이" style="width:250px;" value="<%= _bvo.getBwriter() %>" />
				</td>
			</tr>
			<tr>
				<td>비밀번호</td>
				<td>
					<input type="text" class="bpw" name="bpw" id="bpw" 
						placeholder="비밀번호 8자리" maxlength="8" 
						style="width:100px; background-color:#e6e6e6;"/>
					<input type="button" name="bpwChk" id="bpwChk" value="비밀번호확인">
				</td>
			</tr>
			<tr>
				<td>글내용</td>
				<td>
					<textarea class="bmemo" name="bmemo" id="bmemo" cols="32" rows="5"><%= _bvo.getBmemo() %></textarea>
				</td>
			</tr>
			<tr>
				<td>삭제여부</td>
				<td>
					<input type="text" style="width:100px;"  value="<%= _bvo.getDeleteyn() %>" disabled/>
				</td>
			</tr>
			<tr>
				<td>등록일</td>
				<td>
					<input type="text" style="width:100px;"  value="<%= _bvo.getInsertdate() %>" disabled/>
				</td>
			</tr>
			<tr>
				<td>수정일</td>
				<td>
					<input type="text" style="width:100px;"  value="<%= _bvo.getUpdatedate() %>" disabled/>
				</td>
			</tr>
			<tr>		
				<td colspan="2">
					<!-- hidden flag : 히든 플래그 -->
					<input type="hidden" name="isudType" id="isudType" value="UOK"/>	
					<input type="button" id="insertBtn" value="글쓰기" >
					<input type="button" id="selectAllBtn" value="목록" >
					&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;		
					<input type="button" id="updateBtn" value="수정"/>
				</td>
			</tr>
		</table>
	</form>
	<%		
	}
	%>
</body>
</html>

4교시 (12:30-13:20)

조건 조회

  • BoardServiceImpl.java
package a.b.c.com.kosmo.board.service;

import java.util.ArrayList;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

import a.b.c.com.kosmo.board.dao.BoardDAO;
import a.b.c.com.kosmo.board.dao.BoardDAOImpl;
import a.b.c.com.kosmo.board.vo.BoardVO;

public class BoardServiceImpl implements BoardService {
	
	Logger logger = LogManager.getLogger(BoardServiceImpl.class);
	
	// 전체 조회
	@Override
	public ArrayList<BoardVO> boardSelectAll() {
		// TODO Auto-generated method stub
		logger.info("BoardServiceImple :: boardSelectAll() 함수 진입 >>> : ");
		
		BoardDAO bdao = new BoardDAOImpl();
		ArrayList<BoardVO> aList = bdao.boardSelectAll();
		return aList;
		// return bdao.boardSelectAll();
	}
	
	// 조건 조회
	@Override
	public ArrayList<BoardVO> boardSelect(BoardVO bvo) {
		// TODO Auto-generated method stub
		logger.info("BoardServiceImple :: boardSelect() 함수 진입 >>> : ");
		
		BoardDAO bdao = new BoardDAOImpl();
		ArrayList<BoardVO> aList = bdao.boardSelectAll();
		return aList;
		// return bdao.boardSelect(bvo);
	}

	// 입력하기
	@Override
	public boolean boardInsert(BoardVO bvo) {
		// TODO Auto-generated method stub
		logger.info("BoardServiceImple :: boardInsert() 함수 진입 >>> : ");
		logger.info("bvo >>> : " + bvo);
		
		BoardDAO bdao = new BoardDAOImpl();
		boolean bool = bdao.boardInsert(bvo);
		
		return bool;
		//return bdao.boardInsert(bvo);
	}

	// 수정하기
	@Override
	public boolean boardUpdate(BoardVO bvo) {
		// TODO Auto-generated method stub
		logger.info("BoardServiceImple :: boardUpdate() 함수 진입 >>> : ");
		logger.info("bvo >>> : " + bvo);
		
		BoardDAO bdao = new BoardDAOImpl();
		boolean bool = bdao.boardUpdate(bvo);
		
		logger.info("bool >>> : " + bool);
		return bool;
		// return bdao.boardUpdate(bvo);
	}

	@Override
	public boolean boardDelete(BoardVO bvo) {
		// TODO Auto-generated method stub
		return false;
	}

}

5교시 (14:30-15:20)

  • 조건 조회 ← 위에 추가하였음
    • BoardSelect.jsp

6교시 (15:30-16:20)

  • 조건 조회
    • BoardSelect.jsp ← jQuery 만들기
    • BoardSqlMap.java ← 글제목과 글 내용 수정 쿼리 만들기
    • BoardDAOImpl.java ← 수정 부분 만들기

7교시 (16:30-17:20)

업데이트 수정

  • BoardController.java ← 업데이트를 처리하기 위함
  • boardUpdate.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@ page import="org.apache.log4j.LogManager" %>
<%@ page import="org.apache.log4j.Logger" %>
    
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
</head>

<body>
	<h3>boardUpdate.jsp</h3>
	<hr>
	<%
		Logger logger = LogManager.getLogger(this.getClass());
		logger.info("boardUpdate.jsp 진입 >>> : ");
	
		Object obj = request.getAttribute("bool");
		if (obj == null)  return;
		
		boolean bool = ((Boolean)obj).booleanValue();
		
		if (bool){
	%>
			<script>
				location.href="/kosServlet/board?isudType=SALL";
			</script>
	<%		
		}
		
	%>

</body>
</html>

8교시 (17:30-18:30)

  • b_like.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
	String count_1 = "409";
	String count_2 = "43";
	String count_3 = "23";
	String count_4 = "15";
	String count_5 = "31";
	String count_6 = "44";

%>
<form>
<table>
<tr>
<td>
	<img src="/kosServlet/img/img_like/1.png">
	<br><span>좋아요</span><br><span><%= count_1 %></span>
</td>
<td>
	<img src="/kosServlet/img/img_like/2.png">	
	<br><span>응원해요</span><br><span><%= count_2 %></span>
</td>
<td>
	<img src="/kosServlet/img/img_like/3.png">	
	<br><span>축하해요</span><br><span><%= count_3 %></span>
</td>
<td>
	<img src="/kosServlet/img/img_like/4.png">	
	<br><span>기대해요</span><br><span><%= count_4 %></span>
</td>
<td>
	<img src="/kosServlet/img/img_like/5.png">	
	<br><span>놀랐어요</span><br><span><%= count_5 %></span>
</td>
<td>
	<img src="/kosServlet/img/img_like/6.png">
	<br><span>슬퍼요</span><br><span><%= count_6 %></span>
</td>

</tr>
</table>
</form>
</body>
</html>

Notes


728x90