Burninghering's Blog
article thumbnail
댓글 기능 구현 - back
패캠 챌린지 2023. 6. 15. 22:26

DB부터 시작해서 DB에서 가까운 순으로 쭉 개발 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, commenter, reg_date, up_date) VALUES (#{bno}, #{pcno}, #{comment}, #{commenter}, now(), now()) SELECT cno, bno, pcno, comment, commenter, reg_date, up_date ..

article thumbnail
REST API와 Ajax
패캠 챌린지 2023. 6. 14. 22:17

복잡한 XML(데이터 교환할 때 데이터보다 태그가 더 많음)보다 사용하기 더 편함 HTTP가 TEXT기반 프로토콜이기 때문에 "전송"하려고 직렬화하는 것이다. 기본적으로 동기 이지만 비동기로 하여 효율을 높인다 웹페이지 전체를 업데이트하는 것은 비효율적이기 때문에 일부 데이터만 업데이트 하는 것을 비동기라고 한다. 우리는 게시판 덧글 달때, 바뀐 덧글만 가져오기 위해 사용할 것이다. 왼쪽 그림이 동기 통신 / 오른쪽 그림이 비동기 통신 동기 통신은 요청을 하면(함수 호출) 서버가 처리하고, 응답 올 때까지 계속 기다려야 한다. 응답이 와야 다른 작업을 할 수 있다. 비동기 통신은 요청을 보내놓고 다른 작업을 할 수 있다. 언제 처리가 끝났는지 알 수 있는 방법은 콜백함수를 사용한다. jQuery로 비동기..

article thumbnail
게시판 검색 기능 만들기
패캠 챌린지 2023. 6. 12. 19:36

1.검색할 대상을 뭐로 선택하느냐에 따라 쿼리가 달라지므로 동적쿼리 2.페이지 이동 처리 sql을 공통부분으로 만들고, include로 공통부분을 받아온다. A = 내용 + 제목 T = 제목 W = 작성자 if문으로 하기엔 셋 다 조건에 맞을 수 있으므로 우리가 지금 개발하려는 기능에는 choose가 낫다 %를 와일드카드라고 하는데, 여러 글자를 뜻함(0+, 0이거나 더 많거나 - title도 되고 title1도 된다.) _는 한글자를 뜻함 (title_일때, title은 안되고 title1은 된다.) bno가 여러개일 때, foreach로 배열을 만들어서 구분자를 콤마로 해서 값들을 다 구성해주는 것 (where bno in (1,2,3) 이라는 sql절도 있지만 훨씬 더 많을 때 사용) boardMa..

article thumbnail
게시판 CRUD 기능 구현_쓰기, 수정
카테고리 없음 2023. 6. 7. 01:07

먼저 boardList.jsp에 글쓰기 버튼을 만든다. 글쓰기 onclick은 버튼을 클릭했을 때 발생하는 이벤트, 원래는 호출될 함수를 지정해줘야 하지만 함수 안에 들어갈 문장만 넣은 것이다.(함수의 내용이 짧을 때만) location.href는 주소창에 주소(뒤에 적힌 주소)를 적고 이동하기 버튼을 누르는 것과 같다. @GetMapping("write") public String write(Model m){ m.addAttribute("mode","new"); //mode에 값을 new로 준다. return "board"; //읽기와 쓰기에 사용되는데, 쓰기에 사용할때는 mode=new로 준다 -> jsp가 mode를 확인하고 알맞게 응답을 하도록 준다 } board.jsp mode의 값에 따라서, ..

article thumbnail
게시판 CRUD 기능 구현_읽기, 삭제
패캠 챌린지 2023. 6. 5. 16:33

기능별 URI 정의 URL - 리소스 경로 URN - 리소스의 유일한 이름 위의 두개를 총칭하는 이름이 URI(Identifier 유일한 이름 명칭) URL : 전체 경로일 경우 URL의 일부만 적을 경우 : URI BoardController.java @Controller @RequestMapping("/board") public class BoardController { @Autowired BoardService boardService; @GetMapping("/read") public String read(Integer bno,Model m){ //읽어온 것을 board.jsp(view)로 전달할 모델 try { BoardDto boardDto = boardService.read(bno); // m..

article thumbnail
게시판 목록 만들기와 페이징 - TDD(2)
패캠 챌린지 2023. 5. 24. 21:24

getter/setter를 만들어주기 위해 변수에 private를 붙여주었다. package com.fastcampus.ch4.domain; public class PageHandler { private int totalCnt; //총 게시물 개수 private int pageSize; //한 페이지의 크기 private int naviSize=10; //페이지 네비게이션의 크기 private int totalPage; //전체 페이지의 갯수 private int page; //현재 페이지 private int beginPage; //네비게이션의 첫번째 페이지 private int endPage; // 네비게이션의 마지막 페이지 private boolean showPrev; //이전 페이지로 이동하는 링..

article thumbnail
게시판 목록 만들기와 페이징 - TDD(1)
패캠 챌린지 2023. 5. 12. 19:17

게시물이 너무 많을 때 페이지 별로 나눠놓고, 페이지 네비게이션을 통해 게시물을 편리하게 볼 수 있도록 하는 것 테이블에 들어있는 데이터를 페이지별로 가져오려면 SELECT문의 LIMIT이라는 구문을 사용해야 한다. offset이란, 처음부터 빨간 네모까지 얼마나 떨어져 있는가? 이고 row_count는 읽어올 row의 수 이다. 첫 번째 페이지의 offset은 0 두 번째 페이지의 offset은 10.. offset을 만드는 방법이 어려우므로, 일단 page-1을 해보면 page보다 하나씩 줄어드는 것을 알 수 있다. 거기다가 *10을 하면 offset을 계산할 수 있다. package com.fastcampus.ch4.domain; public class PageHandler { int totalCn..

article thumbnail
MaBatis로 DAO작성하기
패캠 챌린지 2023. 5. 11. 15:56

변환 에러를 피하기 위해 게시물 번호를 Integer를 썼다. 사용자가 요청한 데이터를 DTO에 담아서 서비스 계층으로 서비스 계층에서 Repository 계층으로 데이터를 전달할 필요가 있다 각 계층으로 분리를 해놨기 때문에 계층 간 데이터를 전달하는 객체가 DTO 컨트롤러의 실행 흐름 제어 : Redirect & Forward 관심사, 역할에 따라 계층을 분리해놨고 각 계층 간 데이터를 전달할 필요가 있기 때문에 그 데이터를 담을 객체를 DTO라고 한다. xml문 작성하기 1.mapper > boardMapper.xml 파일 생성하기 2.xml 코드 따오기 3.select문 만들기 4.console로 가서, board 테이블을 검색하는 select sql문을 만들어서 복사해서 가져와서 붙여넣어주기 s..