본문 바로가기

개발

ApplicationContext란? 웹에 독립적인 애플리케이션의 모든 영역(dao, service, manager, 기타 등등) 에 대한 정의를 말한다. 더보기
iBATIS iBATIS의 개념 iBATIS는 간단한 XML서술자를 사용해서 간단하게 자바 빈즈를 SQL statement에 맵핑시킨다. 간단함(Simplicity)이란 다른 프레임워크와 객체관계맵핑툴에 비해 iBATIS의 가장 큰 장점이다. iBATIS Data Mapper를 사용하기 위해서 당신은 자바빈즈와 XML 그리고 SQL에 친숙할 필요가 있다. 여기엔 배워야 할것도 거의 없고 테이블을 조인하거나 복잡한 쿼리문을 수행하기 위해 필요한 복잡한 스키마도 없다. Data Mapper를 사용하면 당신은 실제 SQL문의 모든 기능을 가질수 있다. JDBC 로만 프로그래밍 할 때의 번거로움을 줄여주기 위해 재사용 모듈로 개발된 것인데 그 주요한 어려움을 ibatis 개발자 가이드에서 다음과 같이 정리하고 있다. iBA.. 더보기
BeerAdvisor DD(web.xml) 설정 web.xml에서 Mapping 설정 Ch3 Beer com.example.web.BeerSelect Ch3 Beer /SelectBeer.do Mapping 설정 순서 사용자는 form 화면에서 색깔을 선택하고, 제출(Summit) 버튼을 선택하면 Browser는 /Beer-vl/SelectBeer.do 와 같은 URL을 생성한다. Container는 DD의 항목에서 /SelectBeer.do라는 값을 가진 을 찾는다. 여기서 /는 Context Root를 의미하며, SelectBeer.do는 자원의 논리적인 이름이다. Container는 DD에서 과 쌍을 이루는 의 값 Ch3 Beer를 기억해두고 Container는 내부 Servlet명과 여기에 일치하는 항목을 Mapping 한다. Container.. 더보기
BeerAdvisor 제일 첫 화면 HTML 첫 화면의 form.html Beer Selection Page Select beer characteristics Color: light amber brown dark - action에서 요청하는 SelectBeer.do 는 실제 파일명이 아닌 논리적인 이름이다. - 실제로는 배포 서술자에 Container가 사용하는 실제 Servlet Class File에 Mapping 되어 있다. - .do 확장자는 논리적인 이름의 일부며 실제 File의 확장자나 Type이 아니다. 더보기
BeerAdvisor Application Architecture Chapter3의 BeerAdvisor의 MVC Architecture에 대한 설명 1 – Client가 form.html을 요청한다. 2 – 요청을 받은 Container가 form.html을 File System에서 읽어 온다. 3 – form.html을 Browser로 넘겨 주며 화면을 보고 사용자가 맥주 색깔과 관련된 질문에 자신의 취향을 입력한다. 4 – 사용자가 선택한 정도를 Container로 보낸다. 5 – Container는 URL을 분석하여 담당 Servlet을 찾아 요청을 넘긴다. 6 – Servlet은 BeerExpert Class를 호출한다. 7 – BeerExpert Class는 맥주에 대한 조언을 Servlet에 넘겨주며 Servlet는 이 정보를 Request 객체에 저장한다.. 더보기
J2EE(Java 2 Enterprise Edition)에 들어 있는 것 J2EE는 Spec들에 대한 Spec, Super Spec이라고 할 수 있다. J2EE는 Servlet Spec 2.4와 JSP 2.0 Spec과 같은 Spec들을 포함하고 있습니다. Servlet Spec과 JSP Spec은 둘 다 Web Container를 위한 것이다. J2EE 1.4 Spec에는 EJB 2.1(Enterprise JavaBean) Spec도 들어 있으며, 이 Spec은 EJB Container에 사용한다. Web Container는 Web Component(Servlet, JSP)를 위한 것이고, EJB Container는 Business Component용이다. J2EE에 완벽하게 부합되는 J2EE Application Server는 Web Container와 EJB Contai.. 더보기
Servlet, JSP 환경에서 MVC Controller(컨트롤러) Request 객체에서 사용자가 입력한 정보를 뽑아내어, Model에 대하여 어떤 작업을 해야 하는지 알아낸다. Model 정보를 수정한다든지, View(JSP)에게 넘겨줄 새로운 Model을 만든다든지 등과 같은 작업. View(뷰) Presentaion에 대한 책임을 진다. View는 Controller로부터 Model 정보를 읽어온다. (직, 간접적인 방법 둘 다 가능하며, View가 찾을 수 있는 곳에 Controller가 갖다 두는 방식을 많이 사용한다.) View는 사용자가 입력한 정보를 Controller에게 넘겨 주기도 해야 한다. Model(모델) Business Logic이 들어간다. Model 정보(state)를 읽어오거나(getter) 수정하는(sett.. 더보기
배포 서술자(DD, Deployment Descriptor) 배포 서술자(DD, Deployment Descriptor) 배포 서술자는 Web에서 요청 받은 해당 Servlet의 URL주소를 통해 Servlet 이름을 확인, 해당 Servlet Class를 호출하기 위한 Mapping 정보를 기록하는 역할을 한다. Mapiing 정보 기록 이외에도 할 수 있는 일 - 보안 역할 설정, 오류 페이지 설정, 항목 library, 초기화 구성 및 관련 정보 구성 등등 Server가 J2EE의 모든 규격을 구현한 Server라면 EJB 선언 및 접근에 관련된 내용도 설정 할 수 있다. DD의 이점 이미 Test된 Source Code에 대한 수정을 최소화 한다. Source Code가 없더라도, Application을 목적에 맞게 수정할 수 있다. Code 변경이나 Co.. 더보기
배포 서술자에서 URL Mapping을 위한 두 가지 항목 내부에서만 사용하는 이름과 완전한(Package 이름까지 포함하여) Class명과 서로 Mapping한다. 내부에서 사용하는 이름과 URL 이름을 서로 Mapping한다. C2-82 더보기
하나의 Servlet은 세 개의 이름을 가진다. Client가 아는 URL 이름 Client는 HTML 안에 존재하는 Servlet 이름만 알고 있으면 된다. Server 상의 실제 어느 Directory에 어떤 Filename으로 존재하는지는 관심 없다. URL 이름은 Client를 위한 것 이다. 배포자가 만든 내부적인 이름 배포자는 실제 Application 운영을 위하여 배포명이란 것을 만들어 개발자에게 알려준다. 배포명도 URL 이름과 같이 가공의 이름이라고 말할 수 있다. 이 이름은 URL 이름과 같을 필요가 없다. 실제 Servlet File 위치 이름과 일치하지 않아도 된다. 실제 파일명 개발자가 만든 Servlet Class 안에는 Class명과 Package명이 들어 있다. Servlet Class 파일도 File System 상의 .. 더보기
Container(컨테이너) Container Servlet을 실행하고 관리하는 역할을 한다. Web Server는 사용자로부터 Servlet을 요청 받으면 바로 호출 되는 것이 아니라, Container에게 요청이 넘어간다. Container는 요청을 넘겨 받아 HTTP Request와 HTTP Response 객체를 만들어, 이를 인자로 Servlet doPost()나 doGet() method 중 하나를 호출한다 C2-73 Container가 주는 혜택 통신(Communication) 지원 Container는 Servlet과 Web Server가 서로 통신할 수 있는 손쉬운 방법을 제공한다. Server와 대화하기 위하여 개발자가 직접 해야 하는 복잡한 일련의 일을 할 필요가 없다. Container는 어떻게 Web Serve.. 더보기
CGI 프로그램 웹 서버 혼자서 할 수 없는 일들 도와주는 애플리케이션을 CGI 프로그램이라고 부른다. 대부분의 CGI 프로그램은 펄(Peal) 스크립트로 작성한다. 펄 스크립트 이외에도 C, 파이썬(Python), PHP 같은 언어도 있다. CGI의 약자는 Common Gateway Interface이다. CGI 프로그램을 가지고 현재 시간(서버 시간)을 클라이언트에게 제공하는 순서 사용자는 정적인 페이지가 아닌 CGI 프로그램에 대한 URL을 클릭한다. 웹 서버는 들어온 요청이 CGI 프로그램을 호출하는 것임을 확인 후, 해당 프로그램을 실행하고 GET 또는 POST로 넘어온 파라미터를 넘겨준다. CGI 프로그램은 현재 시간이 들어간 페이지를 만들어 서버에 HTML 형식으로 넘겨주며 이 시점에선 웹 서버가 CGI 프.. 더보기
웹 서버 혼자서 할 수 없는 두 가지 1. 동적인 컨텐츠 생성 웹 서버는 정적인 페이지만 제공한다. 애플리케이션 웹 서버와 협력해서 동적인 페이지를 제공할 수 있다. 2. 서버 상에 데이터 저장하기 웹 서버는 파라미터를 애플리케이션에 전달하여 저장한다. C1-60 더보기
URL(Uniform Resource Locators) 웹 상에 있는 모든 자원 자신만의 고유한 이름을 가지는데 이 고유한 이름을 부여하는 방식 C1-54 더보기
MIME 타입 HTTP 응답의 몸체의 대한 컨텐츠 타입을 말한다. C1-51 더보기
POST 메소드 용량에 제한이 있긴 하지만 GET 방식에 비해 매우 용량이 크다. URL이 아닌 HTTP의 헤더 정보다음에 오는 몸체에 데이터를 넣어서 전송한다. 즐겨찾기 추가를 하더라도 값이 같이 저장되지는 않는다. 메소드 종류, 웹 서버 상 자원에 대한 경로, 브라우저가 요청한 프로토콜 버전, 요청 헤더, 메시지 몸체(파라미터) 순으로 전달한다. 더보기
GET 메소드 GET으로 보낼 수 있는 글자 수는 제한이 있다. GET의 데이터 전송방식은 브라우저 주소란에 기입하는 URL 뒤에 붙이는 식 화면에 보이게 된다. 즐겨찾기 추가가 가능하다. 메소드 종류, 웹 서버 상 자원에 대한 경로, 파라미터, 브라우저가 요청한 프로토콜 버전, 요청 헤더 순으로 전달한다. C1-48 더보기
HTTP 프로토콜 HTTP는 TCP/IP 위에서 돌아간다. TCP는 한쪽 노드에서 다른 쪽 노드로 파일을 보내는 것. IP는 한 호스트에서 목적지 호스트까지 패킷을 옮기고 이동하기 위한 베이스 프로토콜 HTTP는 이와 별개로, 웹에서만 사용하는 프로토콜 HTTPS 라는 암호화 된 프로토콜도 존재함 C1-44 더보기
클라이언트와 서버는 HTML과 HTTP를 어떻게 다룰지 안다. HTML(Hyper Text Markup Language) 클라이언트로 요청을 받고 나면, 서버는 브라우저에게 컨텐츠 타입이 무엇인지 알려준다. 브라우저는 이 내용에 기초하여 이를 어떻게 화면에 출력할지 준비힌다. 서버는 HTML을 전달한다. 모든 웹 브라우저는 HTML을 이해한다. 구형 웹 브라우저는 최신 문법의 HTML을 못 알아 먹기도 한다. HTML 4.01 레퍼런스 : http://www.w3schools.com/tags/default.asp HTTP(HyperText Transfer Protocol) 웹 상에서 일어나는 클라이언트와 서버간의 대화는 HTTP라는 프로토콜로 이루어 진다. HTTP 프로토콜은 요청과 응답으로 이루어진 아주 단순한 구조이다. 클라이언트가 HTTP로 요청을 보내면, 서.. 더보기
클라이언트의 역할 클라이언트란 일반적으로 웹 브라우저 응용프로그램을 뜻한다. 브라우저의 종류에는 넷스케이프, 파이어폭스, 사파리, 익스플로러, 오페라, 크롬 등등 여러 웹 브라우져가 있다. 브라우저의 주된 역할은 HTML 코드를 읽어서(파싱) 화면에 보이게 한다. C1-39 더보기
웹 서버의 역할 웹 서버는 클라이언트로 요청 받아 요청한 것을 넘겨주는 일을 한다. 요청한 것이 서버에 없거나 있다 해도 주소가 틀린 곳에 있어 서버가 찾지 못한다면 오류 메시지를 표시한다. C1-38 더보기
웹 애플리케이션 웹 애플리케이션은 브라우저만 있다면 누구든 실행할 수 있다. GUI 애플리케이션은 환경의 따른(OS 등등) 배포의 문제가 있다. 좀 더 강력한 웹 애플리케이션을 위하여 자바를 이용한 서블릿이나 JSP를 사용한다. C1-35 더보기
javax.servlet.servletrequest 클라이언트의 Request에 대한 정보를 서블릿에 제공하는 오브젝트를 정의한다. getAsyncContext() getAttribute(java.lang.String name) 지정된 속성의 값을 Object 로서 얻는다. 정된 이름의 속성이 존재하지 않는 경우는,null을 얻는다. getAttributeNames() 이 Request로 이용할 수 있는 속성의 이름이 포함된 목록을 얻는다. 돌려줍니다. 이용할 수 있는 속성이 Request에 없는 경우는 빈 내용을 얻는다. getCharacterEncoding 이 Request의 본체로 사용되는 문자 인코딩의 이름을 얻는다. Request가 문자 인코딩을 지정하고 있지 않는 경우, 이 메소드는 null을 얻는다. getContentLength() Requ.. 더보기
Apache Tomcat 6.0 라이브러리 * annotations-api.jar (Annotations package) * catalina.jar (Tomcat Catalina implementation) * catalina-ant.jar (Tomcat Catalina Ant tasks) * catalina-ha.jar (High availability package) * catalina-tribes.jar (Group communication) * el-api.jar (EL 2.1 API) * jasper.jar (Jasper 2 Compiler and Runtime) * jasper-el.jar (Jasper 2 EL implementation) * jasper-jdt.jar (Eclipse JDT 3.3 Java compiler) * js.. 더보기
MVC 출처 : http://www.DefineJava.net MVC 패턴 Model, View, Controller 1. Model MVC 패턴중 MODEL 영역은 비즈니스 로직을 구현하는 부분이다. 대부분의 Application의 데이터는 데이터베이스에 의해 관리되고 Java에서는 JDBC API를 이용하여 접근하고 사용한다. JDBC API를 이용하여 쿼리문을 날려 그 결과를 전달받는 형태의 모델이 가장 기본적이고 가장 많이 사용되고 있다. Model이란 실질적으로 일을 처리하고 그 데이터를 가공하는 역활을 하는 영역을 뜻한다. 데이터 베이스 접근, 데이터 추가, 데이터 수정, 데이터 삭제 등 사용자가 어떠한 일을 처리하는것을 뜻한다. 2. View 뷰 영역은 개발자 보다는 디자이너와 밀접한 연관이있다. .. 더보기
Oracle DB Data Type CHAR(n) 최대 크기: 2000 byte 타입: 문자열 고정 길이 데이터. 입력되지 않은 남은 부분은 공백으로 채워져 저장된다. NCHAR(n) 최대 크기: 2000 byte 타입: 문자열 고정 길이 데이터. 다국적 언어를 지원한다. VARCHAR2(n) 최대 크기: 4000 byte 타입: 문자열 가변 길이 데이터. 일부만 입력 시 뒷부분은 NULL. 입력한 값의 뒷부분에 있는 BLANK도 같이 입력. 전혀 값을 주지 않으면 NULL 상태 입력. 지정된 길이보다 길면 입력 시 에러 발생. NVARCHAR2(n) 최대 크기: 4000 byte 타입: 문자열 가변 길이 데이터. LONG 최대 크기: 2 Gb 타입: 문자열 가변 길이 데이터. 하나의 테이블에 하나의 LONG 타입만 사용 가능. (NOT).. 더보기
Object.equals()와 String.equals()의 차이점 String.equals()는 메모리 주소에 상관없이 값이 같다면 true를 리턴 해준다. 하지만 Object.equals() 메모리 주소도 동일 해야지 true를 리턴 해준다. String의 경우는 메모리 주소에 상관없이 값이 같다고 나와있지만 처음에 변수가 값을 받을 때 동일한 값이면 같은 메모리 주소에 존재하는 값을 불러 오는 것으로 알고 있다. 더보기
클래스, 인스턴스, 객체 클래스(Class): 클래스란 어떤 특정 종류의 모든 객체들에 대해 일반적으로 적용할 수 있는 변수와 메소드를 정의하고 있는 소프트웨어적인 설계도(blueprint) 또는 프로토타입(prototype)이라 할 수 있습니다. 예를 들어, 실세계에 존재하는 자동차들인 아반떼, 누비라, 그랜저, 티코, 아토스, 봉고, 또는 버스 등의 자동차들이 가질 수 있는 상태 정보와 행동에 대하여 일반화시켜 정의해 놓은 것이 자동차 클래스가 될 수 있습니다. 다시 말해서, 실세계에 존재하는 객체들이 가질 수 있는 상태와 행동들에 대해 소프트웨어적으로 추상화(abstraction) 해 놓은 것이 클래스라는 것입니다. 이러한 클래스를 청사진이라 표현하기도 하고, 벽돌을 찍기 위한 하나의 틀로써 비유되기도 합니다. 인스턴스(I.. 더보기
Integer.parseInt() String을 int로 형변환 할때 사용한다. API(Integer class 에서 parseInt를 검색) ex) int first = Integer.parseInt(args[0]); 더보기
new 생성자 instance 를 만들때 사용하는 연산자로 아래와 같이 사용한다. Dog myDog = new Dog(); 첫 번째 Dog myDog = new Dog(); JVM에 인스턴스 변수를 위한 공간을 할당하도록 지시한다. 인스턴스 변수의 유형은 한번 정해지면 바뀌지 않는다. 두 번째 Dog MyDog = new Dog(); 객체를 만든다. JVM에 가비지 컬렉션 기능이 있는 힙에 새로운 Dog 객체를 위한 공간을 할당하도록 지시한다. 세번째 Dog MyDog = new Dog(); 객체와 인스턴스를 연결한다. 새로 만들어진 Dog 객체를 MyDog라는 인스턴스 변수에 대입한다. 더보기