액션태그 액션태그는 하나의 jsp 페이지에서 다른 jsp 페이지로 요청 처리를 전달할 때 사용됩니다. 와 include 디렉티브와는 다음과 같은 차이점이 있습니다. ● 를 통해 요청 처리를 전달받은 페이지가 응답 결과를 웹 브라우저에게 요청을 합니다. ● 요청 처리를 전달받은 페이지는 요청 전달을 했던 페이지의 기본 객체를 그대로 사용합니다. 액션 태그는 간결하고 구조적인 프로그래밍을 위해 사용이 되며 다양한 조건에 따른 처리를 해야 하는 경우 액션 태그를 사용하여 각 조건을 처리하는 jsp를 분리하여 기능별로 모듈화가 가능합니다. 액션 태그의 기본 문법은 다음과 같습니다. 실제 조건에 따라서 처리를 할 수 있는 jsp 페이지를 모듈화하고 조건에 따라 를 통해 요청 처리를 전달해보는 예제를 살펴보겠습니다..
추상 메서드와 추상클래스(Abstract Class) 추상 메서드는 선언부는 있지만 구현부가 없는 메서드를 의미합니다. 상위 클래스의 참조 객체 변수를 통해 하위 클래스에 각각 다른 내용을 적용 시키고 싶을 떄 사용합니다. ● 추상 메서드를 가지는 클래스는 추상 클래스로 선언되어야 한다. ● 추상 클래스를 상속받는 하위 클래스는 반드시 추상 메서드를 구현한다. ● 추상 클래스는 인스턴스(객체)를 생성 할 수 없다. new 사용을 못한다. 간단하게 예제를 통해서 추상 클래스의 필요성을 살펴 보겠습니다. Colored By Color Scripter™ 1 2 3 4 5 6 public abstract class Person { abstract void Introduce(); } Person 추상 클래스입니다..
알고리즘 공부를 하면서 구현 한 소스코드를 깃허브에서 관리하고자 합니다. 깃허브에 새로운 저장소를 생성하고 이클립스에서 생성한 프로젝트를 올리는 내용을 정리하도록 하겠습니다. 1. 깃허브에 새로운 저장소 생성하기 먼저 생성 한 자바 프로젝트의 버전관리를 위한 깃허브에 원격 저장소를 새로 만듭니다. 오른쪽 하단 부분에 New repository를 클릭합니다. 저장소 이름을 입력하고 Public을 체크한 뒤 Create repository를 클릭 합니다. 여기까지 하면 새로운 저장소가 생성 됩니다. 저장소의 url은 자동으로 https://github.com/LKTProtgrammer/저장소이름으로 지정이 됩니다. 2. 이클립스 프로젝트 생성 및 PUSH 이제 로컬 저장소로 사용 할 자바 프로젝트를 생성 해..
다형성 객체 지향 언어에서 다형성이란 하나의 클래스나 메서드가 다양한 방식으로 동작이 가능 한 것을 의미합니다. 이러하 다형성에는 오버로딩과 오버라이딩이 존재합니다. 오버라이딩 오버라이딩이란 상위 클래스를 상속받는 하위 클래스가 상위 클래스의 메서드를 사용하지 않고 하위 클래스에서 재정의하여 사용하는 것을 의미합니다. 보통 재사용의 의미로 하위 클래스에서 상위 클래스의 내용을 사용하는 게 일반적이지만 필요에 따라서 하위 클래스에서 상위 클래스의 메서드 내용을 재정의 하여 사용하는 것을 의미합니다. 아래는 간단한 오버라이딩의 예를 보여줍니다. Colored By Color Scripter™ 1 2 3 4 5 6 7 8 9 public class B { public void show() { System.ou..
액션 태그 보통 하나의 웹 사이트를 구성하는 페이지들은 동일한 상단, 좌측 메뉴, 하단을 구성 합니다. 그래서 만약 모든 웹 페이지마다 이런 공통 요소들에 대해서 코드를 작성하게 되면 코드 중복이 발생하게 됩니다. 게다가 이러한 공통 요소에 수정 사항이 발새하게되면 모든 페이지마다 수정 사항을 고쳐야 합니다. 이러한 코드 중복을 해결 할 수 있는게 바로 태그입니다. 가 위치하는 곳에 지정한 페이지를 포함 시킬 수 있습니다. 사용법은 다음과 같습니다. [ ] page 속성에는 포함할 페이지의 경로가 오게 되고 flush는 지정한 페이지를 실행 하기 전에 버퍼의 내용을 플러시할지 여부를 지정하는 것 입니다. 태그를 통해서는 지정한 페이지에 파라미터 값을 넘겨 줄 수 있습 니다. name 속성은 고유의 이름으..
상속 객체 지향 언어에서 상속이란 상위 클래스에 존재하는 멤버를 하위 클래스로 그대로 물려 받는 것을 의미합니다. 물려 받는다는 개념보다는 재사용 + 확장의 의미로 생각하는게 더 편할 수 있습니다. 상속은 다음과 같은 특징을 가집니다. ●하위 클래스에서 상위 클래스를 상속받고자 한다면 클래스 정의 후 extends 사용 ●하위 클래스는 여러 개의 상위 클래스를 상속 받을 수 없음 (다중 상속 허용 X) ●하위 클래스는 상위 클래스의 내용을 재사용이 가능하고 내용을 확장 시킬 수있음 ●상위 클래스는 여러개의 하위 클래스를 가질 수 있음 ●상위 클래스와 하위 클래스에 같은 이름의 멤버 변수나 메서드가 존재 할 경우 상위 클래스의 내용은 감춰 짐 실제 예제를 통해서 구체적으로 살펴 보겠습니다. 예제 코드 1 ..
UPDATE Update문을 실행하여 테이블에 존재하는 레코드의 내용을 변경해 보겠습니다. 현재 테이블에 데이터가 들어 간 상태입니다. ID가 git인 3번 째 레코드의 닉네임을 'git닉네임'으로 변경 해보겠습니다. 먼저 변경 페이지 요청을 위한 updateform.jsp를 작성해 보겠습니다. 123456789101112131415161718192021222324252627닉네임을 바꾸는 Form ID 바꿀 닉네임 : Colored by Color Scriptercs 메서드 방식은 post 방식을 사용하면서 update.jsp에 처리 요청을 합니다. 쿼리 전성 버튼을 클릭합니다. 실제 쿼리문을 실행하여 처리하는 페이지인 update.jsp를 살펴 보겠습니다. 123456789101112131415161..
Template Method Pattern 상위 클래스에서 처리의 흐름을 제어하며, 하위 클래스에서 처리의 내용을 구체화한다.여러 클래스에 공통되는 사항은 상위의 추상 클래스에서 구현하고, 공통 되지 않는 부분에 대한 상세 구현은 하위 클래스에서 구현한다. 예제 햄버거를 만드는 클래스를 설계 해보겠습니다. 햄버거 종류에는 치즈버거와 불고기버거가 있을 수 있습니다. 1. 빵을 올린다. 2. 패티를 올린다. 3. 양상추를 올린다. 4. 빵을 올린다. 1. 빵을 올린다. 2. 패티를 올린다. 3. 치즈를 올린다. 4. 빵을 올린다. 각 버거는 위에 나온 순서대로 만들어 집니다. 1, 2, 3번 같은 경우는 중복되는 내용입니다. 즉 1, 2, 3 번의 경우 상위 추상 메서드로 올려주고 3번 같은 경우에는 상위에..
추상화와 메모리 이번에는 추상화를 통한 클래스 모델링을 하고 클래스의 인스턴스가 생기는 과정에 대해 메모리에는 어떤 식으로 할당이 되는지에 대해서 알아 보겠습니다. '새'라는 클래스를 모델링 해보겠습니다. 추상화를 통해 내가 관심 있는 역역에 대해서만 '속성'과 '기능'을 가져와 보겠습니다. Bird Class 속성 - 이름, 날개의 개수 기능 - 날다 실제 코드로 정의하게 되면 다음과 같습니다. 1 2 3 4 5 6 7 8 9 10 11 12 public class Bird { public String name; public int countofwing; public void fly() { System.out.println("날다"); } } 실제 테스트를 위한 main을 포함하는 클래스도 구현 하겠습..
Singleton 패턴 디자인 패턴에서 싱글톤 패턴은 특정 클래스에 대해 new 연산자로 생성되는 인스턴스를 Stack 메모리에 한 번만 할당하여 이후에 new 연산자를 통한 객체 생성 요구에 대해서는 최초에 생성되었던 객체를 반환하는 디자인 패턴입니다. 즉 프로그램의 특정 클래스에 대한 유일 객체를 보장하는 패턴이라고 볼 수 있습니다. 일반적으로 앱에서 공통적으로 사용하는 데이터 클래스에 대해서 이와 같은 싱글톤 패턴 형식으로 작성하게 됩니다. 객체 생성을 위한 new 연산자는 해당 클래스의 인스턴스를 stack 메모리에 저장하게 되는데 싱글톤 패턴이 적용된 경우에는 new 사용을 통한 무분별한 인스턴스 생성을 막기 때문에 메모리 낭비를 방지할 수 있습니다. singleton.class 1 2 3 4 ..
추상화 추상화란 구체적인 것을 분해해서 관찰자가 관심 있는 특성만 가지고 재조합 하는 것으로 객체 모델링 이라고 합니다. 이 말을 이해하려면 일단 클래스와 객체의 의미를 명확하게 정의해 보겠습니다. ● 객체는 유일무이한 사물로써 속성과 기능을 가짐 ● 클래스는 같은 특성을 지닌 여러 객체를 총칭하는 집합의 개념 김연아, 원빈은 어떠한 속성과 기능을 가지는 객체에 해당이 되고 김연아, 원빈을 총칭하는 개념으로 '사람'이라는 클래스라고 볼 수 있습니다. 다시 모델링이라는 개념을 보도록 하겠습니다. 모델링을 한다는 것은 보통 클래스를 설계를 한다는 것과 같은 의미입니다. 예를 들어 '사람'이라는 클래스를 설계한다고 가정해보겠습니다. 사람의 속성 : 키,몸무게,성별,머리길이,다리길이 ...... 사람의 기능 :..
Table 생성 MySQL Workbench를 실행 해줍니다. 먼저 database를 생성합니다. -Create database [database 이름] 쿼리 실행은 상단의 번개 표시를 클릭하면 됩니다. 다음으로 데이터베이스를 생성 하였다면 사용 할 데이터베이스를 지정 해야 합니다. -use [database 이름] 조금 전에 만들었던 데이터베이스를 사용 데이터베이스로 지정합니다. 데이터베이스가 생성 되었으니 이제 user database 안에 table을 만들어 줄 차례입니다. - create table [table 이름] (colum1 이름 colum1 type 제약조건, ...... ) VARCHAR Type의 Colum 5개를 가지는 Member Table이 생성이 됩니다. ● NOT NULL -..
저번 게시글에서는 다른 사람의 저장소를 Fork 해오면서 동시에 로컬 저장소를 생성 하는 것을 정리 하였습니다. 오늘은 이어서 다음 내용을 정리합니다. 1. 로컬 Master로부터 Branch 생성하기 2. ReadMe 수정 ( 변경 이력 발생) 3. 변경 사항 Commit 하기 및 Master와 Merge하기 4. 원격 저장소에 Push 브런치 (Branch) 생성하기 일반적으로 저장소가 생성이 되면 Master Branch가 생성이 됩니다. Master Branch로 부터 새 Branch를 생성하는 git 명령어는 다음과 같습니다. git branch 현재 상태를 그림으로 보면 다음과 같다. 현재 Branch를 생성만 한 단계입니다. Head는 Master Branch에 있는 상태입니다. (Head란..
이클립스 프로젝트 생성 이제 이클립스에서 JSP 웹 프로그래밍 작업 환경을 구축합니다. 본 게시글은 tomcat이 설치가 되어있다고 가정을 하고 진행 하겠습니다. 이클립스를 실행하고 작업공간을 지정 한 뒤 File -> New -> Dynamic Web Project 클릭하고 프로젝트를 하나 생성합니다. 서버 실행 환경 추가하기 먼저 개발과정에서 사용 할 서버를 설정합니다. [Window] -> [Preferences] 항목을 선택하면 설정창이 뜹니다. 왼쪽 트리 메뉴에서 [Server] -> [Runtime Environments]를 클릭하면 서버 실행 환경을 추가/삭제 할 수 있는 설정 창이 보이게 됩니다. Add.. 클릭해주세요. 설치 되어 있는 tomcat 버전에 맞는 항목을 클릭하고 Finish..
Fork 하기 다른 사람의 저장소에 있는 내용을 내 저장소로 가져와 보도록 하겠습니다. 예제를 위해 bongbongco/bongbongco.github.io의 저장소를 가져오도록 하겠습니다. 가져오고자 하는 저장소의 우측 상단에 fork 버튼을 클릭합니다. 자신의 계정을 클릭하게 되면 다음과 같이 fork 해온 새로운 저장소가 생깁니다. 현재는 다른 사람의 저장소를 내 원격 저장소를 가져오기만 한 상태입니다. 아래 그림과 같습니다. 이제 로컬 저장소도 생성해보겠습니다. git clone 을 통해서 저장소를 복사해옵니다. 이제 bongbongco/bongbongco.github.io 저장소를 내 로컬 저장소로 가져오기가 완료 되었습니다. 다음에는 로컬 저장소의 내용의 일부를 변경하고 변경사항을 Commit..