목록Spring (57)
KSI일기장
*댓글수정* -ReplyController //댓글 수정 /*url : contextPath + "/reply/update", data : {"replyNo" : replyNo, "replyContent" : replyContent}, type : "POST" */ @PostMapping("/update") public int replyUpdate(@ModelAttribute Reply reply ) { // -> vo객체를 가져올때는 @ModelAttribute reply.getReplyNo(); reply.getReplyContent(); int result = replyservice.replyUpdate(reply); return result; } -ReplyService /**댓글수정 * @par..
*방법1* (Map에 값 담아서 전달하기) -ReplyController //댓글 등록 /* url : contextPath + "/reply/insert", data : {"memberNo" : loginMemberNo, "boardNo" : boardNo, "parentReplyNo" : parentReplyNo, "replyContent" : replyContent}, type : "POST", myPage 비밀번호변경 참고 */ //@RequestParam Map map 선언시 ajax의 data 값 map에 담겨진다 @PostMapping("/insert") public int replyInsert(@RequestParam Map map, @RequestParam(value="parentRepl..
org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'int'; nested exception is java.lang.NumberFormatException: For input string: "delete" Caused by: java.lang.NumberFormatException: For input string: "delete" For input string: "delete" -> 으로 봤을 때 delete 가 버튼이 잘못 되있는것으로 예상되어 확인해보니 jsp 에서 delete button ..
*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 -> 해결방법 필드명, 컬럼명이 다..

DispatcherServlet :클라이언트 요청(Request)을 전달 받고, 요청에 맞는 컨트롤러가 리턴 한 결과값을 View에 전달해 알맞은 응답(Response)을 생성 HandlerMapping :클라이언트 요청 URL을 어떤 컨트롤러가 처리할지 결정 Controller :클라이언트 요청을 처리한 뒤, 결과를 DispatcherServlet에게 리턴 ModelAndView :컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담음 ViewResolver :컨트럴러의 처리결과를 생성할 View를 결정 View :컨트롤러의 실행결과 화면을 생성, JSP나 velody탬플릿 파일등을 View로 사용

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..

-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"..

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("검색 문자열..