jsp/Servlet 기본2
@ client 에서 HTTP 프로토콜에 따라서 값을 보내는 방식
-두가지 방식이 있다.
1)GET : Request-URI에 붙여서 보내는 방식 : => 파라미터명=값&파라미터명=값
-> get방식의 단점: binary Data 전송불가!!
-> Request_URL를 저장 할때 Data도 동시에 저장할 수 있어서 반복적인 요청이 가능.
GET/study/Calculator?op=plus&a=1&b=12 HTTP/1.1
헤더이름: 값
......
......
2)POST : Message body 에 보내는 방식
-> Binary Data 전송 가능!!
-> 전송하는 Data가 사용자에게 보이지 않는다. 즐겨찾기에 Data 저장은 안됨. 어느정도 보안이 가능
POST/study/Calculator HTTP/1.1
헤더이름 : 값
....
....
op=plus&a=1&b=12
@ URI(Uniform Resource Identifier) -> 인터넷 상에서 자원을 구분하는 식별자
1) URL(Uniform Resource Locator) http://.../.../
2) URN(Uniform Resource Name) :: ... :: ... ::
@ concrete method vs abstract method
- concrete method : 구현된 메소드
예)
public int plus(int a, int b){
return a+b;
}
- abstract method : 구현되지 않는 메소드
=> 메소드의 구현을 자식 클래스에 맡긴다.
=> 메소드의 동작이 상황에 따라 바뀔수 있을때, 해당 메소드를 abstract 메소드로 만든다.
예)
public abstract int plus(int a, int b);
@HTTPServlet & GenericServlet
-GenericServlet: GET & POST 를 구분하지 못함. Servlet interface의 5개의 메소드중에 4개를 구현함
-HTTPServlet : Service메소드에서 POST방식이냐 GET방식이냐에 따라 doPost , doGet을 호출한다.
@ JSP?
-Servlet 기술에서 출력부분의 프로그래밍을 개선하기 위한 기술.
-출력할 내용은 그냥 작성, 자바코드는 특정 태그안에 작성
-이렇게 작성된 JSP파일은 실행시 Java 소스코드로 변환되고 컴파일 되어서 Servlet으로서 실행된다.
@ JSP에서 자바코드는 어떻게 작성하나요?
<% 자바코드 %> ---> Scriptlet
=> 태그안의 내용이 자바소스코드로 복사된다.
<%! 필드선언 및 메소드 선언%> ---> Declaration
=> 태그안에 내용이 클래스 선언내에 그대로 복사된다.
_JspService()메소드 안에 들어간다.
<%= 값 %> ---> Expression Element
=> 태그안의 내용이 출력문으로 바뀐다.
예)out.wirte(값);
보통 이곳에 저장된다. C:\Sun\AppServer\domains\domain1\generated\jsp\j2ee-modules\StudyWeb\org\apache\jsp
@ JSP Engine vs Servlet Container
"Jsp Engine"
=> .jsp 파일을 .java 자바 서블릿소스 파일로 변환하고, 컴파일 하는 역할.
"Servlet Container"
=> Servlet클래스를 life-cycle을 관리.
@Presentation Logic
- UI 출력을 담당하는 프로그램 코드
@ Business Logic
- Data를 가지고 원하는 결과가 나오도록 연산을 수행하는 코드
@ Data Access Logic
- Data 의 Persistance(지속성)를 유지하도록 하는 기술
@ Persistance ?
- 컴퓨터를 on/off 한 후에도 Data를 유지되게 하는것.
-방법
1) 직접 File System 에 저장한다.(HDD 에 저장)
2) DBMS를 통해 간접적으로 관리.
< jsp 실습 >
@ Borad 만들기 : Level 1
-Architecture
[JSP] <----> [DBMS]
@ Borad 만들기 : Level 2
-JSP 에서 Business & Data Access Logic 을 분리
-이점:
1) Business @ Data Access Logic 을 재사용 가능
2) 유지 보수가 쉽다.
-Architecture
[JSP] <---> [Business @ Data Access Logic] <---> [DBMS]
@ Borad 만들기 : Level 3
-Business & Data Access Logic을 각각 분리
-이점
1) Persistance 층을 분리 함으로써 DBMS의 종속에서 어느정도 벗어난다.
2) Business 층은 재사용 가능
-Architecture
[JSP] <---> [Business Logic] <---> [Data Access Logic] <---> [DBMS]
@ Borad 만들기 : Level 4 (EJB Programming)
-"Presentation Layer" 과 "Business & Data Access Layer" 다른 컴퓨터로 분산.
-즉, "Business & Data Access Layer" 를 다른 컴퓨터에 분산시킬수 있도록 준비
-Architecture
[JSP] <---> [Business Logic: EJB] <---> [ Data Access Logic : Persistance API] <---> [DBMS]
[Java App.]
@ Borad 만들기 : Level 5 (Web Service Programming)
- Business Layer 를 다른 프로그래밍 언어에서 사용할 수 있도록 한다.
-Architecture
[JSP] <---> [Business Layer: Web Service] <---> [Data Access Logic: Persistance API] <---> [DBMS]
[C++ .NET]
[C# .NET]
[VB .NET]
[Java App.]
<Borad 만들기 :Level 1>
@ 테이블 준비 : 데이터를 저장할 틀을 준비
테이블 명: Borad
컬럼목록:
no integer 자동증가 Primary Key 고유번호
caption varchar(200) not null 제목
content text 내용
writer varchar(50) not null 작성자
password varchar(20) not null 암호
count integer default(0) 조회수
regdate date not null 등록일
@ island of Data
- Application 마다 별도로 데이터 관리함으로써 Data 고립되는 문제가 발생
- 즉, application 간 Data가 synchronous 하게 운영하기가 힘들어지는 현상
@ DBMS의 탄생배경?
- 데이터섬(islands of data)으로 동기화 문제 발생.
- Application 개발시 Persistance를 다루는 부분이 매번 중복됨.
==> Data를 전문적으로 관리해주는 시스템이 필요하게 됨.
@ SQL(Structured Query Lanaguage)
- Application 이 DBMS와 소통수단.
- 의사소통수단:
1) Data Definition: 테이블 생성및 제거,스토어드 프로시저 생성및 제거
2) Data Manipulation : insert, update, delete
3) Data Query : Select
등의 작업 DBMS에 작업 요청할때 사용하는 문법
@ JDBC ?
- Java Application 에서 DBMS에 SQL 질의를 전달하고 응답 받을때 사용하는 도구.
- 종류
--Application DBMS 접근 Architecture--
1) Type 1(ODBC_JDBC Bridge)
2) Type 2(native(Vendor) API call)
3) Type 4(DBMS protocol)
@ ODBC(Open DataBase Connectivity) ?
- 특정 DBMS에 종속되지 않고 DBMS와 통신할 수 있도록 정의된 프로그래밍 도구(function)
- DBMS에 접근할때 사용할 도구에 대해 표준화 시킨것
- 단점: Vendor API 에 비해 속도가 느리다.
- 장점: DBMS에 독립적이다.
@ Vender API(Application Programming Interface)?
- DBMS를 제작한 회사에서 프로그래밍할때 사용하라고 제공해준 도구(function)
- 단점: 특정 DBMS에 종속되는 프로그램을 생산.