본문 바로가기

Spring

(65)
인텔리제이에서 git 실습 gitignore 사용하면 깃이 지정된 파일들 무시한다. 팀프로젝트를 수행할 때 개인 셋팅 파일 커밋은 안올라가는게 좋으므로 설정해준다. 프로젝트 우클릭 -> New -> .ignore File -> .gitingnore FIie(Git) 기본적인 템플릿 지정, 셋팅 설정 자동 빼준다. 깃에서 관리되고 있지 않은(untracked)파일이라 빨간색으로 표시된다. gitignore가 적용되면 빨간 표시가 사라진다. 커밋은 로컬에만 커밋, 커밋 및 푸시는 원격에 커밋하는 것. 원격 서버는 커밋이 하나밖에없고, 로컬이 커밋 하나가 앞서있다 . 이 상태에서 push하면 원격을 가리키는 포인터가 올라올 것이다. 로컬의 main 브랜치에서 원격의 main 브랜치로 push가 되는 것. (다른 사람의 커밋을 가져온 다..
ch4 12. 댓글 기능 구현(3) - UI 작성 - ajax.jsp를 복사해서 test.jsp를 생성 호출이 되면 GET으로 요청이 돼서 1080게시물에 있는 댓글을 다 가져온다. [test.jsp] commentTest SEND 서버에서 확인하면 bno에 해당하는 댓글 리스트가 나타나는걸 확인할 수 있다. - 댓글 삭제 기능 버튼을 눌렀을 때 알림창이 나오면서 삭제가 수행되는걸 확인할 수 있다. - 댓글 쓰기 입력한 내용을 가지고 와서 comment 변수에 담고, 그걸 JSON으로 자바 스크립트 객체로 만들어서 보냄. 빈문자열이 들어가지 않도록 설정 - 댓글 수정 기능 comment 옆 수정 버튼을 누르면, cno번호와 comment 내용 두 개를 주고 버튼을 누르면 cno로 내용을 업데이트 한다.
ch4 11. 댓글 기능 구현(2) - Controller 작성 5) 컨트롤러 작성 및 테스트 - CommentController 생성 실습에 사용할 데이터를 더 넣어준다. 잘 가지고 오는걸 확인할 수 있다. - ResponseEntitiy 응답이나 요청할 때 전송할 대상은 Entity. 상태코드를 같이 적어서 에러가 발생했을 경우 나타날 상태 코드를 설정해준다. - 댓글을 삭제하는 메서드 쿼리스트링이 아니라 URI의 일부(REST방식으로 설계)를 가져올 때 {}로 가져오고, @PathVariable이라는 애너테이션을 붙여줘야한다. DeleteMapping이라 브라우저로 요청할 수 없으니 Postman사용. 잘 삭제되고, STATUS가 200이 나왔다. 테이블을 조회해보면 17번이 삭제된걸 볼 수 있다. - 댓글을 등록하는 메서드 content-type을 applic..
ch4 10. 댓글 기능 구현(1) - DAO 작성 1. 댓글 기능 구현 순서 1) DB 테이블 생성 2) Mapper XML 작성 3) DAO 작성 & 테스트 4) Service 작성 & 테스트 5) 컨트롤러 작성 & 테스트 --> 백앤드 6) 뷰(UI) 작성 & 테스트 --> 프론트앤드 1) DB 테이블 생성 데이터 하나 삽입 후 테이블 조회 2) Mapper XML 작성 (commentMapper.xml) DELETE FROM comment WHERE bno = #{bno} SELECT count(*) FROM comment WHERE bno = #{bno} DELETE FROM comment WHERE cno = #{cno} AND commenter = #{commenter} INSERT INTO comment (bno, pcno, comment,..
ch4 09. REST API Ajax 1. JSON이란? - Java Script Object Notation - 자바 스크립트 객체 표기법 {속성명1: 속성값1, 속성명2: 속성값2, ... } [{속성명:속성값,... } {속성명:속성값,...},...] // 객체 배열 {키1:{속성명:속성값,... }, 키2:{속성명:속성값,... },...} // Map 2. stringify()와 parse() - JS객체를 서버로 전송하려면, 직렬화(문자열로 변환)가 필요 HTTP가 Text 기반 프로토콜로 요청 및 응답을 수행하므로, JS객체를 문자로 바꿔야 한다. JSON.stringify() - 객체를 JSON 문자열로 변환(직렬화, JS객체 -> 문자열) - 서버가 보낸 데이터(JSON문자열)를 JS객체로 변환할 때, 역직렬화가 필요 텍스..
ch4 08. 게시판 검색 기능 추가하기(2) - BoardServiceImpl클래스에 searchsSelectPage를 호출하는 메서드 생성 [PageHandler] 수정 package com.fastcampus.ch4.domain; public class PageHandler { // private int page; // 현재 페이지 // private int pageSize; // 한 페이지의 크기 // private String option; // private String keyword; private SearchCondition sc; private int totalCnt; // 총 게시물 갯수 private int naviSize = 10; // 페이지 내비게이션의 크기 private int totalPage; // 전체 페이지의 갯수 ..
ch4 07. 게시판 검색 기능 추가하기(1) 1. 게시판 검색 검색 기능을 넣으려면 1) 동적 쿼리를 만들 줄 알아야 한다. - 검색할 대상을 뭘로 선택할지에 따라서 쿼리가 달라져야 한다. 2) 페이지 이동 처리를 잘 해야한다. - 검색한 결과에서 읽어서 나오는 결과를 보고 목록을 누르면 다시 해당 목록으로 가야한다.(페이징 고려) 제목 + 내용 제목만 내용만 검색을 누르면 option과 keyword가 전송된다. 그래서 컨트롤러에서 option과 keyword의 값도 받아야한다. 2. MyBatis의 동적 쿼리(1) - 과 - 공통 부분을 로 정의하고 로 포함시켜 재사용 SELECT bno, title, content, writer, view_cnt, comment_cnt, reg_date FROM board WHERE bno = #{bno} S..
ch4 06. 게시판 읽기, 쓰기, 삭제, 수정 기능 구현(2) 4. 게시물 쓰기 기능의 구현 - 게시물 목록에서 글쓰기 버튼을 하나 추가하고, 글쓰기 버튼을 클릭하면 BoardController의 write() 메서드 호출(/board/wirte GET). write()는 board.jsp 파일을 보여주고 읽기일 땐 readonly, 글쓰기일 때는 readonly를 해제해준다. 글쓰기일땐 mode=new로 주고, board값이 new이면 readonly를 해제하도록 작성 읽기와 글쓰기는 유지 보수 관리 측면에서 같은 화면으로 사용. - boardList에 button 생성 - board에 mode가 new이면 글쓰기 기능으로 설정 - BoardController에 write() 메서드 추가 글쓰기 버튼이 생기고, readonly가 해제되어 글을 작성할 수 있게 되었..