Web Programming/Project

    [게시판 만들기] 3-8. Spring 게시판 등록 및 상세화면 만들기

    1. AOP 설정 OOP를 보완하기 위해 나온 개념 객체 지향의 프로그래밍을 했을 때 중복을 줄일 수 없는 부분을 줄이기 위해 종단면(관점)에서 바라보고 처리한다. 주로 '로깅', '트랜잭션', '에러 처리'등 비즈니스단의 메서드에서 조금 더 세밀하게 조정하고 싶을 때 사용합니다. Interceptor나 Filter와는 달리 메소드 전후의 지점에 자유롭게 설정이 가능하다. Interceptor와 Filter는 주소로 대상을 구분해서 걸러내야하는 반면, AOP는 주소, 파라미터, 애노테이션 등 다양한 방법으로 대상을 지정할 수 있다. [게시판 만들기] 3-3. Spring 게시판을 위한 Log4j2 와 Interceptor AOP의 Advice와 HandlerInterceptor의 가장 큰 차이는 파라미터..

    [게시판 만들기] 3-7. Spring 게시판 등록 및 상세화면 만들기

    3-6까지 만들어 보았으면, 이후 개발까지 쉽게 진행할 수 있습니다. 1. 등록 페이지 생성 페이지 이동을 위하여 태그를 추가해 줍니다. 글쓰기 버튼을 클릭하면 @RequestMapping 을 통해 View 페이지를 호출 합니다. 작성 화면을 담당하는 JSP 페이지를 생성합니다. 기존 게시판 목록만들기와 동일한 과정으로 진행됨으로 자세한 설명은 생략하겠습니다. BoardController.java BoardServiceImpl.java BoardService.java BoardDAO.java mapping-ibatis2-board.xml iBatis는 변수는 #변수명# 으로 사용합니다. View 페이지에서 Form 태그 안에 name 속성을 사용하면 키 역활을 합니다. 또한 그 안의 값이 Value에 속..

    [게시판 만들기] 3-6. Spring 게시판을 위한 HandlerMethodArgumentResolver

    HandlerMethodArgumentResolver 란? View 페이지에서 Controller 로 데이터를 전달하기 전 파라메터를 커스터마이징 할 수 있게한느 인터페이스로 webArgumentResolver 였으나, Spring 3.X버전부터는 HandlerMethodArgumentResolver로 변경되었습니다. 스프링에서 제공하는 인터페이스로 , Controller 로 전달되는 파라메터(데이터)가 먼저 수정 및 가공이 이뤄집니다. 데이터를 전달하는 방법으로는 대표적으로 DTO(VO) 혹은 HashMap이 존재하는데 HandlerMethodArgumentResolver 는 HashMap으로 데이터를 가공해서 받을때 많이 사용하는 것으로 보입니다. DTO(VO) 를 사용하면 DB 테이블의 컬럼과 일치..

    [게시판 만들기] 3-5. Spring 게시판 목록 만들기

    게시판을 만들기 웹 프로젝트를 하면서 가장 기본적으로 배우게 되는 내용이며, 여러가지 설정과 기법을 통해 구현을 할 수 있습니다. 1. 데이터베이스 테이블 생성 각각의 데이터베이스가 존재하며 , 해당 글에서는 Oracle 11G ORCL을 통하여 작성하게 되었습니다. 테이블 생성 CREATE TABLE TB_BOARD( TB_IDX number primary key,-- 게시글에 대한 고유값 TB_TITLE varchar2(30),-- 게시글 제목 TB_CONTENTS varchar2(100),-- 게시글 내용 TB_CONTENT_CNT number(1),-- 게시글 조회 수 TB_DEL_GB char(1),-- 삭제여부 TB_WRITE_DTM Date,-- 게시글 작성일 TB_WRITE_ID varch..

    [게시판 만들기] 3-4. Spring 게시판을 위한 iBatis 와 Oracle연동

    1. iBatis(아이바티스)란? SQL에 기반한 데이터베이스와 자바, 닷넷(.NET) 등을 연결시켜 주는 역할을 하며, 프로그램의 소스코드에서 SQL 문장을 분리하여 연결시켜주는 방식입니다. 이는 기존 JDBC를 이용하여 프로그래밍을 하는 방식에 비해서 개발자의 부담을 덜어주고, 생산성 향상에도 도움이 됩니다. ibatis는 공식적으로 3.X 버전까지만 지원되며 이후, Mybatis 로 변경되었습니다. 2. pom.xml 에 iBatis 라이브러리 추가 스프링에서 iBatis를 사용하려면 라이브러리가 필요하다. 스프링 프로젝트는 Maven 을 통해 라이브러리가 관리되며 아래와 같이 추가하면 됩니다. ibatis를 4.X 에서 사용할 경우, mybatis-2-spring을 추가하셔야합니다. 3. pom...

    [게시판 만들기] 3-3. Spring 게시판을 위한 Log4j2 와 Interceptor

    1. 인터셉터의 설정 인터셉터는 DispatcherServlet이 컨트롤러를 호출하기 전,후에 요청과 응답을 가로채서 가공할 수 있도록 해줍니다. 예를 들어, 로그인 기능을 구현한다고 했을때, 로그인 여부에 따라 보여줄 수 있는 페이지와 없는 페이지를 분리할 때 사용할 수 있습니다. 2. 인터셉터의 생성 src/main/java/board 패키지 안에 패키지와 LoggingInterceptor.java 를 생성합니다. 인터셉터는 HandlerInterceptorAdapter 를 상속 받아 생성합니다. 클래스를 상속받으면 사용할 수 있는 3가지의 메서드가 존재합니다. perHandle() - 컨트롤러 호출 전 사용합니다. postHandle() - 컨트롤러 호출 후 사용합니다. afterHandle() -..

    [게시판 만들기] 3-2. Spring 게시판을 위한 web.xml 설명

    1. index.jsp 추가 프로젝트를 처음 생성하게 되면 기본적으로 views 폴더에 있는 home.jsp가 실행됩니다. 그렇지만 일반적으로 웹 프로그램이 시작되면 index 페이지가 기본값으로 보여지도록 약속되어 있습니다. 이를 위해 index.jsp를 추가합니다. 2. web.xml 설정 변경 web.xml은 WAS가 처음 구동될 때, WEB-INF 디렉토리에 있는 web.xml을 읽고 웹 애플리케이션 설정을 구성합니다. web.xml 통해서, 이 프로젝트가 시작되면 index.jsp를 호출하도록 변경할 수 있습니다. 3. Test 폴더 삭제 프로젝트를 생성하면 기본적인 틀이 생성되는데 그 안에 src/test/ 폴더도 함께 생성 됩니다. 해당 부분은 테스트 코드를 따로 관리하는 폴더 입니다. 사용..

    [게시판 만들기] 3-1. Spring 게시판을 위한 프로젝트 생성

    스프링은 자바 기반의 오픈 소스 어플리케이션으로 좀 더 획일화되고 좀 더 편리한 방법으로 프로젝트를 진행 할 수 있습니다. 가장 큰 특징으로는 제어 반전(IoC : Inversion of Control), 의존성 주입(DI : Dependency Injection)이 있습니다. 스프링의 특징 1. IoC 는 사용자의 제어권이 있는 것이 아니라 프레임 워크에 있다는 의미입니다. 예를 들면 기존엔 객체를 생성하였지만, 스프링은 프레임워크가 실행 시, 객체 ( 빈 ) 을 생성하여 호출하는 형식으로 사용 합니다. 2. DI 는 스프링 프레임워크가 실행 시, 빈 형태로 객체가 스프링 컨테이너에 담기게 됩니다. 이를 호출하여 사용하는 방식을 의존성 주입이라고 합니다. 3. 트랜잭션이나 로깅, 보안과 같이 여러 모듈..

    [게시판 만들기] 2-4. JSP - Oracle 을 이용한 Model2 입니다.

    데이터의 흐름 View(list.jsp) -> Controller(contentController) -> Model(Board_DAO.selectByIdx) -> Controller(contentController) -> View(content.jsp) 1. 목록 중 제목을 클릭하면 상세 페이지로 이동할 예정입니다. 제목 명 을 클릭하면 contentController 로 이동합니다. 2. Controller 이동 시, Primary Key 인 Idx를 함께 가져와서 해당 데이터만 content Page로 데이터를 전달합니다. 3. DAO에 있는 selectByIdx를 호출합니다. ? 안에는 View(list.jsp)에서 전달받은 BOARD_IDX 를 넣습니다. 4. View(content.jsp) 안에..

    [게시판 만들기] 2-3. JSP - Oracle 을 이용한 Model2 입니다.

    데이터의 흐름 View(index.jsp) -> Controller(listController) -> Model(Board_DAO.select) -> Controller(listController) -> View(list.jsp) 1. DTO(Data Transfer Object) 는 계층간 데이터 교환을 위한 자바빈즈를 의미 데이터 객체이며, 비즈니스 로직을 가지지 않고 Getter & Setter를 표현하고 있습니다. 일반적으로 Database 의 속성을 멤버변수로 가집니다. Getter & Setter 생성방법 Source(Alt+Shift+S) 창에서 Getter and Setters 를 선택하면 자동으로 생성됩니다. 2. DTO 의 생성 3. list.jsp 에 표현된 자바코드를 Board_DA..