반응형

개발/[Spring] 블로그 만들기 32

[코드로 배우는 스프링 웹 프로젝트] 17-3. Ajax 댓글 처리 (페이징처리/DB인덱스생성..)

ReplyService ReplyService 해당 프로젝트는 코드로 배우는 스프링 웹 프로젝트(개정판)을 기반으로 진행됩니다. 앞서 작성된 예제들을 해당 게시물의 전체 댓글을 가져와서 화면에 출력한다. 댓글이 몇 개 없을 때는 괜찮지만, 만약 1000개 라면? DB에서 모두 조회해야하며 끝없는 스크롤을 내리게 될 것 이다. (성능 문제는 물론) 이러한 문제를 페이징 처리를 이용하여 처리해볼 것 이다. 17.6 댓글의 페이징 처리 17.6.1 데이터베이스의 인덱스 설계 댓글에 대해 우선적으로 고려해야할 부분은 tbl_reply 테이블을 접근할 때 댓글의 번호(rno)가 아니라, 게시물의 번호(bno)가 중심이 되어야한다. tbl_reply의 PK는 rno이므로, bno에 대해 인덱스를 생성해주자. cre..

[코드로 배우는 스프링 웹 프로젝트] 17-2. Ajax 댓글 처리 (JQuery/이벤트위임/모달창띄우기/게시물 댓글 관리)

해당 프로젝트는 코드로 배우는 스프링 웹 프로젝트(개정판)을 기반으로 진행됩니다. 17.4 JavaScript 준비 JSP 내에서 댓글에 대한 처리는 하나의 페이지 내에서 모든 작업이 이뤄지기 때문에 조금 복잡하다. 또한 기존과 달리 JavaScript와 동적으로 만들어지는 HTML로 처리하기 때문에 각 단계를 작성할 때 주의해야한다. 17.4.1 JavaScript의 모듈화 JavaScript에서 가장 많이 사용되는 패턴 중 하나는 모듈패턴이다. 모듈패턴이란 쉽게 말해 관련있는 함수들을 하나의 모듈처러 묶음으로 구성하는 것을 의미한다. 예제 프로젝트의 webapp 내 resources/js 폴더에 reply.js 파일을 작성해본다. reply.js : 우선은 아무 기능 없이 생성해 놓는다! consol..

[코드로 배우는 스프링 웹 프로젝트] 17-1강. Ajax 댓글 처리 (게시판 댓글 페이징/CRUD 처리하기...)

해당 프로젝트는 코드로 배우는 스프링 웹 프로젝트(개정판)을 기반으로 진행됩니다. 17.1 프로젝트의 구성 REST 처리를 위해서는 pom.xml에서 수정된 내용이 대부분이므로, PART3 에서 사용된 'src/main/java'폴더 아래 모든 Java코드를 그대로 복사해서 사용한다. 또한, 'src/main/resources'에서는 log4jdbc-log4j2를 이용하기 위해서 log4jdbc-log4j2.properties 파일을 추가해야한다. 프로젝트는 오라클을 이용하으로 프로젝트 설정을 통해 JDBC 드라이버가 프로젝트 경로에 포함되도록 설정이 필요하다. * 프로젝트명 우클릭 > Properties > Java Build Path > Libraries > ojdbc추가 * 프로젝트명 우클릭 > P..

[코드로 배우는 스프링 웹 프로젝트] 16강. REST 방식으로 전환 (REST/ @RestController/Restlet Client 프로그램)

해당 프로젝트는 코드로 배우는 스프링 웹 프로젝트(개정판)을 기반으로 진행됩니다. REST는 'Representational State Transfer'의 약어로 하나의 URI는 하나의 고유한 리소스를 대표하도록 설계된다는 개념에 전송방식을 결합해서 원하는 작업을 지정한다. Ex) '/boards/123'은 게시물 중에서 123번이라는 고유한 의미를 가지고, 이에 대한 처리는 GET/POST 방식 등 추가적인 정보를 통해서 결정 REST와 관련하여 알아두어야 할 어노테이션 16.1 @RestController REST 방식에서 기억해야하는 점은 서버에서 전송하는 것이 순수한 데이터 라는 것이다. 기존의 Controller에서 Model에 데이터를 담아 JSP 등과 같은 뷰로 전달하는 방식이 아니다. 16..

[코드로 배우는 스프링 웹 프로젝트] 15강. 검색 처리 (동적 SQL(prefix/suffix/prefixOverrides/suffixOverrides), <sql>, UriComponentsBuilder )

해당 프로젝트는 코드로 배우는 스프링 웹 프로젝트(개정판)을 기반으로 진행됩니다. 게시물 관리의 마지막은 "검색 처리"이다. select 태그를 이용해서 검색 기능과 화면을 처리해보자. 15.1 검색 기능과 SQL 게시물의 검색 기능은 아래와 같이 분류가 가능하다. 1) 제목 / 내용 / 작성자와 같이 단일 항목 검색 2) 제목 or 내용 / 제목 or 작성자 / 내용 or 작성자 / 전체 와 같은 다중 항목 검색 15.2 MyBatis의 동적 SQL : MyBatis는 동적(Dynamic) 태그 기능을 통해서 SQL을 파라미터들의 조건에 맞게 조정할 수 있는 기능을 제공한다. 15.2.1 MyBatis의 동적 태그들 - if : 특정한 조건이 True가 되었을 때 포함된 SQL을 사용하고자 할 때 작성..

[코드로 배우는 스프링 웹 프로젝트] 14강. 페이징 화면 처리 (페이지네이션, 페이징처리, JQuery)

해당 프로젝트는 코드로 배우는 스프링 웹 프로젝트(개정판)을 기반으로 진행됩니다. URL의 파라미터를 이용해서 정상적으로 원하는 페이지로 이동하는 것을 확인했다면, 화면 밑에 페이지를 표시하고 클릭할 수 있도록 진행해본다. 아래와 같은 과정으로 진행한다. 브라우저 주소창에서 페이지 번호를 전달해서 결과를 확인하는 단계 JSP 에서 페이지 번호를 출력하는 단계 각 페이지 번호에 클릭 이벤트 처리 전체 데이터 개수를 반영해서 페이지 번호 조절 14.1 페이징 처리 할 때 필요한 정보들 - 현재 페이지 번호 (page) - 이전과 다음으로 이동 가능한 링크의 표시 여부 (prev, next) - 화면에서 보여지는 페이지의 시작 번호와 끝 번호 (startPage, endPage) 14.1.1 끝 페이지 번호와..

[코드로 배우는 스프링 웹 프로젝트] 13강. MyBatis와 스프링에서 페이징 처리

해당 프로젝트는 코드로 배우는 스프링 웹 프로젝트(개정판)을 기반으로 진행됩니다. MyBatis는 SQL을 그대로 사용할 수 있기 때문에, 앞 게시글에서 공부한 인라인뷰를 이용하는 SQL을 통해 페이징 처리를 진행해 볼 것이다. 여기서, 중효한 점은! 페이징 처리를 위한 SQL을 실행할 때 몇 가지 파라미터가 필요하다. 1) 페이지 번호(pageNum), 2) 한 페이지당 몇 개의 데이터(amount)를 보여줄 것인지가 결정되어야 한다. 이를 하나의 객체로 묶어서 전달하는 방식으로 진행해본다. org.zerock.domaim 패키지 내 Criteria Class 생성하기 Criteria.java package org.zerock.domain; import lombok.Getter; import lombo..

[코드로 배우는 스프링 웹 프로젝트] 12강. 오라클 데이터베이스 페이징 처리 (Oracle/SQL/페이징처리)

해당 프로젝트는 코드로 배우는 스프링 웹 프로젝트(개정판)을 기반으로 진행됩니다. 12.1 실행 계획 (execution plan) 오라클의 페이징 처리를 위해서는 실행 계획(execution plan)을 알아야 한다. 실행 계획이란, SQL을 데이터베이스에서 어떻게 처리 할 것인가를 의미한다. SQL이 데이터베이스에 전달되면 데이터 베이스는 아래와 같은 과정을 거쳐 처리된다. 1) SQL 파싱 단계 : SQL 구문에 오류가 있는지 SQL을 실핼해야 하는 대상 객체(테이블, 제약 조건, 권한 등)가 존대하는지를 검사함. 2) SQL 최적화 단계 : SQL이 싱행되는데 필요한 비용(cost)을 계산하여 이 값으로 어떤 방식으로 실행하는 것이 가장 좋을지 판단하는 '실행 계획'을 세움 3) SQL 실행 단계..

[코드로 배우는 스프링 웹 프로젝트] 11강. 화면 처리2 (조회 페이지/게시물 수정/게시물 삭제 처리)

해당 프로젝트는 코드로 배우는 스프링 웹 프로젝트(개정판)을 기반으로 진행됩니다. 11.4 조회 페이지와 이동 11.4.1 조회 페이지 작성 : 조회 페이지는 입력 페이지와 거의 유사하지만 게시물 번호(bno)가 출력된다는 점과 모든 데이터가 읽기 전용으로 처리된다는 점이 가장 큰 차이이다. 게시물의 조회는 BoardController에서 get() 메소드로 구성한다. BoardController.java 일부 //글 조회 메소드 @GetMapping("/get") public void get(@RequestParam("bno") Long bno, Model model) { log.info("/get.."); model.addAttribute("board", service.get(bno)); } get...

[코드로 배우는 스프링 웹 프로젝트] 11강. 화면 처리1 (게시물 조회/목록 페이지 구현/include/bootstrap)

해당 프로젝트는 코드로 배우는 스프링 웹 프로젝트(개정판)을 기반으로 진행됩니다. 각 영역에 대한 모든 처리와 테스트가 끝이 났다! 이제 화면을 구성해보도록 한다. 화면은 BootStrap의 무료디자인을 활용할 것이다. * 사용 BootStrap 다운로드 URL : https://startbootstrap.com/theme/sb-admin-2 SB Admin 2 - Free Bootstrap Admin Theme - Start Bootstrap Like our free products? Our pro products are even better! Go Pro Today! startbootstrap.com 1. 목록 페이지 작업과 includes 1.1 목록 페이지 만들기 /WEB-INF/views/boa..