728x90
수업내용
1교시 (09:30-10:20)
- Oracle Object -오라클은 계정 별로 Object를 사용할 수 있는 권한을 부여한다.
- index
- view
- sequence
- synonym
- DBMS
- table space
- block
2교시 (10:30-11:20)
- INDEX
-- INDEX : 색인 : 영어사전 : 색인 A, B, C ... , 한글 사전 : 색인 ㄱ, ㄴ, ㄷ ....
-- 오라클 데이터베이스에서 INDEX 성능 향상(조회 속도 향상)에서 양날의 검
SELECT TABLE_NAME, INDEX_NAME, COLUMN_NAME
FROM USER_IND_COLUMNS
WHERE TABLE_NAME IN ('EMP', 'DEPT');
--테이블 생성시 프라이머리 키(PK)를 생성하면
--오라클 엔진에서 자동으로 인덱스를 생성한다.
--생성하는 이름은 SYS_ 접두어 + C + 0000000 규칙으로 생성한다.
--SYS_C0011065 : SYS 접두어 + C + 0000000
CREATE TABLE INDEX_TEST_1 (
INDEX_1 NUMBER PRIMARY KEY
);
SELECT TABLE_NAME, INDEX_NAME, COLUMN_NAME
FROM USER_IND_COLUMNS
WHERE TABLE_NAME IN ('INDEX_TEST_1');
-- PK 생성시 자동으로 시스템에서 시스템을 인덱스를 생성하기 때문에
-- 사용자 정의로 인덱스를 생성할 수 없다.
CREATE INDEX INDEX_TEST_1_111 ON INDEX_TEST_1(INDEX_1);
-- 인덱스 생성하기
CREATE TABLE T2 (
T2_1 NUMBER,
T2_2 VARCHAR2(10)
);
--단일 인덱스
CREATE INDEX INDEX_T2_T2_1 ON T2(T2_1);
--결합 인덱스
CREATE INDEX INDEX_T2_T2_1_T2_2 ON T2(T2_1, T2_2);
3교시 (11:30-12:20)
- 게시판 댓글 쓰기 설명
- a href는 GET방식만 된다.
- 비밀댓글
- 댓글 비밀번호
4교시 (12:30-13:20)
댓글 구현하기
- mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias type="a.b.c.com.kosmo.product.vo.KosmoProductVO" alias="kosmoproductvo"/>
<typeAlias type="a.b.c.com.kosmo.cart.vo.KosmoCartVO" alias="kosmocartvo" />
<typeAlias type="a.b.c.com.kosmo.mem.vo.KosmoMemberVO" alias="kosmomembervo"/>
<typeAlias type="a.b.c.com.kosmo.board.vo.KosmoBoardVO" alias="kosmoboardvo"/>
<typeAlias type="a.b.c.com.kosmo.rboard.vo.KosmoRboardVO" alias="kosmorboardvo"/>
</typeAliases>
</configuration>
- spring_rboard.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="a.b.c.com.kosmo.rboard.dao.KosmoRboardDAO">
<insert id="kosmoRboardInsert" parameterType="kosmorboardvo" >
INSERT INTO KOSMO_RBOARD(
RKBNUM,
KBNUM,
RKBNAME,
RKBCONTENT,
DELETEYN,
INSERTDATE
)
VALUES
(
#{rkbnum},
#{kbnum},
#{rkbname},
#{rkbcontent},
'Y',
SYSDATE
)
</insert>
<select id="kosmoRboardSelectAll" parameterType="kosmorboardvo" resultType="kosmorboardvo">
SELECT A.RKBNUM RKBNUM
,A.KBNUM KBNUM
,A.RKBNAME RKBNAME
,A.RKBCONTENT RKBCONTENT
,A.INSERTDATE INSERTDATE
FROM KOSMO_RBOARD A
WHERE DELETEYN = 'Y'
AND A.KBNUM = #{kbnum}
ORDER BY 1 DESC
</select>
<update id="kosmoRboardDelete" parameterType="kosmorboardvo">
UPDATE KOSMO_RBOARD
SET DELETEYN = 'N',
INSERTDATE = SYSDATE
WHERE DELETEYN = 'Y'
AND RKBNUM = #{rkbnum}
</update>
</mapper>
- KosmoRboardVO.java
package a.b.c.com.kosmo.rboard.vo;
public class KosmoRboardVO {
private String rkbnum;
private String kbnum;
private String rkbname;
private String rkbcontent;
private String insertdate;
// generator
public KosmoRboardVO() {
}
public KosmoRboardVO(String rkbnum, String kbnum, String rkbname, String rkbcontent, String insertdate) {
this.rkbnum = rkbnum;
this.kbnum = kbnum;
this.rkbname = rkbname;
this.rkbcontent = rkbcontent;
this.insertdate = insertdate;
}
// getter/setter
public String getRkbnum() {
return rkbnum;
}
public String getKbnum() {
return kbnum;
}
public String getRkbname() {
return rkbname;
}
public String getRkbcontent() {
return rkbcontent;
}
public String getInsertdate() {
return insertdate;
}
public void setRkbnum(String rkbnum) {
this.rkbnum = rkbnum;
}
public void setKbnum(String kbnum) {
this.kbnum = kbnum;
}
public void setRkbname(String rkbname) {
this.rkbname = rkbname;
}
public void setRkbcontent(String rkbcontent) {
this.rkbcontent = rkbcontent;
}
public void setInsertdate(String insertdate) {
this.insertdate = insertdate;
}
}
- 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"; // 게시판
public static final String BIZ_GUBUN_R = "RB"; // 게시판 댓글
// 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 String getRboardChabun(String type, String memNum) {
return BIZ_GUBUN_R.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));
}
}
- SpringChabunDAO.java
package a.b.c.com.kosmo.common.dao;
import a.b.c.com.kosmo.board.vo.KosmoBoardVO;
import a.b.c.com.kosmo.cart.vo.KosmoCartVO;
import a.b.c.com.kosmo.mem.vo.KosmoMemberVO;
import a.b.c.com.kosmo.product.vo.KosmoProductVO;
import a.b.c.com.kosmo.rboard.vo.KosmoRboardVO;
public interface SpringChabunDAO {
public KosmoProductVO getProductChabun();
public KosmoCartVO getCartChabun();
public KosmoMemberVO getMemberChabun();
public KosmoBoardVO getBoardChabun();
public KosmoRboardVO getRboardChabun();
}
- 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.board.vo.KosmoBoardVO;
import a.b.c.com.kosmo.cart.vo.KosmoCartVO;
import a.b.c.com.kosmo.mem.vo.KosmoMemberVO;
import a.b.c.com.kosmo.product.vo.KosmoProductVO;
import a.b.c.com.kosmo.rboard.vo.KosmoRboardVO;
@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"); // getProductChabun
}
@Override
public KosmoCartVO getCartChabun() {
// TODO Auto-generated method stub
logger.info("SpringChabunDAOImpl getCartChabun >>> : ");
return sqlSession.selectOne("getCartChabun"); // 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"); // getBoardChabun
}
@Override
public KosmoRboardVO getRboardChabun() {
// TODO Auto-generated method stub
logger.info("SpringChabunDAOImpl getRboardChabun >>> : ");
return sqlSession.selectOne("getRboardChabun"); // getRboardChabun
}
}
- SpringChabunService.java
package a.b.c.com.kosmo.common.service;
import a.b.c.com.kosmo.board.vo.KosmoBoardVO;
import a.b.c.com.kosmo.cart.vo.KosmoCartVO;
import a.b.c.com.kosmo.mem.vo.KosmoMemberVO;
import a.b.c.com.kosmo.product.vo.KosmoProductVO;
import a.b.c.com.kosmo.rboard.vo.KosmoRboardVO;
public interface SpringChabunService {
public KosmoProductVO getProductChabun();
public KosmoCartVO getCartChabun();
public KosmoMemberVO getMemberChabun();
public KosmoBoardVO getBoardChabun();
public KosmoRboardVO getRboardChabun();
}
- 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;
import a.b.c.com.kosmo.rboard.vo.KosmoRboardVO;
@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();
}
@Override
public KosmoRboardVO getRboardChabun() {
// TODO Auto-generated method stub
logger.info("SpringChabunServiceImpl getRboardChabun >>> : ");
return springChabunDAO.getRboardChabun();
}
}
5교시 (14:30-15:20)
댓글 구현하기
- KosmoRboardDAO.java
package a.b.c.com.kosmo.rboard.dao;
import java.util.List;
import a.b.c.com.kosmo.rboard.vo.KosmoRboardVO;
public interface KosmoRboardDAO {
public int kosmoRboardInsert(KosmoRboardVO rbvo);
public List<KosmoRboardVO> kosmoRboardSelectAll(KosmoRboardVO rbvo);
public int kosmoRboardDelete(KosmoRboardVO rbvo);
}
- KosmoRboardDAOImpl.java
package a.b.c.com.kosmo.rboard.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.rboard.vo.KosmoRboardVO;
@Repository
public class KosmoRboardDAOImpl implements KosmoRboardDAO {
Logger logger = LogManager.getLogger(KosmoRboardDAOImpl.class);
@Autowired(required=false)
private SqlSession sqlSession;
@Override
public int kosmoRboardInsert(KosmoRboardVO rbvo) {
// TODO Auto-generated method stub
logger.info("KosmoRboardDAOImpls kosmoRboardInsert 함수 진입 >>> : ");
return (Integer)sqlSession.insert("kosmoRboardInsert", rbvo);
}
@Override
public List<KosmoRboardVO> kosmoRboardSelectAll(KosmoRboardVO rbvo) {
// TODO Auto-generated method stub
logger.info("KosmoRboardDAOImpl kosmoRboardSelectAll 함수 진입 >>> : ");
return sqlSession.selectList("kosmoRboardSelectAll", rbvo);
}
@Override
public int kosmoRboardDelete(KosmoRboardVO rbvo) {
// TODO Auto-generated method stub
logger.info("KosmoRboardDAOImpl kosmoRboardDelete 함수 진입 >>> : ");
return (Integer)sqlSession.update("kosmoRboardDelete", rbvo);
}
}
- KosmoRboardService.java
package a.b.c.com.kosmo.rboard.service;
import java.util.List;
import a.b.c.com.kosmo.rboard.vo.KosmoRboardVO;
public interface KosmoRboardService {
public int kosmoRboardInsert(KosmoRboardVO rbvo);
public List<KosmoRboardVO> kosmoRboardSelectAll(KosmoRboardVO rbvo);
public int kosmoRboardDelete(KosmoRboardVO rbvo);
}
- KosmoRboardServiceImpl.java
package a.b.c.com.kosmo.rboard.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.rboard.dao.KosmoRboardDAO;
import a.b.c.com.kosmo.rboard.vo.KosmoRboardVO;
@Service
@Transactional
public class KosmoRboardServiceImpl implements KosmoRboardService {
Logger logger = LogManager.getLogger(KosmoRboardServiceImpl.class);
// 서비스에서 DAO 연결하기
// 필드 @Autowired 어노테이션으로 DI(의존성 주입하기)
@Autowired(required=false)
private KosmoRboardDAO kosmoRboardDAO;
@Override
public int kosmoRboardInsert(KosmoRboardVO rbvo) {
// TODO Auto-generated method stub
logger.info("KosmoRboardServiceImpl kosmoRboardInsert 함수 진입 >>> : ");
return kosmoRboardDAO.kosmoRboardInsert(rbvo);
}
@Override
public List<KosmoRboardVO> kosmoRboardSelectAll(KosmoRboardVO rbvo) {
// TODO Auto-generated method stub
logger.info("KosmoRboardServiceImpl kosmoRboardSelectAll 함수 진입 >>> : ");
return kosmoRboardDAO.kosmoRboardSelectAll(rbvo);
}
@Override
public int kosmoRboardDelete(KosmoRboardVO rbvo) {
// TODO Auto-generated method stub
logger.info("KosmoRboardServiceImpl kosmoRboardDelete 함수 진입 >>> : ");
return kosmoRboardDAO.kosmoRboardDelete(rbvo);
}
}
- KosmoRboardController.java
package a.b.c.com.kosmo.rboard.controller;
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.Controller;
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.common.ChabunUtil;
import a.b.c.com.kosmo.common.service.SpringChabunService;
import a.b.c.com.kosmo.rboard.service.KosmoRboardService;
import a.b.c.com.kosmo.rboard.vo.KosmoRboardVO;
@Controller
public class KosmoRboardController {
Logger logger = LogManager.getLogger(KosmoRboardController.class);
// 필드 오토와이어드
@Autowired(required=false)
private SpringChabunService springChabunService;
// 필드 오토와이어드
@Autowired(required=false)
private KosmoRboardService kosmoRboardService;
// 댓글 글쓰기 폼
@RequestMapping(value="kosmoRboardForm", method=RequestMethod.GET)
public String kosmoRboardForm() {
logger.info("KosmoRboardController kosmoRboardForm 함수 진입 >>> : ");
return "rboard/kosmoRboardForm";
}
// 댓글 등록
@RequestMapping( value="kosmoRboardInsert", method=RequestMethod.POST)
@ResponseBody
public String kosmoRboardInsert(KosmoRboardVO rbvo) {
logger.info("KosmoRboardController kosmoRboardInsert >>> : ");
logger.info("KosmoRboardController kosmoRboardInsert rbvo.getKbnum() >>> : " + rbvo.getKbnum());
// 채번 구하기
String rkbnum = ChabunUtil.getRboardChabun("N", springChabunService.getRboardChabun().getRkbnum());
logger.info("KosmoBoardController kosmoBoardInsert rkbnum >>> : " + rkbnum);
rbvo.setRkbnum(rkbnum);
logger.info("rbvo.getRkbnum() >>> : " + rbvo.getRkbnum());
logger.info("rbvo.getKbnum() >>> : " + rbvo.getKbnum());
logger.info("rbvo.getRkbname() >>> : " + rbvo.getRkbname());
logger.info("rbvo.getRkbcontent() >>> : " + rbvo.getRkbcontent());
int nCnt = kosmoRboardService.kosmoRboardInsert(rbvo);
logger.info("KosmoRboardController kosmoRboardInsert nCnt >>> : " + nCnt);
if (1 == nCnt) { return "GOOD"; }
else { return "BAD"; }
}
// 댓글 전체 조회
@RequestMapping( value="kosmoRboardSelectAll", method=RequestMethod.POST)
@ResponseBody
public String kosmoRboardSelectAll(KosmoRboardVO rbvo) {
logger.info("KosmoRboardController kosmoRboardSelectAll >>> : ");
logger.info("KosmoRboardController kosmoRboardSelectAll rbvo.getKbnum() >>> : " + rbvo.getKbnum());
List<KosmoRboardVO> list = kosmoRboardService.kosmoRboardSelectAll(rbvo);
logger.info("KosmoRboardController kosmoRboardSelectAll list >>> : " + list);
String ss = "";
String listStr = "";
for (int i=0; i < list.size(); i++) {
KosmoRboardVO _rbvo = list.get(i);
String s0 = _rbvo.getRkbnum();
String s1 = _rbvo.getRkbname();
String s2 = _rbvo.getRkbcontent();
String s3 = _rbvo.getInsertdate();
ss = s0+","+s1+","+s2+","+s3;
listStr += ss+"&";
}
return listStr;
}
// 댓글 삭제
@RequestMapping( value="kosmoRboardDelete", method=RequestMethod.POST)
@ResponseBody
public String kosmoRboardDelete(KosmoRboardVO rbvo) {
logger.info("KosmoRboardController kosmoRboardDelete >>> : ");
logger.info("KosmoRboardController kosmoRboardDelete rbvo.getRkbnum() >>> : " + rbvo.getRkbnum());
int nCnt = kosmoRboardService.kosmoRboardDelete(rbvo);
logger.info("KosmoRboardController kosmoRboardDelete nCnt >>> : " + nCnt);
if (1 == nCnt) { return "GOOD"; }
else { return "BAD"; }
}
}
6교시 (15:30-16:20)
댓글 구현하기
- kosmoRboardForm.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.rboard.vo.KosmoRboardVO" %>
<%@ page import = "java.util.List" %>
<%@ page import = "java.util.ArrayList" %>
<%@ 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>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//rkbcontent 길이 제한 200byte
$("#rkbcontent").keyup(function(){
cut_200(this);
});
// 댓글 전체 불러오기
selectAll();
// 댓글 등록
$(document).on("click", "#rInsertBtn", function(){
console.log("rInsertBtn >>> : ");
let insertURL = "kosmoRboardInsert.k";
let method = "POST";
let dataParam = {
kbnum: $("#kbnum").val(),
ksbname: $("#rkbname").val(),
ksbcontent: $("#rskcontent").val(),
};
dataParam = $("#rboardForm").serialize();
console.log("dataParam >>> : " + dataParam);
$.ajax({
url: insertURL,
type: method,
data: dataParam,
success: whenSuccess,
error: whenError
});
function whenSuccess(resData){
alert("resData >>> : " + resData);
if ("GOOD" == resData){
// 입력데이터 초기화 함수호출
rboardFormData();
location.reload();
}
}
function whenError(e){
alert("e >>> : " + e.responseText);
}
selectAll();
});
// 댓글 삭제
$(document).on("click", ".deleteBtn", function(){
console.log("D >>> : ");
var rkbnumV = $(this).parents("li").attr("dataNum");
alert("rkbnumV >>> : " + rkbnumV);
var target = $(this).parents(".rbmemoItem");
console.log("target >>> : " + target);
let deleteURL = "kosmoRboardDelete.k";
let method = "POST";
let dataParam = {
rkbnum: $('#rkbnum').val(rkbnumV),
};
dataParam = $("#rboardForm").serialize();
console.log("dataParam >>> : " + dataParam);
$.ajax({
url: deleteURL,
type: method,
data: dataParam,
success: whenSuccess,
error: whenError
});
function whenSuccess(resData){
console.log("resData >>> : " + resData);
if ("GOOD" == resData){
alert("댓글이 삭제되었습니다.");
target.remove();
}
}
function whenError(e){
console.log("e >>> : " + e.responseText);
}
});
});
// 게시글 번호로 댓글 전체조회
function selectAll(){
console.log("SALL >>> : ");
let selectAllURL = "kosmoRboardSelectAll.k";
let method = "POST";
let dataParam = {
kbnum: $("#kbnum").val(),
};
dataParam = $("#rboardForm").serialize();
console.log("dataParam >>> : " + dataParam);
$.ajax({
url: selectAllURL,
type: method,
data: dataParam,
success: whenSuccess,
error: whenError
});
function whenSuccess(resData){
console.log("resData >>> : " + resData);
console.log("whenSuccess kosmoRboardSelectAll resData >>> : " + resData);
if(isEmpty(resData)){
return false;
}
let v = resData.split("&");
for(let i=0; i < v.length; i++){
console.log(v[i]);
let vv = v[i].split(",");
let j=0
for (; j < vv.length-1; j++){
console.log("vv[0] >>> : " + vv[0]);
console.log("vv[1] >>> : " + vv[1]);
console.log("vv[2] >>> : " + vv[2]);
console.log("vv[3] >>> : " + vv[3]);
}
addNewItem(vv[0], vv[1], vv[2], vv[3]);
}
}
function whenError(e){
console.log("e >>> : " + e.responseText);
}
}
// 새로운 글 화면에 추가
function addNewItem(num, writer, content, datetime){
//데이터 체크
if(isEmpty(num)) return false;
// 새로운 글이 추가될 li태그
var newLi = $("<li>");
newLi.attr("dataNum", num);
newLi.addClass("rbmemoItem");
// 작성자 정보가 지정될 <p> 태그
var writerP = $("<p>");
writerP.addClass("writer");
// 작성자 정보의 이름
var nameSpan = $("<span>");
nameSpan.addClass("name");
nameSpan.html(decodeURIComponent(writer) + "님");
// 작성일시
var dateSpan = $("<span>");
dateSpan.html(" / " + datetime + " ");
// 삭제 버튼
var delInput = $("<input>");
delInput.attr({"type":"button", "value":"삭제하기"});
delInput.addClass("deleteBtn");
// 내용
var contentP = $("<p>");
contentP.html(decodeURIComponent(content));
// 조립하기
writerP.append(nameSpan).append(dateSpan).append(delInput);
newLi.append(writerP).append(contentP);
$("#rboardlist").append(newLi);
}
// 한글 포함 문자열 길이
function getTextLength(s){
var len = 0;
for(var i=0; i < s.length; i++){
if(escape(s.charAt(i)).length == 6){
len++;
}
len++;
}
return len;
}
function cut_200(obj){
var t = $(obj).val();
var l = t.length;
while(getTextLength(t) > 200){
l--;
t= t.substring(0, l);
}
$(obj).val(t);
$('.bytes').text(getTextLength(t));
}
// 댓글 등록 후 입력창 초기화
function rboardFormData(){
$("#rkbname").val("");
$("#rkbcontent").val("");
}
// 데이터 체크
function isEmpty(val){
if(typeof val=="undefined" || val==null || val==""){
return true;
}else{
return false;
}
}
</script>
</head>
<body>
<h3>댓글</h3>
<hr>
<% request.setCharacterEncoding("UTF-8"); %>
<%
Logger logger = LogManager.getLogger(this.getClass());
logger.info("kosmoRboardForm.jsp 페이지 >>> : ");
String kbnum = request.getParameter("kbnum");
logger.info("kosmoRboardForm.jsp kbnum >>> : " + kbnum);
%>
<div id="rbwriterdiv">
<form name="rboardForm" id="rboardForm">
<table>
<tr>
<td>작성자</td>
<td>
<input type="text" name="rkbname" id="rkbname"/>
<input type="hidden" name="kbnum" id="kbnum" value="<%=kbnum%>">
<input type="hidden" name="rkbnum" id="rkbnum">
<input type="button" value="저장하기" id="rInsertBtn">
</td>
</tr>
<tr>
<td>댓글 내용</td>
<td>
<textarea name="rkbcontent" id="rkbcontent" rows="5" cols="50" style="resize: none"></textarea>
<div><span class="bytes">0</span>bytes</div>
</td>
</tr>
</table>
<hr>
<ul name="rboardlist" id="rboardlist">
<!-- 여기에 동적 생성 요소가 들어온다. -->
</ul>
</form>
</div>
</body>
</html>
- kosmoRboardInsert.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/kosmoRboardSelectAll.k";
</script>
</body>
</html>
- 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>
<p>
<a href="kosmoRboardForm.k">코스모 댓글 쓰기 </a><br>
</body>
</html>
7교시 (16:30-17:20)
- 좋아요 기능 설명
- foreach collection="list" <-- 리스트와 배열만 올 수 있음 (해시맵 포함, ArrayList는 순차가 있음, 해시맵은 키를 만들어야함(유니크함) - 빠른데 비용이 더 많이 나옴)
- foreach <- 배치성 프로시저
- spring3.pdf 123p 꼼꼼하게 공부하기
- [교재 483p] 프로시저
- foreach collection="list" <-- 리스트와 배열만 올 수 있음 (해시맵 포함, ArrayList는 순차가 있음, 해시맵은 키를 만들어야함(유니크함) - 빠른데 비용이 더 많이 나옴)
8교시 (17:30-18:30)
- 결제 시스템 설명
- 아임포트 API https://docs.iamport.kr/prepare
Notes
728x90