목록분류 전체보기 (163)
KSI일기장
*resultMap 태그의 역할* -SELECT 조회결과(ResultSet)의 컬럼과 조회결과를 옮겨 담을 VO의 필드명이 일치하지 않을 때 이를 매핑시켜 조회결과가 필드에 세팅되게 하는 역할 [resultMap 속성] 1)type :조회결과를 담을 VO의 타입 또는 별칭 ex)mybatis-config에서 만든member 2)id :만들어진 resultMap태그를 지칭할 이름(식별명) *resultMap에 vo를 작성하는 이유* -VO의 필드명과 DB의 조회되는 컬럼명이 일치하면 자동으로 VO객체에 값이 세팅된다 -> java와 DB의 표기법 차이로 인해 위 특징이 적용되는 경우가 거의 없다 ex) vo.Member = memberNo -> DB = MEMBER_NO -> 해결방법 필드명, 컬럼명이 다..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/csW46t/btset5UyM5b/MZoYG0dWdY6upJQManPeCk/img.png)
DispatcherServlet :클라이언트 요청(Request)을 전달 받고, 요청에 맞는 컨트롤러가 리턴 한 결과값을 View에 전달해 알맞은 응답(Response)을 생성 HandlerMapping :클라이언트 요청 URL을 어떤 컨트롤러가 처리할지 결정 Controller :클라이언트 요청을 처리한 뒤, 결과를 DispatcherServlet에게 리턴 ModelAndView :컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담음 ViewResolver :컨트럴러의 처리결과를 생성할 View를 결정 View :컨트롤러의 실행결과 화면을 생성, JSP나 velody탬플릿 파일등을 View로 사용
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cgDEOh/btserMHs8Kv/1P2qiGU2eiRrSgemITIW61/img.png)
boardDetail.jsp ${detail.boardTitle} - ${detail.boardName} ${detail.memberNickname} 작성일 ${detail.createDate} 마지막 수정일 ${detail.updateDate} 조회수 ${detail.readCount} 썸네일 다운로드 업로드 이미지 다운로드 ${detail.boardContent} 수정 삭제 목록으로 board.js // 즉시 실행 함수 : 성능up, 변수명 중복 X (function(){ const deleteBtn = document.getElementById("deleteBtn"); // 존재하지 않으면 null if(deleteBtn != null){ // 버튼이 화면에 존재할 때 deleteBtn.addEve..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dqmuDV/btsesd5BHs1/vGQWEZAn1vVdWHlnZvVZHk/img.png)
-DB에 Reply(댓글) 테이블 생성 및 테스트 댓글 삽입 -- 댓글 테이블 CREATE TABLE "REPLY_S" ( "REPLY_NO" NUMBER PRIMARY KEY, "REPLY_CONTENT" VARCHAR2(1000) NOT NULL, "REPLY_ST" CHAR(1) DEFAULT 'N' CHECK ("REPLY_ST" IN ('Y','N')), "CREATE_DT" DATE DEFAULT SYSDATE NOT NULL, "MEMBER_NO" NUMBER REFERENCES MEMBER_S, "BOARD_NO" NUMBER REFERENCES BOARD, "PARENT_REPLY_NO" NUMBER REFERENCES REPLY_S ); COMMENT ON COLUMN "REPLY_S"..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bF7PSD/btsedaingfJ/hKjY26F2L2Qbc9HsGg9KP1/img.png)
board.js // 상세조회, 게시글 작성 - 목록으로 버튼 // 즉시 실행 함수 (function(){ const goToListBtn = document.getElementById("goToListBtn"); if(goToListBtn != null){ // 목록으로 버튼이 화면에 있을 때만 이벤트 추가 goToListBtn.addEventListener("click", function(){ // location 객체(BOM) const pathname = location.pathname; // 주소상에서 요청 경로 반환 // /community/board/detail // 문자열.substring(시작,끝) : 시작 이상 끝 미만 인덱스 까지 문자열 자르기 // 문자열.indexOf("검색 문자열..
마이바티스의 가장 강력한 기능 중 하나인 동적SQL을 처리하는 방법이다 1.if 동적SQL에서 가장 공통적으로 사용되는것으로 where의 일부로 포함될 수 있습니다 SELECT * FROM BLOG WHERE state = ‘ACTIVE’ AND title like #{title} 2.choose, when, otherwise java에서 switch구문과 유사하며 Mybatis에서는 choose엘리먼트를 제공한다 는 switch를 은 case를 의미한다 SELECT * FROM BLOG WHERE state = ‘ACTIVE’ AND title like #{title} AND author_name like #{author.name} AND featured = 1 3.trim, where, set pre..
MyPageController @Controller //bean으로 등록 @RequestMapping("/member/myPage") @SessionAttributes({"loginMember"})//session scope에서 loginMember를 얻어옴 public class MyPageController { @Autowired private MyPageService service;//Service 연결 //회원 정보 조회 이동 @GetMapping("/info") public String info() { return "member/myPage-info"; // WEB-INF/views/member/myPage-info } //비밀번호 변경 이동 @GetMapping("/changePw") publ..
MyPageController @Controller //bean으로 등록 @RequestMapping("/member/myPage") @SessionAttributes({"loginMember"})//session scope에서 loginMember를 얻어옴 public class MyPageController { @Autowired private MyPageService service;//Service 연결 //회원 정보 조회 이동 @GetMapping("/info") public String info() { return "member/myPage-info"; // WEB-INF/views/member/myPage-info } //비밀번호 변경 이동 @GetMapping("/changePw") publ..