Data Scientist 옌

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

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

22-04-26(화) 062일차 [Java, HTML, JavaScript, JSP, Servlet] Servlet이란, MODEL2+WEB_MVC 패턴으로 게시판 만들기

옌炎 2022. 6. 14. 17:58
728x90

수업내용


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

  • test_length.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">
		alert("자바스크립트 블록 시작 >>> : ");	
	
		$(document).ready(function(){
			alert("jQuery ready 블록>>>");
			
			$("#btn").on("click", function(){
				
				/*
				var jq_h_sel_class = $('.h_sel');
				// alert("jq_h_sel_class >>> : " + jq_h_sel_class);
				alert("jq_h_sel_class.length >>> : " + jq_h_sel_class.length);
				// alert("jq_h_sel_class >>> : " + JSON.stringify(jq_h_sel_class));
				var jq_h_sel_class_1 = $('.h_sel_option').length;
				alert("jq_h_sel_class_1 >>> : " + jq_h_sel_class_1);
				
				var jq_h_sel_name = $("select[name='h_sel']");
				// alert("jq_h_sel_name >>> : " + jq_h_sel_name);
				alert("jq_h_sel_name.length >>> : " + jq_h_sel_name.length);
				// alert("jq_h_sel_name >>> : " + JSON.stringify(jq_h_sel_name));
				var jq_h_sel_name_1 = $("select[name='h_sel'] option").length;
				alert(jq_h_sel_name_1 >>> : " + jq_h_sel_name_1);
				
				var h_sel_id = $('##h_sel');
				// alert("h_sel_id >>> : " + h_sel_id);
				alert("h_sel_id.length >>> : " + h_sel_id.length);
				var h_sel_id_1 = $('#h_sel option').length;
				alert("h_sel_id_1 >>> : " + h_sel_id_1);
				*/
				
				var js_h_sel_id_1 = document.getElementById('h_sel_id').length;
				alert("js_h_sel_id_1 >>> : " + js_h_sel_id_1);
				
				var js_h_sel_id = document.getElementById('h_sel_id').options.length;
				alert("js_h_sel_id >>> : " + js_h_sel_id);
				// alert("js_h_sel_id.length >>> : " + js_h_sel_id.length);
				
				var js_h_sel_class = document.getElementByClassName('h_sel_class')[0];
				alert("js_h_sel_class.length >>> : " + js_h_sel_class.length);
				
				var js_h_sel_name_1 = document.getElementByName('h_sel_name')[1];
				alert("js_h_sel_name_1.length >>> : " + js_h_sel_name_1.length);
				
				var js_h_sel_name = document.formTest.h_sel_name;
				alert("js_h_sel_name.length >>> : " + js_h_sel_name.length);
			});
		});
	</script>
</head>
<body>
	<form name="formTest" id="formTest">
		<select class="h_sel_class" name="h_sel_name" id="h_sel_id">
			<option value="01">서울</option>
			<option value="02">경기도</option>
			<option value="03">인천시</option>
			<option value="04">부산시</option>
		</select>
		<select class="h_sel_class" name="h_sel_name" id="h_sel_id">
			<option value="01">서울</option>
			<option value="02">경기도</option>
		</select>
		<input type="button" id="btn" value="버튼"/>
	</form>
</body>
</html>

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

  • Servlet

    C:\Program Files\Apache Software Foundation\Tomcat 8.5\lib\jasper.jar
    C:\00.KOSMO108\30.Web\eclipse_work_hbe_work\.metadata\.plugins\
    org.eclipse.wst.server.core\
    ====================================
    temp0
    ====================================
    \work\Catalina\localhost\kosMember\org\apache\jsp\kos_005fjsp
    test_jsp.java
    test_jsp.class

    test.jsp -------------------------
     자스퍼 라이브러리가 개입해서
     test.jsp 파일을 test_jsp.java 서블릿 소스로 변환한다.
    test_jsp.java
     자스퍼 라이브러리가 개입해서
     test_jsp.java 서블릿 소스를 컴파일 해서 test_jsp.class로 만든다.
    test_jsp.class
     이 후에 test_jsp.class 클래스 파일을 실행해서 결과를
     클라이언트에게 전송한다.

    jsp 소스를 REAL SERVER에 반영할 때는 꼭 한 번 실행하고 서비스를 해야 한다.

    applet : 클라이언트 브라우저에서 jvm이 직접 실행되서 보여주는 java 프로그램이다.

    서블릿 Servlet : Server + applet : 서버에서 실행이 되는 프로그램 : CGI 프로그램의 대표 주자가 된다. 
    MS : ASP <--- SUN : JSP  : 껍떼기 : 태그 기술 : 내부는 Serlvet 으로 실행되는 프로그램 


    서블릿 하는 역활
    -- 웹 애플리케이션을 만드는 컴포넌트 : 화면, 배치 .... <-- 사장 된다.

    1. 클라이언트 요청에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트 역활을 한다. 
    2. MVC 모델에서 컨트롤러 Controller 역활을 한다. 
    3. Servlet 함수단위가 스레드로 동작을 한다.

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

  • Servlet

    클라이언트에서 요청하는 방법 
    1. @WebServlet 으로 요청하는 방법
    @ : 어노테이션 : 자바 기술 1.5(5.0) 부터 지원
    WebServlet : 인터페이스 

    2. Context/WEB-INF/web.xml URL Mapping  <-- 스트러츠 struts 기술 
    서블릿 클래스 마다 한개씩 적용되어야 한다. 
    <servlet>
    <servlet-name>서블릿클래스이름</servlet-name>
    <servlet-class>패키지명.서블릿클래스이름</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>서블릿클래스이름</servlet-name>
    <url-mapping>url 패턴 지정[/문자, *.do, *.abc ....]</url-mapping>
    </servlet-mapping>

    서블릿 라이프 사이클

    init() 함수 호출 
    service() 함수 호추 
    doGet() <-- method="GET"
    doPost() <-- method="POST"

    jsp 페이지, Servlet 페이지의 defalut 메소드는 GET 방식이다.
    destroy()


    함수 공부 
    --------------------------
    getParameter(name) 문자열 name과 같은 이름을 가진 파라미터의 값을 가져온다.
    getParameterValues(name) 문자열 name과 같은 이름을 가진 파라미터의 값을 배열 형태로 가져옴. checkbox, multiple list 등에 주로 사용된다.
    getParameterNames()
    getMethod() 현재 요청이 GET, POST인지 가져온다.
    getRemoteAddr() 클라이언트의 IP 주소를 가져온다.
    getCharacterEncoding()

    setContentType(type) 문자열 형태의 type에 지정된 MIME Type으로 ContentType을 설정한다.
    setHeader(name, value) 문자열 name의 이름으로 문자열 value 값을 헤더로 설정한다.
    sendError(status, msg) 오류 코드를 설정하고 메시지를 보낸다.
    sendRedirect(url) 클라이언트 요청을 다른 페이지로 보낸다.
    setCharacterEncoding() 현재 JSP로 전달되는 내용을 지정하는 캐릭터셋을 변환한다. HTML FORM에서는 한글 입력시 정상적으로 처리하려면 반드시 필요하다.
  • 게시판 만들기
    • ojdbc6.jar, log4j-1.2.17.jar, commons-logging-1.1.2.jar 라이브러리 /kosServlet/WebContent/WEB-INF/lib에 복사해두기
    • KosMember에서 common 클래스 복사해오기
  • ChabunQuery.java
package a.b.c.com.common;

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

public abstract class ChabunQuery {

	public static final short CHABUN_QUERY_MEMBER = 0;
	public static final short CHABUN_QUERY_BOARD = 1;
	
	public static String chabun_query[] = {
			"SELECT NVL(MAX(SUBSTR(A.MNUM, -4)), 0) + 1 AS COMM_NUM FROM KOS_MEMBER A",
			"SELECT /*+ INDEX_DESC(A SYS_C0012485) */ NVL(MAX(SUBSTR(A.BNUM, -4)), 0) + 1 AS COMMON FROM MVC_BOARD A"
	};
	
	public static String getMemChabunQuery() {
		
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rsRs = null;
		String commNum = "";
		
		try {
			conn = KosConnectivity.getConnection();
			
			String sql = ChabunQuery.chabun_query[ChabunQuery.CHABUN_QUERY_MEMBER];
			pstmt = conn.prepareStatement(sql);
			System.out.println("채번 쿼리 >>> : \n" + sql);
			
			rsRs = pstmt.executeQuery();
			
			if (rsRs != null) {
				while (rsRs.next()) {
					commNum = rsRs.getString("COMM_NUM");
				}
			} else {
				System.out.println("ChabunQuery :: 채번 검색 결과 없음 >>> : " + rsRs);
			}
		} catch (Exception e) {
			System.out.println("ChabunQuury :: 채번 검색 중 에러가 >>> : " + e);
		}
		
		return commNum;
	}
	
	public static String 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[1];
			pstmt = conn.prepareStatement(sql);
			System.out.println("채번 쿼리 >>> : \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);
	}
}
  • KosConnectivity.java
package a.b.c.com.common;

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

public class KosConnectivity {

	// DataSource 정보 : 데이터베이스 연결 정보
	public static final String JDBC_DRIVER		= "oracle.jdbc.driver.OracleDriver";
	public static final String JDBC_URL			= "jdbc:oracle:thin:@localhost:15221:orclKSY00";
	public static final String JDBC_USER		= "scott";
	public static final String JDBC_PASSWORD	= "tiger";
	
	// Connection 연결하는 함수 만들기
	public static Connection getConnection() {
		
		Connection conn = null;
		
		try {
			
			Class.forName(JDBC_DRIVER);
			conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD);
			
		} catch (Exception e) {
			System.out.println("데이터베이스 연결에 문제가 있어요 >>> : " + e.getMessage());
		}
		
		return conn;
	}
	
	// select
	public static void conClose(Connection conn, PreparedStatement pstmt, ResultSet rsRs) {
		try {
			if (rsRs != null) try {rsRs.close(); rsRs = null;} catch (Exception ex) {}
			if (pstmt != null) try {pstmt.close(); pstmt = null;} catch (Exception ex) {}
			if (conn != null) try {conn.close(); conn = null;} catch (Exception ex) {}
 		} catch (Exception e2) {}
	}
	
	// insert, update, delete
	public static void conClose(Connection conn, PreparedStatement pstmt) {
		try {
			if (pstmt != null) try {pstmt.close(); pstmt = null;} catch (Exception ex) {}
			if (conn != null) try {conn.close(); conn = null;} catch (Exception ex) {}
 		} catch (Exception e2) {}
	}
}
  • DateFormatUtil.java
package a.b.c.com.common;

import java.text.SimpleDateFormat;
import java.util.Date;

public abstract class DateFormatUtil {
	
	public static String ymdFormat() {
		return new SimpleDateFormat("yyyyMMdd").format(new Date());
	}
	
	public static String ymFormat() {
		return new SimpleDateFormat("yyyyMM").format(new Date());
	}
	
	public static String yFormat() {
		return new SimpleDateFormat("yyyy").format(new Date());
	}
	
	public static String ymdFormats(String ymdFlag) {
		
		String y = "";
		
		if ("D".equals(ymdFlag.toUpperCase())) {
			y = DateFormatUtil.ymdFormat();
		}
		if ("M".equals(ymdFlag.toUpperCase())) {
			y = DateFormatUtil.ymFormat();
		}
		if ("Y".equals(ymdFlag.toUpperCase())) {
			y = DateFormatUtil.yFormat();
		}
		if ("N".equals(ymdFlag.toUpperCase())) {
			y = "";
		}
		
		return y;
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub

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

public abstract class ChabunUtil {
	
	public static final String BIZ_GUBUN_MEMBER = "M";
	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 getMemChabun(String type) {
		
		String commNum = ChabunQuery.getMemChabunQuery();
		return BIZ_GUBUN_MEMBER.concat(ChabunUtil.numPad(type, commNum));
	}
	
	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(""));
	}
}
  • EncryptSHA.java
package a.b.c.com.common;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public abstract class EncryptSHA {

	/*
	암호화 할 때 복호화가 불가능한 단반향 방식 암호화
	SHA-2 Secure Hash Algorithm 2
	해시 함수가 출력하는 압축하는 문장 다이제스트 Digest라고 한다.
	SHA-2가 생성하는 다이제스트는 224, 256, 384, 512bit 등 다양
	256bit : SHA-2를 SHA-256이라고 한다.
	*/
	public static String encryptSHA256(String s) {
		
		String ss = "";
		try {
			MessageDigest md = MessageDigest.getInstance("SHA-256");
			// System.out.println("md >>> : " + md);
			
			md.update(s.getBytes());
			byte byteData[] = md.digest();
			// System.out.println("byteData >>> : + " + byteData);
			
			StringBuffer sb = new StringBuffer();
			
			for (int i=0; i < byteData.length; i++) {
				
				sb.append(Integer.toString((byteData[i]&0xff) + 0x100, 16).substring(1));
				
				int tmp = byteData[i] & 0xff;
				//System.out.println("tmp >>> : " + tmp);
				int tmp_1 = 0x100;
				//System.out.println("tmp_1 >>> : " + tmp_1);
				int tmp_sum = tmp + tmp_1;
				//System.out.println("tmp_sum >>> : " + tmp_sum);
				String tmp_s = Integer.toString(tmp_sum, 16);
				//System.out.println("tmp_s >>> : " + tmp_s);
				String tmp_s_1 = tmp_s.substring(1);
				System.out.println("tmp_s_1 >>> : " + tmp_s_1);
			}
			ss = sb.toString();
			
		} catch (NoSuchAlgorithmException e) {
			System.out.println(e.getMessage());
		}
		
		return ss;
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s = EncryptSHA.encryptSHA256("hg74111#");
		System.out.println("s >>> : " + s);
	}
}

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

  • 쿼리
-- 일반 게시판 쿼리 

CREATE TABLE MVC_BOARD(
	 BNUM		VARCHAR2(20)    PRIMARY KEY 
	,BSUBJECT	VARCHAR2(100)	NOT NULL
	,BWRITER	VARCHAR2(30)    NOT NULL 
	,BPW		VARCHAR2(300)
	,BMEMO		VARCHAR2(2000)    
	,DELETEYN	VARCHAR2(1)		NOT NULL
	,INSERTDATE	DATE
	,UPDATEDATE DATE
);

SELECT * FROM MVC_BOARD;
ROLLBACK;
INSERT INTO MVC_BOARD (BNUM,   BSUBJECT, BWRITER, BPW, BMEMO, DELETEYN, INSERTDATE, UPDATEDATE)
               VALUES ('B0001',    '01',    '01','01',  '01',      'Y',    SYSDATE,    SYSDATE); 
               
               
               
/*
private String bnum;
private String bsubject;
private String bwriter;
private String bpw;
private String bmemo;		
private String deleteyn;
private String insertdate;
private String updatedate;
*/
SELECT * FROM MVC_BOARD;

-- 인덱스
-- SYS_C001
SELECT TABLE_NAME, COLUMN_NAME, INDEX_NAME
FROM   USER_IND_COLUMNS
WHERE  TABLE_NAME IN ('MVC_BOARD');

-- 일반 게시판 채번 SYS_C0012485
-- /*+ 힌트(HINT) */
-- HINT : 힌트 : 오라클에서 사용하는 기술 : SELECT 할 때 조회 속도를 향상 시키기 위해서 
SELECT 
    /*+ INDEX_DESC(A SYS_C0012485) */
    NVL(MAX(SUBSTR(A.BNUM, -4)), 0) + 1 AS COMMON  
FROM MVC_BOARD A;

SELECT /*+ INDEX_DESC(A SYS_C0012485) */ NVL(MAX(SUBSTR(A.BNUM, -4)), 0) + 1 AS COMMON FROM MVC_BOARD A;
  • BoardVO.java
package a.b.c.com.kosmo.board.vo;

public class BoardVO {

	private String bnum;
	private String bsubject;
	private String bwriter;
	private String bpw;
	private String bmemo;
	private String deleteyn;
	private String insertdate;
	private String updatedate;
	
	// 생성자
	public BoardVO() {

	}

	public BoardVO(String bnum, String bsubject, String bwriter, String bpw, String bmemo, String deleteyn,
			String insertdate, String updatedate) {
		super();
		this.bnum = bnum;
		this.bsubject = bsubject;
		this.bwriter = bwriter;
		this.bpw = bpw;
		this.bmemo = bmemo;
		this.deleteyn = deleteyn;
		this.insertdate = insertdate;
		this.updatedate = updatedate;
	}
	
	// getter
	public String getBnum() {
		return bnum;
	}
	public String getBsubject() {
		return bsubject;
	}
	public String getBwriter() {
		return bwriter;
	}
	public String getBpw() {
		return bpw;
	}
	public String getBmemo() {
		return bmemo;
	}
	public String getDeleteyn() {
		return deleteyn;
	}
	public String getInsertdate() {
		return insertdate;
	}
	public String getUpdatedate() {
		return updatedate;
	}
	
	// setter
	public void setBnum(String bnum) {
		this.bnum = bnum;
	}
	public void setBsubject(String bsubject) {
		this.bsubject = bsubject;
	}
	public void setBwriter(String bwriter) {
		this.bwriter = bwriter;
	}
	public void setBpw(String bpw) {
		this.bpw = bpw;
	}
	public void setBmemo(String bmemo) {
		this.bmemo = bmemo;
	}
	public void setDeleteyn(String deleteyn) {
		this.deleteyn = deleteyn;
	}
	public void setInsertdate(String insertdate) {
		this.insertdate = insertdate;
	}
	public void setUpdatedate(String updatedate) {
		this.updatedate = updatedate;
	}
}

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

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

import java.util.ArrayList;

import a.b.c.com.kosmo.board.vo.BoardVO;

public interface BoardService {
	
	public ArrayList<BoardVO> boardSelectAll();
	public ArrayList<BoardVO> boardSelect(BoardVO bvo);
	public boolean boardInsert(BoardVO bvo);
	public boolean boardUpdate(BoardVO bvo);
	public boolean boardDelete(BoardVO bvo);
}
  • BoardServiceImpl.java
package a.b.c.com.kosmo.board.service;

import java.util.ArrayList;

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 {

	@Override
	public ArrayList<BoardVO> boardSelectAll() {
		// TODO Auto-generated method stub
		return null;
	}

	@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
		
		BoardDAO bdao = new BoardDAOImpl();
		// boolean bool = bdao.boardInsert(bvo);
		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;
	}

}
  • BoardDAO.java
package a.b.c.com.kosmo.board.dao;

import java.util.ArrayList;

import a.b.c.com.kosmo.board.vo.BoardVO;

public interface BoardDAO {
	
	public ArrayList<BoardVO> boardSelectAll();
	public ArrayList<BoardVO> boardSelect(BoardVO bvo);
	public boolean boardInsert(BoardVO bvo);
	public boolean boardUpdate(BoardVO bvo);
	public boolean boardDelete(BoardVO bvo);
}
  • INSERT 쿼리
INSERT INTO MVC_BOARD (BNUM,   BSUBJECT, BWRITER, BPW, BMEMO, DELETEYN, INSERTDATE, UPDATEDATE)
               VALUES (?, ?, ?, ?, ?, 'Y', SYSDATE, SYSDATE);

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

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

public abstract class BoardSqlMap {
	
	public static String getBoardSelectAll() { return null;}
	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;}
}
  • DBCP_Connectivity.java
package a.b.c.com.common;

import java.sql.Connection;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class DBCP_Connectivity {

	public static Connection getConnection() {
		
		Connection conn = null;
		
		try {
			Context context = new InitialContext();
			DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/jndi_orclKSY00");
			conn = ds.getConnection();
			
		} catch (Exception e) {
			System.out.println("에러가 >>> : " + e);
		}
		
		return conn;
	}
}

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

  • BoardDAOImpl.java
package a.b.c.com.kosmo.board.dao;

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

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 {

	@Override
	public ArrayList<BoardVO> boardSelectAll() {
		// TODO Auto-generated method stub
		return null;
	}

	@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
		
		// 사용할 객체를 지역변수로 선언하고 초기화 하기
		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);
			System.out.println("인서트 쿼리 >>> : \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();
			
			if (nCnt > 0) bool = true;
			
			KosConnectivity.conClose(conn, pstmt);
			
		} catch (Exception e) {
			System.out.println("인서트 디비 에러가 >>> : " + 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;
	}

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

import java.io.IOException;
import java.io.PrintWriter;

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 a.b.c.com.common.ChabunQuery;
import a.b.c.com.common.ChabunUtil;
import a.b.c.com.common.EncryptSHA;
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;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter out = response.getWriter();
		
		String isudType = request.getParameter("isudType");
		
		if (isudType != null && isudType.length() > 0) {
			isudType = isudType.toUpperCase();
			
			if ("I".contentEquals(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();
				
				// 테스트 해보기
				bsubject = "01";
				bwriter = "01";
				bpw = "01";
				bmemo = "01";
				
				bvo.setBnum(bnum);
				bvo.setBsubject(bsubject);
				bvo.setBwriter(bwriter);
				// 패스워드 암호화 하기
				bpw = EncryptSHA.encryptSHA256(bpw);
				bvo.setBpw(bpw);
				bvo.setBmemo(bmemo);
				
				
				System.out.println("bvo.getBnum() >>> : " + bvo.getBnum());
				System.out.println("bvo.getBsubject() >>> : " + bvo.getBsubject());
				System.out.println("bvo.getBwriter() >>> : " + bvo.getBwriter());
				System.out.println("bvo.getBpw() >>> : " + bvo.getBpw());
				System.out.println("bvo.getBmemo() >>> : " + bvo.getBmemo());
				
				BoardService bs = new BoardServiceImpl();
				boolean bool = bs.boardInsert(bvo);
				
				if (bool) {
					System.out.println("입력 성공 >>> : " + bool);
					request.setAttribute("bool", new Boolean(bool));
					RequestDispatcher rd = request.getRequestDispatcher("/kosmo/board/boardInsert.jsp");
					rd.forward(request, response);
				} else {
					System.out.println("입력 실패 >>> : " + bool);
					out.println("<script>");
					out.println("location.href='/kosmo/board/board.html'");
					out.println("</script>");
				}
				if ("SALL".equals(isudType)) {
					
				}
			} else {
				System.out.println("isudType 구분자가 없어 무슨 일을 할지 모르겠어요 >>> : ");
			}
		}
	}
		
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
}

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

  • 자습

Notes


728x90