국비지원교육 (22.01-22.07)/강의노트
22-05-24(화) 081일차 [Oracle, Spring Framework, Mybatis Framework] 게시판 만들기
옌炎
2022. 6. 22. 15:19
728x90
수업내용
1교시 (09:30-10:20)
- 프로젝트 방식에 대한 설명
- JOIN
-- SQL 99
-- NATURAL JOIN
SELECT E.EMPNO, E.ENAME, E.JOB, E.MGR, E.HIREDATE, E.SAL, E.COMM,
DEPTNO, D.DNAME, D.LOC
FROM EMP E NATURAL JOIN DEPT D
ORDER BY DEPTNO, E.EMPNO;
-- JOIN ~ USING
SELECT E.EMPNO, E.ENAME, E.JOB, E.MGR, E.HIREDATE, E.SAL, E.COMM,
DEPTNO, D.DNAME, D.LOC
FROM EMP E JOIN DEPT D USING (DEPTNO)
ORDER BY DEPTNO, E.EMPNO;
SELECT *
FROM EMP A NATURAL JOIN DEPT B
ORDER BY DEPTNO, A.EMPNO;
--SELECT A.*, B.*
--FROM EMP A NATURAL JOIN DEPT B
--ORDER BY DEPTNO, A.EMPNO;
SELECT *
FROM EMP A JOIN DEPT B USING (DEPTNO)
ORDER BY DEPTNO, A.EMPNO;
--SELECT A.*, B.*
--FROM EMP A JOIN DEPT B USING (DEPTNO)
--ORDER BY DEPTNO, A.EMPNO;
SELECT *
FROM EMP A, DEPT B
WHERE A.DEPTNO = B.DEPTNO;
SELECT A.*, B.*
FROM EMP A, DEPT B
WHERE A.DEPTNO = B.DEPTNO;
2교시 (10:30-11:20)
- select
- row 단위 리턴
- 단일행 함수
- group by
- join
- inner
- outer
- 서브쿼리
- 인라인 뷰
- 서브쿼리
- 스칼라
- row 단위 리턴
- 뷰
-- 뷰
CREATE TABLE EMP02
AS
SELECT EMPNO, ENAME, SAL, DEPTNO FROM EMP;
SELECT * FROM EMP02;
CREATE VIEW VIEW_EMP02
AS
SELECT *
FROM EMP02
WHERE DEPTNO = 10;
-- CONN SYSTEM/1234;
-- GRANT CREATE VIEW TO SCOTT;
SELECT * FROM VIEW_EMP02;
3교시 (11:30-12:20)
- VIEW
-- 복합 뷰(complex view : 기본 테이블 2개 이상일 때
-- ISUD 불가능
CREATE VIEW VIEW_EMP_DEPT
AS
SELECT A.EMPNO, A.ENAME, A.SAL, B.DEPTNO, B.DNAME
FROM EMP A, DEPT B
WHERE A.DEPTNO = B.DEPTNO
AND A.DEPTNO = 10;
SELECT * FROM VIEW_EMP_DEPT;
--INSERT INTO VIEW_EMP_DEPT
--VALUES (8001, 'AAAA', 4000, 10, 'ACCOUNT');
-- 뷰 생성 시 컬럼명을 조정할 수 있다.
CREATE OR REPLACE VIEW VIEW_EMP02_COL(사원번호, 사원명, 급여, 부서번호)
AS
SELECT EMPNO, ENAME, SAL, DEPTNO
FROM EMP02;
SELECT * FROM VIEW_EMP02_COL;
SELECT * FROM VIEW_EMP02_COL WHERE 부서번호 = 10;
--SELECT * FROM VIEW_EMP02_COL WHERE DEPTNO = 10;
-- 뷰를 새로 만든 것
CREATE OR REPLACE VIEW VIEW_EMP02_COL_1
AS
SELECT EMPNO AS E_1, ENAME AS E_2, SAL AS E_3, DEPTNO AS E_4
FROM EMP02;
SELECT * FROM VIEW_EMP02_COL_1;
-- NOFORCE : DEFAULT : 기본 테이블이 없으면 뷰를 생성하지 않음
CREATE OR REPLACE VIEW VIEW_EMP02_1
AS
SELECT EMPNO, ENAME, SAL, DEPTNO
FROM EMP02_NOTABLE
WHERE ROWNUM <= 3;
--오류 보고 -
--ORA-00942: 테이블 또는 뷰가 존재하지 않습니다
--00942. 00000 - "table or view does not exist"
--*Cause:
--*Action:
-- FORCE : 기본 테이블이 없어도 USER_VIEWS 데이터 사전에 뷰를 생성한다.
CREATE OR REPLACE FORCE VIEW VIEW_EMP02_2
AS
SELECT EMPNO, ENAME, SAL, DEPTNO
FROM EMP02_NOTATBLE
WHERE ROWNUM <= 3;
--경고: 컴파일 오류와 함께 뷰가 생성되었습니다.
-- WITH READ ONLY : 읽기만 가능
-- 대부분의 뷰는 리드온리로 생성할 것
CREATE OR REPLACE VIEW VIEW_EMP04
AS
SELECT EMPNO, ENAME, DEPTNO, JOB
FROM EMP
WHERE JOB LIKE 'MANAGER' WITH READ ONLY;
SELECT * FROM VIEW_EMP04;
INSERT INTO VIEW_EMP04
VALUES (9000, 'ABC', 30, 'MANAGER');
--명령의 118 행에서 시작하는 중 오류 발생 -
--INSERT INTO VIEW_EMP04
--VALUES (9000, 'ABC', 30, 'MANAGER')
--오류 발생 명령행: 118 열: 1
--오류 보고 -
--SQL 오류: ORA-42399: 읽기 전용 뷰에서는 DML 작업을 수행할 수 없습니다.
--42399.0000 - "cannot perform a DML operation on a read-only view"
-- WITH CHECK OPTION
CREATE OR REPLACE VIEW VIEW_EMP03
AS
SELECT EMPNO, ENAME, DEPTNO, JOB
FROM EMP
WHERE JOB LIKE 'MANAGER' WITH CHECK OPTION;
SELECT * FROM VIEW_EMP03;
INSERT INTO VIEW_EMP03
VALUES (9000, 'ABC', 30, 'SALESMAN');
--명령의 139 행에서 시작하는 중 오류 발생 -
--INSERT INTO VIEW_EMP03
--VALUES (9000, 'ABC', 30, 'SALESMAN')
--오류 보고 -
--ORA-01402: 뷰의 WITH CHECK OPTION의 조건에 위배 됩니다
4교시 (12:30-13:20)
게시판 구현하기
- CommonUtils.java
package a.b.c.com.kosmo.common;
public abstract class CommonUtils {
// 게시판
public static final String PRODUCT_IMG_UPLOAD_PATH = "C:\\00.KOSMO108\\30.Web\\eclipse_kosmo_spring_work\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\wtpwebapps\\kosmoSpring\\fileupload\\product";
public static final int PRODUCT_IMG_FILE_SIZE = 10*1024*1024; // 10MB
public static final String PRODUCT_EN_CODE = "UTF-8";
// 상품 페이징
public static final int PRODUCT_PAGE_SIZE = 3;
public static final int PRODUCT_GROUP_SIZE = 3;
public static final int PRODUCT_CUR_PAGE = 1;
public static final int PRODUCT_TOTAL_COUNT = 0;
// 회원
public static final String MEMBER_IMG_UPLOAD_PATH = "C:\\00.KOSMO108\\30.Web\\eclipse_kosmo_spring_work\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\wtpwebapps\\kosmoSpring\\fileupload\\mem";
public static final int MEMBER_IMG_FILE_SIZE = 10*1024*1024; // 10MB
public static final String MEMBER_EN_CODE = "UTF-8";
// 게시판
public static final String BOARD_IMG_UPLOAD_PATH = "C:\\00.KOSMO108\\30.Web\\eclipse_kosmo_spring_work\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\wtpwebapps\\kosmoSpring\\fileupload\\board";
public static final int BOARD_IMG_FILE_SIZE = 10*1024*1024; // 10MB
public static final String BOARD_EN_CODE = "UTF-8";
}
- ChabunUtil.java
package a.b.c.com.kosmo.common;
public abstract class ChabunUtil {
public static final String BIZ_GUBUN_P = "P"; // 상품
public static final String BIZ_GUBUN_C = "C"; // 카트
public static final String BIZ_GUBUN_M = "M"; // 회원
public static final String BIZ_GUBUN_B = "B"; // 게시판
// type : D : YYYYMMDD, M : YYYYMM, Y : YYYY, N;
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 getProductChabun(String type, String memNum) {
return BIZ_GUBUN_P.concat(ChabunUtil.numPad(type, memNum));
}
public static String getCartChabun(String type, String memNum) {
return BIZ_GUBUN_C.concat(ChabunUtil.numPad(type, memNum));
}
public static String getMemberChabun(String type, String memNum) {
return BIZ_GUBUN_M.concat(ChabunUtil.numPad(type, memNum));
}
public static String getBoardChabun(String type, String memNum) {
return BIZ_GUBUN_B.concat(ChabunUtil.numPad(type, memNum));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String c = "1";
System.out.println(">>> : " + ChabunUtil.getProductChabun("m", c));
}
}
- KosmoBoardVO.java
package a.b.c.com.kosmo.board.vo;
public class KosmoBoardVO {
private String kbnum;
private String kbsubject;
private String kbname;
private String kbcontent;
private String kbfile;
private String kbpw;
private String deleteyn;
private String insertdate;
private String updatedate;
// 생성자
public KosmoBoardVO() {
}
public KosmoBoardVO(String kbnum, String kbsubject, String kbname, String kbcontent, String kbfile, String kbpw,
String deleteyn, String insertdate, String updatedate) {
this.kbnum = kbnum;
this.kbsubject = kbsubject;
this.kbname = kbname;
this.kbcontent = kbcontent;
this.kbfile = kbfile;
this.kbpw = kbpw;
this.deleteyn = deleteyn;
this.insertdate = insertdate;
this.updatedate = updatedate;
}
// getter/setter
public String getKbnum() {
return kbnum;
}
public String getKbsubject() {
return kbsubject;
}
public String getKbname() {
return kbname;
}
public String getKbcontent() {
return kbcontent;
}
public String getKbfile() {
return kbfile;
}
public String getKbpw() {
return kbpw;
}
public String getDeleteyn() {
return deleteyn;
}
public String getInsertdate() {
return insertdate;
}
public String getUpdatedate() {
return updatedate;
}
public void setKbnum(String kbnum) {
this.kbnum = kbnum;
}
public void setKbsubject(String kbsubject) {
this.kbsubject = kbsubject;
}
public void setKbname(String kbname) {
this.kbname = kbname;
}
public void setKbcontent(String kbcontent) {
this.kbcontent = kbcontent;
}
public void setKbfile(String kbfile) {
this.kbfile = kbfile;
}
public void setKbpw(String kbpw) {
this.kbpw = kbpw;
}
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)
게시판 구현하기
- SpringChabunDAO.java
package a.b.c.com.kosmo.common.dao;
import a.b.c.com.kosmo.product.vo.KosmoProductVO;
import a.b.c.com.kosmo.cart.vo.KosmoCartVO;
import a.b.c.com.kosmo.mem.vo.KosmoMemberVO;
import a.b.c.com.kosmo.board.vo.KosmoBoardVO;
public interface SpringChabunDAO {
public KosmoProductVO getProductChabun();
public KosmoCartVO getCartChabun();
public KosmoMemberVO getMemberChabun();
public KosmoBoardVO getBoardChabun();
}
- SpringChabunDAOImpl.java
package a.b.c.com.kosmo.common.dao;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import a.b.c.com.kosmo.product.vo.KosmoProductVO;
import a.b.c.com.kosmo.cart.vo.KosmoCartVO;
import a.b.c.com.kosmo.mem.vo.KosmoMemberVO;
import a.b.c.com.kosmo.board.vo.KosmoBoardVO;
@Repository
public class SpringChabunDAOImpl implements SpringChabunDAO {
Logger logger = LogManager.getLogger(SpringChabunDAOImpl.class);
@Autowired(required=false)
private SqlSessionTemplate sqlSession;
@Override
public KosmoProductVO getProductChabun() {
// TODO Auto-generated method stub
logger.info("SpringChabunDAOImpl getProductChabun >>> : ");
return sqlSession.selectOne("getProductChabun");
}
@Override
public KosmoCartVO getCartChabun() {
// TODO Auto-generated method stub
logger.info("SpringChabunDAOImpl getCartChabun >>> : ");
return sqlSession.selectOne("getCartChabun");
}
@Override
public KosmoMemberVO getMemberChabun() {
// TODO Auto-generated method stub
logger.info("SpringChabunDAOImpl getMemberChabun >>> : ");
return sqlSession.selectOne("getMemberChabun"); // getMemberChabun
}
@Override
public KosmoBoardVO getBoardChabun() {
// TODO Auto-generated method stub
logger.info("SpringChabunDAOImpl getBoardChabun >>> : ");
return sqlSession.selectOne("getBoardChabun");
}
}
- SpringChabunService.java
package a.b.c.com.kosmo.common.service;
import a.b.c.com.kosmo.product.vo.KosmoProductVO;
import a.b.c.com.kosmo.cart.vo.KosmoCartVO;
import a.b.c.com.kosmo.mem.vo.KosmoMemberVO;
import a.b.c.com.kosmo.board.vo.KosmoBoardVO;
public interface SpringChabunService {
public KosmoProductVO getProductChabun();
public KosmoCartVO getCartChabun();
public KosmoMemberVO getMemberChabun();
public KosmoBoardVO getBoardChabun();
}
- SpringChabunServiceImpl.java
package a.b.c.com.kosmo.common.service;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import a.b.c.com.kosmo.common.dao.SpringChabunDAO;
import a.b.c.com.kosmo.product.vo.KosmoProductVO;
import a.b.c.com.kosmo.cart.vo.KosmoCartVO;
import a.b.c.com.kosmo.mem.vo.KosmoMemberVO;
import a.b.c.com.kosmo.board.vo.KosmoBoardVO;
@Service
@Transactional
public class SpringChabunServiceImpl implements SpringChabunService {
Logger logger = LogManager.getLogger(SpringChabunServiceImpl.class);
@Autowired(required=false)
private SpringChabunDAO springChabunDAO;
@Override
public KosmoProductVO getProductChabun() {
// TODO Auto-generated method stub
logger.info("SpringChabunServiceImpl getProductChabun >>> : ");
return springChabunDAO.getProductChabun();
}
@Override
public KosmoCartVO getCartChabun() {
// TODO Auto-generated method stub
logger.info("SpringChabunServiceImpl getCartChabun >>> : ");
return springChabunDAO.getCartChabun();
}
@Override
public KosmoMemberVO getMemberChabun() {
// TODO Auto-generated method stub
logger.info("SpringChabunServiceImpl getMemberChabun >>> : ");
return springChabunDAO.getMemberChabun();
}
@Override
public KosmoBoardVO getBoardChabun() {
// TODO Auto-generated method stub
logger.info("SpringChabunServiceImpl getBoardChabun >>> : ");
return springChabunDAO.getBoardChabun();
}
}
6교시 (15:30-16:20)
게시판 구현하기
- KosmoBoardDAO.java
package a.b.c.com.kosmo.board.dao;
import java.util.List;
import a.b.c.com.kosmo.board.vo.KosmoBoardVO;
public interface KosmoBoardDAO {
public int kosmoBoardInsert(KosmoBoardVO kbvo);
public List<KosmoBoardVO> kosmoBoardSelectAll(KosmoBoardVO kbvo);
public List<KosmoBoardVO> kosmoBoardSelect(KosmoBoardVO kbvo);
public List<KosmoBoardVO> kosmoBoardPwCheck(KosmoBoardVO kbvo);
}
- KosmoBoardDAOImpl.java
package a.b.c.com.kosmo.board.dao;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import a.b.c.com.kosmo.board.vo.KosmoBoardVO;
@Repository
public class KosmoBoardDAOImpl implements KosmoBoardDAO {
Logger logger = LogManager.getLogger(KosmoBoardDAOImpl.class);
@Autowired(required=false)
private SqlSession sqlSession;
@Override
public int kosmoBoardInsert(KosmoBoardVO kbvo) {
// TODO Auto-generated method stub
logger.info("KosmoBoardDAOImpl kosmoBoardInsert 함수 진입 >>> : ");
return (Integer)sqlSession.insert("kosmoBoardInsert", kbvo);
}
@Override
public List<KosmoBoardVO> kosmoBoardSelectAll(KosmoBoardVO kbvo) {
// TODO Auto-generated method stub
logger.info("KosmoBoardDAOImpl kosmoBoardSelectAll 함수 진입 >>> : ");
return sqlSession.selectList("kosmoBoardSelectAll", kbvo);
}
@Override
public List<KosmoBoardVO> kosmoBoardSelect(KosmoBoardVO kbvo) {
// TODO Auto-generated method stub
logger.info("KosmoBoardDAOImpl kosmoBoardSelect 함수 진입 >>> : ");
return sqlSession.selectList("kosmoBoardSelect", kbvo);
}
@Override
public List<KosmoBoardVO> kosmoBoardPwCheck(KosmoBoardVO kbvo) {
// TODO Auto-generated method stub
logger.info("KosmoBoardDAOImpl kosmoBoardPwCheck 함수 진입 >>> : ");
return sqlSession.selectList("kosmoBoardPwCheck", kbvo);
}
}
- KosmoBoardService.java
package a.b.c.com.kosmo.board.service;
import java.util.List;
import a.b.c.com.kosmo.board.vo.KosmoBoardVO;
public interface KosmoBoardService {
public int kosmoBoardInsert(KosmoBoardVO kbvo);
public List<KosmoBoardVO> kosmoBoardSelectAll(KosmoBoardVO kbvo);
public List<KosmoBoardVO> kosmoBoardSelect(KosmoBoardVO kbvo);
public List<KosmoBoardVO> kosmoBoardPwCheck(KosmoBoardVO kbvo);
}
- KosmoBoardServiceImpl.java
package a.b.c.com.kosmo.board.service;
import java.util.List;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import a.b.c.com.kosmo.board.dao.KosmoBoardDAO;
import a.b.c.com.kosmo.board.vo.KosmoBoardVO;
@Service
@Transactional
public class KosmoBoardServiceImpl implements KosmoBoardService {
Logger logger = LogManager.getLogger(KosmoBoardServiceImpl.class);
// 서비스에서 DAO 연결하기
@Autowired(required=false)
private KosmoBoardDAO kosmoBoardDAO;
@Override
public int kosmoBoardInsert(KosmoBoardVO kbvo) {
// TODO Auto-generated method stub
logger.info("KosmoBoardServiceImpl kosmoBoardInsert 함수 진입 >>> : ");
return kosmoBoardDAO.kosmoBoardInsert(kbvo);
}
@Override
public List<KosmoBoardVO> kosmoBoardSelectAll(KosmoBoardVO kbvo) {
// TODO Auto-generated method stub
logger.info("KosmoBoardServiceImpl kosmoBoardSelectAll 함수 진입 >>> : ");
return kosmoBoardDAO.kosmoBoardSelectAll(kbvo);
}
@Override
public List<KosmoBoardVO> kosmoBoardSelect(KosmoBoardVO kbvo) {
// TODO Auto-generated method stub
logger.info("KosmoBoardServiceImpl kosmoBoardSelect 함수 진입 >>> : ");
return kosmoBoardDAO.kosmoBoardSelect(kbvo);
}
@Override
public List<KosmoBoardVO> kosmoBoardPwCheck(KosmoBoardVO kbvo) {
// TODO Auto-generated method stub
logger.info("KosmoBoardServiceImpl kosmoBoardPwCheck 함수 진입 >>> : ");
return kosmoBoardDAO.kosmoBoardPwCheck(kbvo);
}
}
- KosmoBoardController.java
package a.b.c.com.kosmo.board.controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import a.b.c.com.kosmo.board.service.KosmoBoardService;
import a.b.c.com.kosmo.board.vo.KosmoBoardVO;
import a.b.c.com.kosmo.common.ChabunUtil;
import a.b.c.com.kosmo.common.CommonUtils;
import a.b.c.com.kosmo.common.FileUploadUtil;
import a.b.c.com.kosmo.common.service.SpringChabunService;
import a.b.c.com.kosmo.mem.vo.KosmoMemberVO;
@Controller
public class KosmoBoardController {
Logger logger = LogManager.getLogger(KosmoBoardController.class);
// 필드 오토와이어드
@Autowired(required=false)
private SpringChabunService springChabunService;
@Autowired(required=false)
private KosmoBoardService kosmoBoardService;
// 게시판 글쓰기 폼
@RequestMapping(value="kosmoBoardInsertForm", method=RequestMethod.GET)
public String kosmoBoardInsertForm() {
logger.info("KosmoBoardController kosmoBoardInsertForm 함수 진입 >>> : ");
return "board/kosmoBoardInsertForm";
}
// 게시판 글쓰기
@RequestMapping(value="kosmoBoardInsert", method=RequestMethod.POST)
public String kosmoBoardInsert(HttpServletRequest req) {
logger.info("KosmoBoardController kosmoBoardInsert 함수 진입 >>> : ");
// 채번 구하기
String kbnum = ChabunUtil.getBoardChabun("N", springChabunService.getBoardChabun().getKbnum());
logger.info("KosmoBoardController kosmoBoardInsert kbnum >>> : " + kbnum);
// 이미지 업로드
FileUploadUtil fu = new FileUploadUtil( CommonUtils.BOARD_IMG_UPLOAD_PATH
,CommonUtils.BOARD_IMG_FILE_SIZE
,CommonUtils.BOARD_EN_CODE);
// 이미지 파일 원본 사이즈
boolean bool = fu.imgfileUpload(req);
logger.info("KosmoBoardController kosmoBoardInsert bool >>> : " + bool);
KosmoBoardVO _kbvo = null;
_kbvo = new KosmoBoardVO();
_kbvo.setKbnum(kbnum);
_kbvo.setKbsubject(fu.getParameter("kbsubject"));
_kbvo.setKbname(fu.getParameter("kbname"));
_kbvo.setKbpw(fu.getParameter("kbpw"));
_kbvo.setKbcontent(fu.getParameter("kbcontent"));
_kbvo.setKbfile(fu.getFileName("kbfile"));
// 서비스 호출
int nCnt = kosmoBoardService.kosmoBoardInsert(_kbvo);
if (nCnt > 0) {
logger.info("KosmoBoardController kosmoBoardInsert nCnt >>> : " + nCnt);
return "board/kosmoBoardInsert";
}
return "board/kosmoBoardInsertForm";
}
// 게시판 전체 조회
@RequestMapping(value="kosmoBoardSelectAll", method=RequestMethod.GET)
public String kosmoBoardSelectAll(KosmoBoardVO kbvo, Model model) {
logger.info("KosmoBoardController kosmoBoardSelectAll 함수 진입 >>> : ");
// 서비스 호출
List<KosmoBoardVO> listAll = kosmoBoardService.kosmoBoardSelectAll(kbvo);
if (listAll.size() > 0) {
logger.info("KosmoBoardController kosmoBoardSelectAll listAll.size() >>> : " + listAll.size());
model.addAttribute("listAll", listAll);
return "board/kosmoBoardSelectAll";
}
return "board/kosmoBoardSelectAll";
}
// 게시글 조회
@RequestMapping(value="kosmoBoardSelect", method=RequestMethod.GET)
public String kosmoBoardSelect(KosmoBoardVO kbvo, Model model) {
logger.info("KosmoBoardController kosmoBoardSelect 함수 진입 >>> : ");
logger.info("KosmoBoardController kosmoBoardSelect 함수 진입 kbvo.getKbnum() >>> : " + kbvo.getKbnum());
// 서비스 호출
List<KosmoBoardVO> listS = kosmoBoardService.kosmoBoardSelect(kbvo);
if (listS.size() == 1) {
logger.info("KosmoBoardController kosmoBoardSelect listS.size() >>> : " + listS.size());
model.addAttribute("listS", listS);
return "board/kosmoBoardSelect";
}
return "board/kosmoBoardSelect";
}
// 패스워드 체크하기
@RequestMapping(value="kosmoBoardPwCheck", method=RequestMethod.POST)
@ResponseBody
public Object kosmoBoardPwCheck(KosmoBoardVO kbvo) {
logger.info("KosmoBoardController kosmoBoardPwCheck 함수 진입 >>> :");
logger.info("KosmoBoardController kosmoBoardPwCheck kbvo.getKbpw() >>> : " + kbvo.getKbpw());
List<KosmoBoardVO> list = kosmoBoardService.kosmoBoardPwCheck(kbvo);
logger.info("KosmoBoardController kosmoBoardPwCheck list.size() >>> : " + list.size());
String msg = "";
if (list.size() == 1) {msg = "ID_YES";}
else {msg = "ID_NO";}
return msg;
}
}
7교시 (16:30-17:20)
게시판 구현하기
- kosmoBoardInsert.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>kosmoBoardInsert.jsp</h3>
<hr>
<script>
location.href="/kosmoSpring/kosmoBoardSelectAll.k";
</script>
</body>
</html>
- kosmoBoardInsertForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>BOARD : 게시판 : 글쓰기</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(document).on("click", "#kbBtn", function(){
console.log("kbBtn >>> : ");
$("#boardForm").attr({
"action":"kosmoBoardInsert.k",
"method":"POST",
"enctype":"multipart/form-data"
}).submit();
});
});
</script>
<style type="text/css">
.tt {
text-align: center;
}
</style>
</head>
<body>
<h3>kosmoBoardInsertForm.jsp</h3>
<hr>
<form name="boardForm" id="boardForm">
<table border="1" align="center">
<tr>
<td colspan="2" align="center">게시판 글쓰기</td>
</tr>
<tr>
<td class="tt">글번호</td>
<td><input type="text" name="kbnum" id="kbnum" size="20" readonly></td>
</tr>
<tr>
<td class="tt">제목</td>
<td><input type="text" name="kbsubject" id="kbsubject" size="53"></td>
</tr>
<tr>
<td class="tt">이름</td>
<td><input type="text" name="kbname" id="kbname" size="53"></td>
</tr>
<tr>
<td class="tt">비밀번호</td>
<td><input type="password" name="kbpw" id="kbpw" size="20"></td>
</tr>
<tr>
<td class="tt">내용</td>
<td><textarea name="kbcontent" id="kbcontent" cols="50" rows="10"></textarea>
</tr>
<tr>
<td class="tt">사진</td>
<td><input type="file" name="kbfile" id="kbfile"></td>
</tr>
<tr>
<td colspan="2" align="right">
<input type="button" value="글쓰기" id="kbBtn">
</td>
</tr>
</table>
</form>
</body>
</html>
- kosmoBoardSelectAll.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="a.b.c.com.kosmo.board.vo.KosmoBoardVO" %>
<%@ page import="a.b.c.com.kosmo.common.CodeUtil" %>
<%@ page import="java.util.List" %>
<%@ page import=" org.apache.log4j.LogManager" %>
<%@ page import="org.apache.log4j.Logger" %>
<% request.setCharacterEncoding("UTF-8");%>
<%
Logger logger = LogManager.getLogger(this.getClass());
logger.info("kosmoBoardSelectAll.jsp 페이지 >>> : ");
Object obj = request.getAttribute("listAll");
List<KosmoBoardVO> list = (List<KosmoBoardVO>)obj;
int nCnt = list.size();
String nCntS = ":::: 전체 조회 건수 " + nCnt + " 건";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="/kosmoSpring/js/common.js"></script>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script type="text/javascript">
$(document).ready(function(){
// kbnum 체크박스 체크 확인하기
$(document).on("click", "#kbnum", function(){
if($(this).prop('checked')){
$('.kbnum').prop('checked',false);
$(this).prop('checked',true);
}
});
// I
$(document).on("click", "#insertBtn", function(){
location.href="kosmoBoardInsertForm.k";
});
// SALL
$(document).on("click", "#selectAllBtn", function(){
$("#boardList").attr({"method":"GET", "action":"kosmoBoardSelectAll.k"}).submit();
});
// S
$(document).on("click", "#selectBtn", function(){
if ($('.kbnum:checked').length == 0){
alert("글번호 하나를 선택하세요!!");
return;
}
$("#boardList").attr({ "method":"GET","action":"kosmoBoardSelect.k"}).submit();
});
// D
$(document).on("click", "#deletetBtn", function(){
if ($('.kbnum:checked').length == 0){
alert("삭제할 글번호 하나를 선택하세요!!");
return;
}
$("#boardList").attr({ "method":"GET","action":"kosmoBoardDelete.k"}).submit();
});
});
</script>
<style type="text/css">
td, th {
padding: 5px;
}
h3, th {
text-align: center;
}
.tt {
text-align: center;
}
</style>
</head>
<body>
<h3>게시판 글 목록</h3>
<hr>
<form name="boardList" id="boardList">
<table border="1" align="center">
<thead>
<tr>
<td colspan="9" ><%= nCntS %></td>
</tr>
<tr>
<th><input type="checkbox" name="chkAll" id="chkAll"></th>
<th>순번</th>
<th>글번호</th>
<th>글제목</th>
<th>이름</th>
<th>글내용</th>
<th>사진</th>
</tr>
</thead>
<%
for(int i=0; i<nCnt; i++){
KosmoBoardVO _kbvo = list.get(i);
%>
<tbody>
<tr>
<td class="tt">
<input type="checkbox" id="kbnum" name="kbnum" class="kbnum" value=<%= _kbvo.getKbnum() %> >
</td>
<td class="tt"><%= i + 1 %></td>
<td class="tt"><%= _kbvo.getKbnum() %> </td>
<td class="tt"><%= _kbvo.getKbsubject() %> </td>
<td class="tt"><%= _kbvo.getKbname() %> </td>
<td class="tt"><%= _kbvo.getKbcontent() %> </td>
<td class="tt"><img src="/kosmoSpring/fileupload/board/<%= _kbvo.getKbfile() %> " border="1" width="25" height="25" alt="image"></td>
</tr>
<%
}//end of for
%>
<tr>
<td colspan="9" align="right">
<input type="button" value="글쓰기" id="insertBtn">
<input type="button" value="글목록" id="selectAllBtn">
<input type="button" value="글내용보기" id="selectBtn">
<input type="button" value="글삭제" id="deletetBtn">
</td>
</tr>
</tbody>
</table>
</form>
</body>
</html>
- kosmoBoardSelect.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page import="a.b.c.com.kosmo.board.vo.KosmoBoardVO" %>
<%@ page import="a.b.c.com.kosmo.common.CodeUtil" %>
<%@ page import="java.util.List" %>
<% request.setCharacterEncoding("UTF-8");%>
<%
Object obj = request.getAttribute("listS");
if (obj == null) return;
List<KosmoBoardVO> list = (List<KosmoBoardVO>)obj;
int nCnt = list.size();
KosmoBoardVO _kbvo = null;
if (nCnt == 1){
_kbvo = list.get(0);
}
%>
<!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">
$(document).ready(function(){
// pwBtn : 비밀번호 확인
$(document).on("click", "#pwBtn", function(){
let input_kbpw = prompt('비밀번호를 입력하세요', 'aaa');
if (input_kbpw.length > 0){
console.log(input_kbpw);
let pwcheckURL = "kosmoBoardPwCheck.k";
let reqType = "POST";
let dataParam = {
kbnum: $("#kbnum").val(),
kbpw: input_kbpw,
};
//dataParam = $("#boardUpdateForm").serialize();
console.log("dataParam >>> : " + dataParam);
$.ajax({
url: pwcheckURL,
type: reqType,
data: dataParam,
success: whenSuccess,
error: whenError
});
function whenSuccess(resData){
console.log("resData >>> : " + resData);
if ("ID_YES" == resData){
alert("비밀번호 GOOD.");
$("#updateBtn").css('background-color','yellow');
if($("#updateBtn").prop("disabled")==true){
$("#updateBtn").attr("disabled", false);
}
}else if ("ID_NO" == resDataFlag){
alert("비밀번호 BAD.");
return;
};
}
function whenError(e){
console.log("e >>> : " + e.responseText);
}
}
});
// insertBtn
$(document).on("click", "#insertBtn", function(){
location.href="kosmoBoardInsertForm.k";
});
// selectBtn
$(document).on("click", "#selectAllBtn", function(){
$("#boardUpdateForm").attr({"method":"GET", "action":"kosmoBoardSelectAll.k"}).submit();
});
// updateBtn
$(document).on("click", "#updateBtn", function(){
alert("updateBtn");
$("#boardUpdateForm").attr({ "method":"GET", "action":"#kosmoBoardUpdate.k"}).submit();
});
});
</script>
<style type="text/css">
div {
margin: 0 auto;
border:1px solid #6d82f3;
display:table;
}
td, th {
padding: 5px;
}
h3 {
text-align: center;
}
.mem {
text-align: center;
}
</style>
</head>
<body>
<h3>게시글 내용</h3>
<hr>
<div>
<form name="boardUpdateForm" id="boardUpdateForm">
<table border=1>
<tr>
<td align="center">
<font size="4" style="color:black;"><%= _kbvo.getKbsubject() %></font>
<input type="hidden" name="kmnum" id="kmnum" value="<%= "M202206070001" %>" />
<input type="hidden" name="kbnum" id="kbnum" value="<%= _kbvo.getKbnum() %>" />
</td>
</tr>
<tr>
<td align="left">
<font size="1" style="color:gray;">
최초작성일 : <%= _kbvo.getInsertdate() %>
최종수정일 : <%= _kbvo.getUpdatedate() %>
</font>
</td>
</tr>
<tr>
<td align="center">
<img src="/kosmoSpring/fileupload/board/<%= _kbvo.getKbfile() %>" border="1" width="380" height="100" alt="image">
</td>
</tr>
<tr>
<td align="center">
<textarea name="kbcontent" id="kbcontent" rows="5" cols="50"><%= _kbvo.getKbcontent() %></textarea>
</td>
</tr>
<tr>
<td align="left">
<font size="1" style="color:gray;">
작성자 : <%= _kbvo.getKbname() %>
</font>
</td>
</tr>
<!--
<tr>
<td>패스워드
<input type="text" name="kbpw" id="kbpw" />
<button type="button" id="pwBtn">비밀번호</button>
</td>
-->
<tr>
<td colspan="2" align="left">
<button type="button" id="insertBtn">글쓰기</button>
<button type="button" id="selectAllBtn">글목록</button>
<button type="button" id="updateBtn" disabled >수정</button>
<button type="button" id="pwBtn">비밀번호확인</button>
</td>
</tr>
</table>
</form>
</div>
<p>
<!-- 댓글 처리 하는 루틴 -->
<jsp:include page="/kosmoRboardForm.k">
<jsp:param value="<%=_kbvo.getKbnum()%>" name="kbnum"/>
</jsp:include>
</body>
</html>
8교시 (17:30-18:30)
게시판 구현하기
- index.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>index.jsp</h3>
<hr>
<a href="kosmoProductInsertForm.k">코스모 상품 입력</a><br>
<a href="kosmoProductSelectAll.k">코스모 상품 전체조회</a><br>
<p>
<a href="kosmoMemberInsertForm.k">코스모 회원 입력</a><br>
<a href="kosmoMemberSelectAll.k">코스모 회원 전체조회</a><br>
<p>
<a href="kosmoLoginForm.k">코스모 로그인</a><br>
<p>
<a href="kosmoMainPage.k">코스모 메인</a><br>
<p>
<a href="kosmoBoardInsertForm.k">코스모 게시판 글쓰기</a><br>
<a href="kosmoBoardSelectAll.k">코스모 게시판 전체조회</a><br>
</body>
</html>
Notes
728x90