java
Controller, Service, Servicelmpl, DAO, VO
VO
Value Object
계층건 데이터를 교환하는 객체
속성에 접근하기 위한 getter/setter 메서드를 써줘야함

SQL.xml와 VO.java의 연결점 : SQL은 Snake Case표기 / VO는 Camel Case표기 
DAO
Data Access Object
DB의 data에 접근하는 객체이다 (데이터 조회,반환 역할을 하는데 그러기 위해서는 쿼리가 필요)
DAO와 쿼리가 서로 매칭이 돼야함
   
jsp   comCodeList, comCodeInput, comCodeProcess
  id는 겹치면 안됨 (고유 아이디)

noticeVO를 dataVO로 바꿔둔 이유: 각 데이터 VO마다 이름이 다르니 통합하여 편의성을 높힌다
form태크 : <form:textarea readonly="true">  //로 하면 읽기만 가능한 텍스트창이 생성
jsp의 함수 this : element에 this를 담은후 console.log(element)로 this가 무슨 함수인지 확인

form1 : input data가 담기는 form / 상세정보 조회를 위해 form1이 필요
formFind : 수정, 입력 / seq값을 formFind에 넣어 전송한다

~의 페이지를 클릭하여 그페이지에 머무를시 하위 카테고리가 펼쳐지게 유지하려면?
setMenuGubun("   ")

함수명( )안에있는 this의 의미
tag안에서 event속성으로 함수를 호출할때 this는(ex: onclick="함수명(this);) 그 해당tag 자신을 가리킨다

본문에 글자수를 표기하고 싶을 때(ex: 0/4000 bytes) 글자를 입력될때 호출하는것이 아닌 페이지가 로드될때 호출한다
window.onload = function() 이용

우리가 들고다니는 hidden변수도 항상 확인
<form:hidden path="nowPage" />
<form:hidden path="mode" />
<!-- ////공통 -->
<form:hidden path="searchGubun1" />
<form:hidden path="searchVal1" />

mode='MOD'일떄는 selectDetail쿼리 실행
mode='ADD'일떄는 insertData쿼리 실행

    function()에 ${data.변수}를 쓸때는 '작은 따옴표'를 쓴다
유효성 검사 우선순위: 제목>본문>메인>노출

포커스(focus)는 script.common.JS에 정의되어있어 함수이름으로 가져다 쓸 수 있다.(function show_alert)
xml
/ ORACLE


  쿼리문.xml, mybatis-config / ORACLE
  대문자 표기
줄을 나눠서 작성 (AND 포함)
각 테이블에 별칭 항상 표기
AS 항상 표기
기호는 한칸씩 띄어쓰기 (ex: , > +)
왼쪽을 기준으로 줄 맞춰서 쓰기
불필요한 괄호() 생략하기

Insert문 구성
수정자 , 수정일은 인서트할떄 들어가지 않음
values 문자값을 넣을때 '작은 따옴표'를 씀
Insert into문을 쓸때는 테이블에  별칭 X

INSERT 한번 test한 뒤 ROLLBACK; 실행
AS쓸때 영문은 "큰따옴표" 금지

데이터를 가져오는것은 SELECT
데이터를 변경하는것은 UPDATE
데이터를 널
DAO  데이터 조회, 반환 역할
Service
ServiceImpl
메소드 정의
interface에서 상속받아 로직 구현, @Service("~~Service")로 정의
   

 

ADD / MOD  신규등록 / 수정

 

① 화면에서 입력 버튼 클릭

② Controller로 이동(Controller 의 Service조회)
③ Service에서 data조회를 하기 위해 DAO호출
④ DAO안의 쿼리문.xml namespace, query id 조회 실행
⑤ 실행된 결과를 Service에 return
⑥ Service도 DAO에서 받은값을 Controller에 전달
⑦ Controller에서 변수들의 결과값이 VO에 저장됨
⑧ VO는 쿼리.xml 그리고 VO에 저장
⑨ 결과값을 result VO에 담아 넣고 dataVO에 전달
⑩ 화면에 전달할떄 column명에 따라 데이터가 저장

 

searchVO 데이터를 담아옴
detailCodeInput.jsp(ADD)에 commonCode값을 받아올때

쿼리에서 조회로 받아오는개 아니다
기존 데이터르를 받는것이다
searchVO는 comCOdeList.jsp에서 보내온 데이터(commonCode, commonName)를 가지고 있다
<a href = "javascript:fn_input('MOD' , '${row.commonCode }');">
resultVO 수정모드일때 selectDetail을 이용해 값을 '새로' 받아옴
detailCodeInput.jsp(MOD)에 commonCode 값을 받아올때

 

HTML

<div>
block요소 (layout 나누는 용도)
<span> inline요소 (딱 글자 부분만 나눔)

 

form테그 값을 지정

예시<form1>태그안에 있는 ${detailCode}값은
= document.form1.detailCode

예시<formFind>태그안에 있는 ${detailCode}값은
= document.formFind.detailCode

 

document.form1.변수1 변수1의 태그자체를 가르키는 것
document.form1.변수1.value 변수1의 값을 가르키는 

 

DEL, DELS 삭제
DEL, DELS 값을 받아왔을때는 이미 글이 '삭제'된 후이
DELCHK, DELCHKS 삭제가 아닌 '하위체크'

 

 

form1 (dataVO) 쿼리에서 조회한 data가 들어있음
페이지가 변할때마다 data가 바뀜

form1을 쓰는 이유: detail에서 input 페이지로 넘어갈때
formFind를 쓰면 searchVO에 있는 data들을 전부 가져가야 해서 양이 많음
근데 form1을 쓰면 PK값(data_num) 한개만 필요함
formFind (searchVO) 기존 페이지(List.jsp)에서 부터 담겨있던 data가 들어가 있음
페이지가 바뀌어도 계속 기존 데이터들을 들고 다님 (ex: nowpage 같이 값을 유지해야 하는 데이터들이 사용)
data를 submit할때 두 tag를 한꺼번에 submit()이 불가능하다
둘 중 1개의 tag만 submit이 가능하므로 만약 2개의 tag data가 필요할때는 form1에 있는 tag를 formFind에 넘겨준다
var form1 = documnet.form1;
var formFind = documnet.formFind;

form1.appendChild(formFind.nowPage);
form1.appendChild(formFind.searchVal1);

 

CSS tip

F12 개발자 도구 css에

display: flex를 넣고 옆에 생기는 무언가를 클릭하면 편하게 CSS를 고칠 수 있다