분류 전체보기
[14] 기본적인 웹 게시물 관리 - 화면 처리
드디어 각 영역에 대한 모든 처리와 테스트가 완료되었다!!!! 만일 에러가 발생한다면 모든 문제는 화면 쪽에서만 발생한다고 할 수 있다. 화면에는 JSP와 JavaScript, CSS, HTML을 이용해서 작성한다. 화면을 개발하기 전에는 반드시 화면의 전체 레이아웃이나 디자인이 반영된 상태에서 개발하는 것을 추천한다. 일부 개발자들은 화면을 나중에 처리한다고 생각하고 진행하는 경우가 있는데 결과적으로는 두 배의 시간을 들일 가능성이 높기 때문에 권장하지 않는다! 만일 웹 디자이너가 같이 참여하지 못한다면 최근에 유행하는 BootStrap을 이용한 무료 디자인들을 찾아보는 것도 좋다. -> http://startbootstrap.com/template-categories/all/ Free Bootstra..
[13] 기본적인 웹 게시물 관리 - 프레젠테이션 계층의 CRUD 구현
1. Controller의 작성 스프링 MVC의 Controller는 하나의 클래스 내에서 여러 메서드를 작성하고, @RequestMapping 등을 이용해서 URL을 분기하는 구조로 작성할 수 있기 때문에 하나의 클래스에서 필요한 만큼 메서드의 분기를 이용하는 구조로 작성한다. 과거에는 이 단계에서 Tomcat(WAS)를 실행하고 웹 화면을 만들어서 결과를 확인하는 방식의 코드를 작성해 왔다. 이 방식은 시간도 오래 걸리거니와 테스트를 자동화 하기에 어려움이 많다. 따라서 이 단계에서는 WAS를 실행하지 않고 Controller를 테스트할 수 있는 방법을 학습한다. 1-1. BoardController 의 분석 작성하기 전에는 반드시 현재 원하는 기능을 호출하는 방식에 대해 다음과 같이 테이블로 정리한..
[12] 기본적인 웹 게시물 관리 - 비즈니스 계층
비즈니스 계층은 고객의 요구사항을 반영하는 계층으로 프레젠테이션 계층과 영속 계층의 중간 다리 역할을 하게 된다. 영속 계층은 데이터베이스를 기준으로 해서 설계를 나눠 구현하지만, 비즈니스 계층은 로직을 기준으로 해서 처리하게 된다. 예컨대, '쇼핑몰에서 상품을 구매한다'라고 가정했을때 해당 쇼핑몰의 로직이 '물건을 구매한 회원에게는 포인트를 올려준다'고 하면 영속 계층의 설계는 '상품'과 '회원'으로 나누어서 설계하게 된다. 반면에 비즈니스 계층은 상품 영역과 회원 영역을 동시에 사용해서 하나의 로직을 처리하게 된다. 현재 예제는 단일한 테이블을 이용하고 있기 때문에 위와 같은 구조는 아니지만, 설계를 할 때는 원칙적으로 영역을 구분해서 작성해야 한다. 일반적으로 비즈니스 영역에 있는 객체들은 '서비스..
[11] 기본적인 웹 게시물 관리 - 영속/비즈니스 계층의 CRUD 구현
영속 계층의 작업은 항상 다음과 같은 순서로 진행한다. 테이블의 칼럼 구조를 반영하는 VO 클래스의 생성 MyBatis의 Mapper 인터페이스의 작성/XML 처리 작성한 Mapper 인터페이스의 테스트 위의 과정 전에 먼저 JDBC 연결을 테스트 하는 과정을 거치는 것이 좋지만, SQL Developer의 연결 자체가 이미 JDBC 연결을 이용하기 때문에 예제에서는 별도의 과정을 생략하고 진행하겠다. 1. 영속 계층의 구현 준비 1-1. VO 클래스의 작성 VO 클래스를 작성하는 작업은 테이블 설계를 기준으로 작성하면 된다. 현재 tbl_board 테이블의 구성은 아래와 같다. 1-2. 프로젝트에 org.zerock.domain 패키지를 생성하고, BoardVO클래스를 정의한다. 그리고 아래와 같은 코..
[10] 기본적인 웹 게시물 관리 - 스프링 MVC 프로젝트의 기본 구성
예제를 작성하기에 앞서서 스프링 MVC를 이용하는 프로젝트의 구성을 이해하는 일은 전체 데이터의 흐름을 보기 위해서이다. 브라우저에서 전송한 데이터를 스프링 MVC의 어떤 단계를 거쳐서 실행되는지를 이해한다면 문제가 발생했을 때 빠른 대처와 대안을 찾을 수 있기 때문이다. 일반적으로 웹 프로젝트는 3-tier 방식으로 구성한다. Presentation Tier(화면계층) : 화면에 보여주는 기술을 사용하는 영역이다. 책의 예제에서는 Servlet/JSP나 스프링 MVC가 담당하는 영역이 된다. Presentation Tier는 프로젝트의 성격에 맞춰 앱으로 제작하거나, CS(Client-Server)로 구성되는 경우도 있다. 이전 파트에서 학습한 스프링 MVC나 JSP를 이용한 화면 구성이 이에 속한다...
[09] 스프링 MVC의 Controller 및 여러 예제 2
3-8. @DateTimeFormat @InitBinder를 이용해서 날짜를 변환할 수도 있지만, 파라미터로 사용되는 인스턴스 변수에 @DateTimeFormat을 적용해도 변환이 가능하다. (둘중 하나를 사용.) 3-8-1. TodoDTO 클래스에 아래와 같은 코드를 추가한다. package org.zerock.domain; import java.util.Date; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.ui.Model; import lombok.Data; @Data public class TodoDTO { private String title; // if you using @InitB..