Data Scientist 옌

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

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

22-04-27(수) 063일차 [Java, HTML, JavaScript, JSP, Servlet] MODEL2+WEB_MVC 패턴으로 게시판 만들기(Insert, SelectAll) front

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

수업내용


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

  • popup_2.html
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
	<!-- 
		자바
		클래스 참조변수 = new 클래스();
		참조변수.함수();
		String str = 참조변수.함수();
		
		자바스크립트 
		 var day = new Date();
		 var 변수명 = 함수();
		
		var win = window.open(url, name, specs, replace);
		win.close();
		
		1. win : 새로 만들어진 객체가 반환, 창 생성 실패하면 null 반환
		2. url : 새창에 보여질 주소, 비워두면 빈창(about:blank)이 보임
		3. name : 새로 열릴 창의 속성 또는 창의 이름 지정, 기본값은 _blank
				_blank   : 새창이 열림, 기본값
				_parent  : 부모 프레임이 열림
				_self 	 : 현재 페이지를 대체
				_top	 : 로드된 프레임셋을 대체
				name(임의의 이름) : 새창이 열리고 창의 이름을 지정
		4. specs : 창의 위치, 창의 크기, 스크롤 여부, 리사이즈 가능 등 속성 지정
		5. replace : true 현재 히스토리를 대체, false 히스토리에 새항목을 만듬
	 -->
	 <script src="http://code.jquery.com/jquery-latest.min.js"></script>
	 <script type="text/javascript">
	 
	 	$(document).ready(function(){
	 		
	 		var win = window.open(  "/KosMember/kos_script/popup_notice.jsp",
	 								"_blank",
	 								"left=100,top100,width=300,height=300",
	 								false);
	 		
	 		function popup_close(){
	 			alert("3초 후 팝업을 자동으로 닫기");
	 			alert("win >>> : " + win);
	 			
	 			// if (win) {
	 				win.close();
	 			// }
	 		}
	 		
	 		// 3초 후에 popup_close 프로퍼티를 실행하시오
	 		// popup_close -> function popup_close() {}
	 		setTimeout(popup_close, 1000);
	 	});
	 </script>
</head>

<body>
	<h3>공지사항 팝업 부모창(윈도우)</h3>
	<hr>
</body>
</html>
  • popup_cookie.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>
	<h3>POPUP COOKIE CHECK</h3>
	<hr>
	<%
		String chkpop = request.getParameter("chkpop");
		System.out.println("chkpop >>> : " + chkpop);
		
		boolean bool = false;
		if ("01".equals(chkpop)){
			bool = true;
		}
		
	%>
	<?xml version="1.0" encoding="UTF-8"?>
	<root>
		<result><%= bool %></result>	
	</root>
</body>
</html>
  • popup_3.jsp 
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>공지사항 팝업</title>

<!-- 뷰포트 : device에 맞게 화면 크기 조정 -->
<meta name="viewport" content="width=device-width, initial-scale=1"> 

<!-- 
	레이어 팝업 드래그 하기 위해서 jquery ui draggable 라이브러리 사용
	https://jqueryui.com/draggable/
 -->
<link rel="stylesheet" href="//code.jquery.com/ui/1.13.1/themes/base/jquery-ui.css">
<!--  
<link rel="stylesheet" href="//resources/demos/style.css">
-->
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="https://code.jquery.com/ui/1.13.1/jquery-ui.js"></script>

<!-- 
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
 -->  
<script type="text/javascript">

	$(document).ready(function(){
		
		$("#noticePop").draggable();
		
		$('#popBtn').on('click', function(){
			alert("popBtn >>> : ");
			
			let chkVal = $("#chkpop").is(":checked");
			alert("checkbox checked >>> : " + chkVal);
			
			/*
			if (chkVal){
				
				// Ajax 처리 루틴
				let urlV = "/kosMember/kos_script/popup_cookie.jsp";
				let typeV = 'GET';
				let dataV = $("#chkpop").val();
				alert("dataV >>> : " + dataV);			
				
				// $.ajax({});
				// $.("폼네임").attr({}).submit();
				
				if (chkVal){
					$.ajax({
						url: urlV,
						type: typeV,
						data: { "chkpop": dataV },					
						success : whenSuccess,					
						error : whenError
					});				
				}
				
				function whenSuccess(resData){
					alert("리턴 데이터 >>> : \n" + resData);
					var bool = $(resData).find('result').text();
					alert("bool >>> : " + bool);
				}
				
				function whenError(){
					alert("에러가 >>> : ");
				}
			}
			*/
			$('#noticePop').hide();
			$('.imgPop').hide();
		});	
	});

</script>
<style>
	div#noticePop {
		potition: absolute;
		top: 50px; 
		left: 50px;
		color: black;
		border: 1px solid red;
		width: 300px;
		height: 300px;
		text-align: center;
		background-color: cyan; /* #ffffff */
	}
	
	div#noticePop > div {
		position: relative;				
		top: 0px;
		border: 1px solid gray;
		padding: 10px;
		color: black;
		background-color: cyan; /* #fff */
	}

</style>
</head>
<body>
<%
	boolean popState = true;
%> 
<h2>NOTICE POPUP</h2>
<hr>
<%
	if (popState){
%>
		<div id="noticePop">
			<h4>공지사항 팝업</h4>
			<hr>
			<div class="imgPop">
				<form name="noticePopForm" id="noticePopForm">
					<img class="img_1" src="/KosMember/img/img_kakaofriends/08.png"><br>										
					<input type="checkbox" class="chkpop" name="chkpop" id="chkpop" value="01" />
					하루 동안 열지 않음 
					<input type="button" id="popBtn" value="닫기" />
				</form>
			</div>
		</div>
<%		
	}else{
%>
		<%= "공지사항 팝업 없음" %>
<%		
	}
%>

</body>
</html>

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

  • 개발 순서
    ========================
    1. 라이브러리 포팅, 공통 클래스 포팅
    2. 테이블 만들고
    인덱스 확인, 채번 쿼리 만들고
    3. 클래스 만들기
    3.1 VO 패키지 및 클래스 만들기
    3.2 Service 만들기 함수까지 다 만들기
    3.3 DAO 만들기 함수까지 다 만들기
    3.4 SQL 만들기 함수까지 다 만들기
    %%--------------------------------
    로그포제이 사용할 수 있게 포팅하기 
    1.  kosServlet/WebContent/WEB-INF/lib/log4j-1.2.17.jar 
    2.  Java Resources/src/log4j.xml 포팅하기 
    3.  kosServlet/WebContent/WEB-INF/web.xml log4j.xml 경로 세팅하기 
    <!-- log4j setting -->
    <context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/classes/log4j.xml</param-value>
    </context-param> 
    Logger logger = LogManager.getLogger(사용할 클래스이름.class);
    logger.info("로그 메시지");
    %%--------------------------------
    3.5 Controller 만들기 
    3.5 insert 구문 만들기 <-- SQLDeveloper
    3.6 DAOImpl 에서 함수 만들기 
    3.7 Service 하고 DAO 연결 
    3.8 Controller 코드해서 백단 테스트 하기 

    프론트 만드기 
    1. 게시판 글 입력 

    board.html BoardController BoardDAO  BoardSqlMap
    name="bnum" String bnum = request.getParameter("bnum") BNUM
    name="bsubject" String bsubject = request.getParameter("bsubject") BSUBJECT
    name="bwriter" String bwriter = request.getParameter("bwriter") BWRITER
    name="bpw" String bpw = request.getParameter("bpw") BPW
    name="bmemo" String bmemo = request.getParameter("bmemo") BMEMO

    private String bnum;
    private String bsubject;
    private String bwriter;
    private String bpw;
    private String bmemo;
    private String deleteyn;
    private String insertdate;
    private String updatedate;


    프로퍼티  컬럼
    --------------------------
    bnum BNUM
    bsubject BSUBJECT
    bwriter BWRITER
    bpw BPW
    bmemo BMEMO
    deleteyn DELETEYN
    insertdate INSERTDATE
    updatedate UPDATEDATE
    ========================================================================================
    board.html 
    <form>
    isudType="I"
    bsubject        
    bwriter
    bpw
    bmemo

    - BoardController - BoardService - BoardServicdImpl - BoardDAO - BoardDAOImpl - BoardSqlMap

    if("I").equals(isudType){

    isudType="I"
    bsubject        
    bwriter
    bpw
    bmemo

    BoardVO bvo;

    BoardService
    BoardServicdImpl().boardInsert(bvo)


    }


    - BoardService 

    boardInsert(bvo)

    - BoardServicdImpl

    boardInsert(bvo){

    BoardDAO
    BoardDAOImp().boardInsert(bvo)

    }

    - BoardDAO 

    boardInsert(bvo)

    - BoardDAOImp 

    boardInsert(bvo){

    Connection conn = null;
    BoardSqlMap.getBoardInsert()

    }

    - BoardSqlMap


    BoardSqlMpa - BoardDAOImpl - BoardDAO - BoardSerivceImpl - BoardService 



    - BoardController
    성공
    - boardInsert.jsp  - BoardController
    isudType="SALL"
    실패
    - board.html
  • 로그 찍기 및 SelectAll 추가, 약간의 수정
  • TestDB.java
package a.b.c.com.common;

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

public class TestDB {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
			
		try {
			Connection conn = DBCP_Connectivity.getConnection();
			PreparedStatement stmt = conn.prepareStatement("SELECT * FROM EMP");
			ResultSet rsRs = stmt.executeQuery();
			
			while (rsRs.next()) {
				System.out.println(rsRs.getString(1) + " ");
			}
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
}

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

  • 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.KosConnectivity;
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
		return null;
	}

	// 입력하기 
	@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
		return false;
	}

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

}
  • ChabunQuery.java
package a.b.c.com.common;

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

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

public abstract class ChabunQuery {

	static Logger logger = LogManager.getLogger(ChabunQuery.class);
	
	
	public static final short CHABUN_QUERY_BOARD = 0;
	
	public static String chabun_query[] = {
			"SELECT /*+ INDEX_DESC(A SYS_C0012485) */ NVL(MAX(SUBSTR(A.BNUM, -4)), 0) + 1 AS COMMON FROM MVC_BOARD A"
	};
	
	public static String getBoardChabunQuery() {
		
		logger.info("ChabunQuery :: getBoardChabunQuery() 함수 진입 >>> : ");
		
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rsRs = null;
		String commNum = "";
		
		try {
			conn = KosConnectivity.getConnection();
			System.out.println("conn >>> : " + conn);
			String sql = ChabunQuery.chabun_query[0];
			pstmt = conn.prepareStatement(sql);
			logger.info("채번 쿼리 >>> : \n" + sql);
			
			rsRs = pstmt.executeQuery();
			
			if (rsRs != null) {
				while (rsRs.next()) {
					commNum = rsRs.getNString("COMMON");
				}
			} else {
				System.out.println("ChabunQuery :: 채번 검색 결과 없음 >>> : " + rsRs);
			}
			
		} catch (Exception e) {
			System.out.println("ChabunQieru :: 채번 검색 중 에러가 >>> : " + e);
		}
		
		return commNum;
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String commNum = ChabunQuery.getBoardChabunQuery();
		System.out.println("commNum >>> : " + commNum);
	}
}
  • Chabuntill.java
package a.b.c.com.common;

public abstract class ChabunUtil {
	
	public static final String BIZ_GUBUN_BOARD = "B";
	
	public static String numPad(String t, String c) {
		
		for (int i = c.length(); i< 4; i++) {
			c = "0" + c;
		}
		String ymd = DateFormatUtil.ymdFormats(t);
		return ymd.concat(c);
	}

	public static String getBoardChabun(String type) {
		
		String commNum = ChabunQuery.getBoardChabunQuery();
		return BIZ_GUBUN_BOARD.concat(ChabunUtil.numPad(type, commNum));
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// System.out.println(">>>  : " + ChabunUtil.getMemChabun("d"));
		System.out.println(">>> : " + ChabunUtil.getBoardChabun(""));
	}
}
  • 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() { return null;}
	
	// 입력하기
	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() { return null;}
	public static String getBoardDelete() { return null;}
}
  • 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
		return null;
	}

	// 입력하기
	@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
		return false;
	}

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

}
  • 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>");
				}
			}
		}else {
			logger.info("isudType 구분자가 없어서 무슨일을 할 지 모르겠어요 >>> : ");
		}
	}

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

}

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

  • 프론트 만들기
  • Boatd.html 설명

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

  • board.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<!-- 디바이스에 최적화된 크기로 출력됨 ------------------------------------->
<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">
	
	$(document).ready(function(){
		
		$("#bpw").on("input", function(){
			
			var m = $("#bpw");
			if (m.val().length > m.maxlength){
				m.value = m.value.slice(0, m.maxlength);
			}		
		});
		
		$('#insertBtn').on('click', function(){
			
			$('#insertForm').attr({
				"action":"/kosServlet/board",
				"method":"GET",
				"enctype":"application/x-www-form-urlencoded"
			}).submit();
		});
	});
</script>
<body>
	<h3>board.html</h3>
	<hr>
	<form name="insertForm" id="insertForm">
		<table>
			<tr>
				<td>글번호</td>
				<td>
					<input type="text" class="bnum" name="bnum" id="bnum" 
						placeholder="글번호" style="width:250px;" readonly/>
				</td>
			</tr>
			<tr>
				<td>글제목</td>
				<td>
					<input type="text" class="bsubject" name="bsubject" id="bsubject" 
						placeholder="글제목" style="width:250px;"/>
				</td>
			</tr>
			<tr>
				<td>글쓴이</td>
				<td>
					<input type="text" class="bwriter" name="bwriter" id="bwriter" 
						placeholder="글쓴이" style="width:250px;"/>
				</td>
			</tr>
			<tr>
				<td>비밀번호</td>
				<td>
					<input type="text" class="bpw" name="bpw" id="bpw" 
						placeholder="비밀번호는 8자리로" maxlength="8" 
						style="width:250px; background-color:#e6e6e6;"/>
				</td>
			</tr>
			<tr>
				<td>글내용</td>
				<td>
					<textarea class="bmemo" name="bmemo" id="bmemo" cols="32" rows="5"></textarea>
				</td>
			</tr>
			<tr>		
				<td colspan="2">
					<!-- hidden flag : 히든 플래그 -->
					<input type="hidden" name="isudType" id="isudType" value="I" />
					
					<input type="image" id="insertBtn" 
							src="/kosServlet/img/img_mando/ase.gif" width="50" height="50" value="글쓰기"/>
					<button type="reset">
						<img src="/kosServlet/img/img_mando/b-baa.gif" width="50" height="50"/>				
					</button>					
				</td>
			</tr>
		</table>
	</form>
</body>
</html>
  • boardInsert.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>boardInsert.jsp</h3>
	<hr>
	<%
		Logger logger = LogManager.getLogger(this.getClass());
		logger.info("boardInsert.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>

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

  • index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>BOARD</title>
</head>
<body>
	<h3>index.html</h3>
	<hr>
	<a href="/kosServlet/kosmo/board/board.html">입력 테스트</a>
</body>
</html>

글제목, 글쓴이, 비밀번호, 글내용 입력 후 하얀 만두 누르면

  • SelectAll 만들기 ← 위 코드에 추가해두었음
    • BoardSqlMap.java
    • BoardDAOImpl.java

7교시 (16:30-17: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>
</head>

<body>
	<h3>boardSelectAll.jsp</h3>
	<hr>
	<form>
		<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>  
		<%
			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>
  • index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>BOARD</title>
</head>
<body>
	<h3>index.html</h3>
	<hr>
	<a href="/kosServlet/kosmo/board/board.html">입력 테스트</a>
	<a href="/kosServlet/board?isudType=SALL">전체조회 테스트</a>
</body>
</html>

 

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

  • boardSelectAll.jsp ← jQuery 추가
<%@ 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("bnumCheck");
			console.log("chkObj >>> : " + chkObj);
			for (var i=0; i < chkObj.length; i++){
				if (chkObj[i] != chk){
					chkObj[i].checked = false;
				}
			}
		}
		*/
		
		$(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(){
				if ($(this).prop('checked')){
					$('.bnumChk').prop('checked', false);
					$(this).prop('checked', true);
				}
			});
			
			// 수정하기 
			$('#U').on('click', function(){
				
				if ($('.bnumChk:checked').length == 0 ){
					alert("수정할 글번호 하나를 선택하시오 !!!");
					return;
				}
				
			});
			
		});
	
	</script>
	<style type="text/css">
	
		.tt{
			text-align: center;
		}
		
	</style>
</head>
<body>
	<h3>boardSelectAll.jsp</h3>
	<hr>
	<form>
		<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>  
		<%
			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>

Notes


728x90