일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 컬렉션 타입
- Java
- 제네릭
- 환경설정
- 집합_SET
- abstract
- 참조형변수
- exception
- EnhancedFor
- 사용자예외클래스생성
- 인터페이스
- 정수형타입
- 추상메서드
- 자바
- 예외미루기
- NestedFor
- 컬렉션프레임워크
- 한국건설관리시스템
- 자동차수리시스템
- 오라클
- 어윈 사용법
- 예외처리
- 메소드오버로딩
- GRANT VIEW
- 대덕인재개발원
- 다형성
- oracle
- cursor문
- 생성자오버로드
- 객체 비교
- Today
- Total
목록Java (116)
거니의 velog
1. 관점 지향 프로그래밍의 등장 * 가끔 어떤 사이트가 해킹을 당해 피해를 입었다는 소식을 듣곤 한다. 그러다 보니 요즘은 웹 애플리케이션 개발 시 해킹에 대비한 보안 기능 구현은 필수가 되고 있다. 그리고 모든 웹 애플리케이션은 로깅 기능을 적용해 사용자의 접속 내역을 로그로 기록한다. 그 외 트랜잭션, 예외처리, 이메일 통보 기능은 모든 웹 애플리케이션에서 공통으로 사용하는 기능이다. 따라서 웹 애플리케이션에 주기능을 추가할 때마다 앞에서 언급한 공통 기능도 일일이 구현해 주어야 한다. 하지만 이는 결국 배보다 배꼽이 더 큰 결과를 초래하게 된다. 스프링에서는 이런 문제를 관점 지향 프로그래밍(AOP, Aspect Oriented Programming)으로 해결할 수 있다. * 예를 들어 살펴보자...
(2) 생성자를 이용한 DI 기능 * 이번에는 생성자 주입 방식으로 DI를 실습해 보자. 1. com.spring.ex02 패키지를 만들고 다음과 같이 클래스를 추가한다. 2. person.xml을 다음과 같이 작성한다. 태그를 이용해 id가 personService1인 빈을 생성하고 태그를 이용해 생성자 호출 시 생성자 매개변수로 태그의 값을 전달하여 속성을 초기화한다. 이처럼 PersonServiceImpl 클래스의 인자가 한 개인 생성자를 이용하여 name 속성에 태그 값이 주입된다. 두 번째 태그에서는 빈 생성 시 인자가 두 개인 생성자를 호출하면서 두 개의 값을 전달하여 각각의 속성을 초기화한다. 즉, PersonServiceImpl 클래스의 인자가 두 개인 생성자를 이용해 name과 age 속..
2. 의존성 주입 실습하기 * 이번에는 의존성 주입의 두 방법인 setter를 이용한 방식과 생성자를 이용한 방식을 각각 실습을 통해 확인해 보자. 먼저 setter를 이용해 DI를 실습하는 방식부터 알아보자. (1) setter를 이용한 DI 기능 * 다음 그림은 setter를 이용해 실습할 클래스들의 계층 구조이다. * 자바 프로젝트에서 DI 기능을 실습하려면 우선 스프링 관련 라이브러리의 패스를 설정해 주어야 한다. 1. 이클립스 상단에서 New > Project... 를 선택한 후 Java Project를 선택하고 Next를 클릭한다. 2. 프로젝트 이름으로 pro19를 입력하고 Finish를 클릭한다. 3. 이클립스에서 자바 프로젝트를 생성한다. 자바 프로젝트 생성 시 이클립스의 Perspect..
* 자바와 같은 객체 지향 프로그래밍 언어에서 클래스는 특정 기능을 수행하는 부품 역할을 한다. 우리가 살아가는 현실 세계에서도 어떤 부품을 사용하다가 이상이 있거나 오래 되면 다른 부품으로 교체해서 사용한다. 마찬가지로 애플리케이션에서도 사용자의 요구 사항에 따라 클래스 기능을 변경하거나 다른 클래스 기능으로 대체해야 하는 경우가 자주 생긴다. 이러한 상황에서 좀 더 수월하게 대체할 수 있게 도입된 기능이 바로 의존성 주입(DI)과 제어 역행(IoC)이다. 1. 의존성 주입하기 * 지금까지 우리가 프로그래밍을 할 때는 어떤 한 클래스가 다른 클래스의 기능을 사용하려면 당연히 개발자가 직접 코드에서 사용할 클래스의 생성자를 호출해서 사용했다. 즉, 사용할 클래스와 사용될 클래스의 관계는 개발자에 의해 직..
* 앞에서 모델2 구조로 웹 애플리케이션을 구현해 봤다. 모델2 기반으로 애플리케이션을 개발할 경우 개발과 유지관리가 모델1 방식보다 쉽다. 하지만 새로운 애플리케이션을 개발할 때마다 일일이 처음부터 다시 개발해야 한다는 단점이 있다. 모든 웹 애플리케이션에서 필요한 공통 기능들을 각각 처음부터 다시 개발해야 한다는 것은 비효율적이다. * 이보다 더 좋은 방법은 애플리케이션 개발 시 일방적인 웹 애플리케이션에서 많이 사용하는 기능은 미리 만들어서 제공하고, 그 외에 필요한 부분만 추가 및 수정하는 것이다. 이렇게 하면 훨씬 효율적일 뿐만 아니라 일정한 형식에 따라 개발을 진행하므로 표준화가 이루어져 생산성도 높일 수 있다. * 애플리케이션 규모가 커질 수록 각 기능을 개발자가 따로 개발하는 것보다 표준화..
(7) 게시판 페이징 기능 구현 * 게시판 만들기 프로젝트의 마지막 단계이다. * 어떤 게시판이든 목록의 글이 많아지면 한 페이지에 모든 글이 표시되는 것이 아니라 다음과 같이 [1], [2], [3] ... 이렇게 페이지별로 표시된다. 이렇게 하는 것이 보기에도 더 좋고 사용자가 이용하기에도 편리하기 때문이다. * 이번에는 게시판의 페이징 기능을 구현해 보자. 먼저 글 목록에 페이징 기능이 어떻게 구현되는지 그 원리부터 살펴보자. * 다음 그림은 게시판에 페이징 기능을 적용한 후 글 목록을 표시한 것이다. * 여기서 하단에 보이는 숫자는 페이지 번호이다. 한 페이지마다 10개의 글이 표시되고, 이 페이지 10개가 모여 한 개의 섹션(section)이 된다. 첫 번째 섹션은 첫 번째 페이지부터 열 번째 ..
(6) 답글 쓰기 기능 구현 * 지금까지 게시판에서 글 목록을 보고, 새 글을 쓰고, 글 상세를 보고, 수정 및 삭제하는 기능까지 구현해 보았다. 얼추 게시판의 기능을 모두 갖춘 것 같다. 하지만 아직 빠진 것이 있다. 보통 쇼핑몰 게시판을 보면 댓글, 즉 답글을 쓸 수 있는 기능이 있다. * 따라서 이번에는 게시판의 답글 쓰는 기능을 구현해 보자. 다음은 그 과정이다. (1) 글 상세창(viewArticle.jsp)에서 답글쓰기를 클릭하면 요청명을 /board/replyForm.do로 하여 부모 글 번호(parentNO)를 컨트롤러로 전송한다. (2) 답글 쓰기창(replyForm.jsp)에서 답변 글을 작성한 후 요청명을 /board/addReply.do로 하여 컨트롤러로 요청한다. (3) 컨트롤러에..
(5) 글 삭제 기능 구현 * 이제 게시판의 글을 삭제하는 과정을 구현할 차례이다. 글을 삭제할 때는 테이블의 글뿐만 아니라 그 글의 자식 글과 이미지 파일도 함께 삭제해야 한다. * 글 삭제 과정은 다음과 같다. (1) 글 상세창(viewArticle.jsp)에서 삭제하기를 클릭하면 /board/removeArticle.do로 요청한다. (2) 컨트롤러에서는 글 상세창에서 전달받은 글 번호에 대한 글과 이에 관련된 자식 글들을 삭제한다. (3) 삭제된 글에 대한 이미지 파일 저장 폴더도 삭제한다. 다음 코드는 오라클의 계층형 SQL문을 이용해 부모 글에 대한 자식 글을 삭제하는 SQL문이다. DELETE FROM t_board WHERE articleNO IN ( SELECT articleNO FROM..
(4) 글 수정 기능 구현 * 이번에는 기존에 작성한 글을 수정하는 기능을 구현해 보자. * 글 수정 기능을 구현하는 과정은 다음과 같다. (1) 글 상세창(viewArticle.jsp)에서 '수정하기'를 클릭해 글 정보를 표시하는 입력창들을 활성화한다. (2) 글 정보와 이미지를 수정한 후 '수정반영하기'를 클릭해 컨트롤러에 /board/modArticle.do로 요청한다. (3) 컨트롤러는 요청에 대해 upload() 메서드를 이용하여 수정된 데이터를 Map에 저장하고 반환한다. (4) 컨트롤러는 수정된 데이터를 테이블에 반영한 후 temp 폴더에 업로드된 수정 이미지를 글 번호 폴더로 이동한다. (5) 마지막으로 글 번호 폴더에 있던 원래 이미지 파일을 삭제한다. 1. sec03.brd05 패키지를..
(3) 글 상세 기능 구현 * 글 목록에서 글 제목을 클릭했을 때 글의 상세 내용을 보여주는 기능을 구현해 보자. * 다음은 글 상세 기능을 구현하는 과정이다 (1) 글 목록창에서 글 제목을 클릭해 컨트롤러에 /board/viewArticle.do?articleNO=글번호 로 요청한다. (2) 컨트롤러는 전송된 글 번호로 글 정보를 조회하며 글 상세창(viewArticle.jsp)으로 포워딩한다. (3) 글 상세창(viewArticle.jsp)에 글 정보와 이미지 파일이 표시된다. 1. 글 상세 기능에 관련된 자바 코드와 JSP 파일을 다음과 같이 추가한다. 글 상세 기능을 구현하는 데 필요한 첨부 이미지를 표시하기 위해 sec03.common 패키지를 만든 후 FileDownloadController ..