개발자 썸네일형 리스트형 [코드로 배우는 스프링 웹 프로젝트] ch12 오라클 데이터베이스 페이징 처리 1 ◎ 오라클 데이터베이스 페이징 처리 ▷ 구현된 기능들 중 가장 미숙한 부분은 목록 페이지 ▷ 목록 페이지는 기본적으로 페이징(pagination) 처리가 필요함 ▷ 수 많은 데이터를 한 페이지에서 보여주면 처리 성능에 영향을 미치며, 브라우저에서도 역시 데이터의 양이나 처리 속도에 문제를 일으킴 ▷ 일반적인 페이징 처리는 크게 번호를 이용하거나 '계속 보기'(무한 스크롤, 더 보기) 형태로 구현 1. order by의 문제 ▷ 프로그램을 이용해서 정렬할 때 데이터 양이 많을수록 많은 시간과 리소스를 소모함 ▶ 빠르게 처리 되는 것 ▶ 필요한 양만큼 가져오는 것이 중요 ▷ 페이징을 하는 이유 : 최소한의 필요한 데이터만 가져와서 빠르게 화면에 보여주기 위함 ▷ 빠르게 동작하는 SQL을 위해서는 먼저 ord.. 더보기 [코드로 배우는 스프링 웹 프로젝트] ch11 화면 처리 4 5. 게시물의 수정/삭제 처리 ▷ 조회 페이지에서 직접 처리하는 방식 ▷ 별도의 수정/삭제 페이지를 만들어 해당 페이지를 만들어 해당 페이지에서 수정과 삭제를 처리하는 방식 사용 ▷ 최근 게시물 조회 페이지에서 댓글 처리가 많아지면서 수정과 삭제는 별개의 페이지에서 하는 것이 일반적 (1) 수정/삭제 페이지로 이동 ▷ BoardController 에서 수정/삭제가 가능한 화면으로 이동하는 것은 조회 페이지와 같음 ◎ src/main/java → org.codehows.controller → BoardController 메소드 추가 @GetMapping({"/get","/modify"}) public void get(@RequestParam("bno") Long bno, Model model) { log... 더보기 [코드로 배우는 스프링 웹 프로젝트] ch11 화면 처리 3 https://bobo12.tistory.com/303 (2) 재전송(redirect) 처리 및 모달(Modal)창 보여주기 ▷ 등록 과정에서 POST 방식으로 데이터가 처리되는 과정을 그림으로 표현하면 아래와 같음 ▷ BoardController에서 register() 메소드는 'redirect:/board/list'를 전송하는데 브라우저는 이를 통보 받은 후 '/board/list'로 이동 ▷ 만약 위와 같이 재전송을 하지 않으면 사용자는 브라우저의 '새로고침'을 통해 동일한 내용을 계속 서버에 등록할 수 있어서 문제가 발생함. ▷ 브라우저에서는 이런 경우 경고창을 보여주기는 하지만 근본적으로 차단하지는 않음 ▷ 따라서 등록, 수정, 삭제 작업은 처리가 완료된 후 다시 동일한 내용을 전송할 수 없도록.. 더보기 [코드로 배우는 스프링 웹 프로젝트] ch11 화면 처리 2 https://bobo12.tistory.com/302 (3) jQuery 라이브러리 변경 ▷ JSP 페이지 작성시 JavaScript로 브라우저 내 조작이 필요한 경우가 많음 ▷ 예제는 jQuery를 이용할 것인데, 문제는 이전의 방식대로 처리했을 시 jQuery 라이브러리가 footer.jsp 내에 포함되어 있다는 점 ▷ 성능의 손해가 있더라도 jQuery를 header.jsp에 선언하면 작성하는 JSP에서 자유롭게 사용할 수 있습니다. ◎ footer.jsp에 있던 jquery 문구를 삭제하고 header 마지막에 추가합니다. ◎ jQuery를 교체한 후 모바일 크기에서 새로 고침 시 메뉴가 펼쳐지는 문제가 발생 ▷ fooder.jsp에 아래와 같은 코드 추가 ...(생략)... 2. 목록 화면 처.. 더보기 [코드로 배우는 스프링 웹 프로젝트] ch11 화면 처리 1 ◎ 화면 처리 ▷ 각 영역에 대한 모든 처리와 테스트가 완료되었고 만일 에러가 발생한다면 모든 문제는 화면 쪽에서만 발생함. ▷ 화면에는 JSP, JavaScript(jQuery), CSS, HTML 이용 ▷ 화면 개발 전에는 화면의 전체 레이아웃이나 디자인이 반영된 상태에서 개발하는 것이 좋음 ▶ BootStrap을 이용한 무료 디자인도 좋음(https://startbootstrap.com/template-categories/all/ ) ◎ 예제 사용 디자인 ▷ 'SB Admin2' 이용 ▷ http://cafe.naver.com/gugucoding (구멍가게코딩단 : 네이버 카페 (naver.com)) ▷ 해당 압축 파일을 다운 받은 후 압축 해제하고 6개의 폴더를 src/main/webapp/res.. 더보기 [코드로 배우는 스프링 웹 프로젝트] ch10 프레젠테이션(웹) 계층의 CRUD 구현 2 https://bobo12.tistory.com/300 (3) 조회 처리와 테스트 ▷ 등록 처리와 유사하게 조회 처리도 BoardController를 이용해 처리 가능 ▷ 특별한 경우가 아니라면 조회는 GET 방식으로 처리하므로, @GetMapping을 이용 ◎ src/main/java → org.codehows.controller → BoardController 클래스 수정 ...(생략)... @GetMapping("/get") public void get(@RequestParam("bno") Long bno, Model model) { log.info("get"); model.addAttribute("board", service.get(bno)); } } ▷ BoardController의 get() .. 더보기 [코드로 배우는 스프링 웹 프로젝트] ch10 프레젠테이션(웹) 계층의 CRUD 구현 1 ◎ 프레젠테이션 계층 ▷ 비즈니스 계층의 구현까지 모든 테스트가 진행되었다면 남은 작업은 프레젠테이션 계층인 웹의 구현 1. Controller의 작성 ▷ 스프링 MVC의 Controller는 하나의 클래스 내에서 여러 메소드를 작성하고 @RequestMapping 등을 이용해 URL을 분기하는 구조로 작성할 수 있음 ▷ 하나의 클래스에서 필요한 만큼 메소드의 분기를 이용하는 구조로 작성 ▷ WAS(Tomcat)을 실행하지 않고 Controller 테스트할 수 있는 방법 학습 필요 (1) BoardController 분석 ▷ 작성 전 현재 원하는 기능 호출 방식에 대해 테이블로 정리한 후 코드를 작성하는 것이 좋음 From 항목은 해당 URL을 호출하기 위해서 별도의 입력화면이 필요하다는 것을 의미 2... 더보기 [코드로 배우는 스프링 웹 프로젝트] ch09 비즈니스 계층 ◎ 비즈니스 계층 ▷ 고객의 요구사항을 반영하는 계층, 프레젠테이션 계층과 영속 계층의 중간 다리 역할 ▷ 영속 계층은 데이터베이스 기준으로 해 설계를 나눠 구현하지만, 비즈니스 계층은 로직을 기준으로 처리 ◎ 쇼핑몰에서 상품 구매 예시 1. 쇼핑몰 로직이 '물건을 구매한 회원에게는 포인트 올려준다'고 하면 영속 계층의 설계는 '상품', '회원'으로 나누어 설계 2. 비즈니스 계층은 상품 영역, 회원 영역을 동시에 사용해서 하나의 로직 처리를 하므로 아래와 같은 구조 설계를 할 때는 원칙적으로 영역을 구분해서 작성해야 하며 일반적으로 비즈니스 영역에 있는 객체들은 '서비스'라는 용어 사용 1. 비즈니스 계층 설정 1. org.codehows.service 패키지 생성 2. 각 계층 간의 연결은 인터페이스.. 더보기 이전 1 2 3 4 5 6 7 ··· 36 다음