'JSP/JSP 정리'에 해당되는 글 9건

  1. 2013.01.09 MVC패턴과 모델 1,2 2
  2. 2012.09.26 DB정리!!!
  3. 2012.09.25 JSP 수업.
  4. 2012.08.16 웹 어플리케이션
  5. 2012.08.16 Chpater 1. 웹 프로그래밍 기초.
  6. 2012.08.16 웹 서버란
  7. 2012.08.16 JSP란 무엇인가.
  8. 2012.08.14 스크립트 방식 & 실행 코드 방식
  9. 2012.08.14 서블릿(Servlet)
posted by changhozz 2013. 1. 9. 02:59

MVC 패턴.
- MVC이란 Model, View, Controller의 약자로 정말 많이 들어봤지만, 자세히는 모르던 개념.
정리하고가자.

우선 JSP 기반 웹 어플리케이션의 구조에는 MVC1패턴과 MVC2패턴 구조가 있다.
JSP에서 모든 로직과 출력을 처리하느냐, 
아니면 JSP에서는 출력만 처리하느냐에 따라서 모델 1구조와 모델 2 구조로 구분된다.
우선 모델 1 구조에 대해서 알아보자.

1). 모델 1 구조.

- JSP로 구현한 기존 웹 어플리케이션은 모델 1 구조로 웹 브라우저의 요청을 JSP 페이지가 받아서 처리하는 구조이다.


- JSP 페이지에 비즈니스 로직을 처리하기 위한 코드와 웹 브라우저에 결과를 보여주기 위한 출력 관련 코드가 뒤섞여 있는 구조이다. 즉, 내가 만들었던 허접한 쇼핑몰 hoshop또한 모델 1 구조였던것이다.
즉, HoShop과 같이 웹 브라우저의 요청이 곧바로 JSP에 전달된다.
웹 브라우저의 요청을 받은 JSP는 자바빈이나 서비스 클래스를 사용해서 웹 브라우저가 요청한 작업을
처리하고 그 결과를 클라이언트에 출력해준다.
JSP 페이지에서 웹 브라우저가 요청한 것들을 처리한다는 것은 JSP 페이지에 비즈니스 로직을 처리하기 위한 코드와 웹 브라우저에 결과를 보여줄 출력 관련 코드가 섞인다는 것을 의미한다.
프로그래밍 수업시간에 다뤘던것처럼 하나의 JSP 페이지에서 서비스 클래스를 통해서 원하는 작업을
수행하고 그 결과를 출력하는 경우가 많았는데, 이것이 모델 1 구조의 전형적인 예이다.

- 이러한 구조는 JSP 페이지 안에서 모든 정보를 표현(View)하고 저장(Model)하고 처리(Control)되므로 재사용이 힘들고, 읽기도 힘들어 가독성이 떨어진다.

모델 1 구조 정리

- 정의 : 모든 클라이언트 요청과 응답을 JSP가 담당하는 구조이다.
- 장점 : 단순한 페이지 작성으로 쉽게 구현 가능하다. 중소형 프로젝트에 적합하다.
- 단점 : 웹 애플리케이션이 복잡해지면 유지보수 문제가 발생된다.


그럼 다음으로 모델 2 구조를 살펴보자.

2). 모델 2 구조.

모델 2 구조는 모델 1 구조와 달리 웹 브라우저의 요청을 하나의 서블릿이 받게 된다.
서블릿은 웹 브라우저의 요청을 알맞게 처리한 후 그 결과를 보여줄 JSP 페이지로 포워딩한다.
포워딩을 통해서 요청 흐름을 받은 JSP 페이지는 결과 화면을 클라이언트에 전송한다.
즉, 서블릿이 비즈니스 로직 부분을 처리하게 되는 것 이다.
모델 2 구조의 특징은 웹 브라우저의 모든 요청이 단일 진입점,
즉 하나의 서블릿에서 처리된다는 점이다.
하나의 서블릿이 웹 브라우저의 모든 요청을 받기 때문에,
서블릿은 웹 브라우저의 요청을 구분할 수 있는 방법을 필요로 하며,
서블릿은 웹 브라우저의 요청을 처리한 후 웹 브라우저에 보여줄 JSP를 선택하게 된다.
모델 2 구조의 이러한 특징 때문에 MVC(Model - View - Controller)패턴에 기반을 두어
웹 어플리케이션을 구현할 때는 모델 2 구조를 주로 사용한다. 
현재 우리 GROUPWARE 또한 모델 2 구조를 사용하고 있다.

 

- 모델 1은 컨트롤러가 모델이나 뷰를 포함한 MV 형태를 띄고 있고, 모델 2는 완전한 MVC 형태를 적용하고 있다고 볼 수 있다.

모델 2 구조 정리

-  정의 : 클라이언트의 요청처리와 응답처리, 비즈니스 로직 처리하는 부분을 모듈화시킨 구조이다.
-  장점 : 처리작업의 분리로 인해 유지보수와 확장이 용이하다.
-  단점 : 구조 설계를 위한 시간이 많이 소요되므로 개발 기간이 증가한다.


모델 2 를 설명하면서 MVC패턴이란 무엇인지까지 설명이 되버린것같다.
그래도 다시한번 MVC패턴이란 무엇인가를 알아보자.

 3). MVC 패턴

모델(Model) : 페이지의 이동간에 파라미터나 값들을 넘겨줄때 
이러한 값들을 담은 인스턴스를 의미한다.

뷰(View) : 비즈니스 영역에 대한 프레젠테이션 뷰(즉, 사용자가 보게 될 결과 화면)를 담당한다.

컨트롤러(Controller) : 사용자의 입력 및 흐름 제어를 담당한다.

사용자는 원하는 기능을 처리하기 위한 모든 요청을 단일 컨트롤러에 보낸다.
모델은 비즈니스와 관련된 상태 정보 및 관련 기능을 제공하는데,
컨트롤러는 이 모델을 통해서 사용자의 요청을 처리한다.
모델을 사용하여 알맞은 비즈니스 로직을 수행한 후 컨트롤러는 사용자에게 보여줄 뷰를 선택하며,
선택된 뷰는 사용자에게 알맞은 결과 화면을 보여준다. 
뷰가 사용자에게 결과 화면을 보여줄 때에는 결과 정보가 필요한데,
컨트롤러가 이 정보를 뷰에 전달해 준다.


MVC 패턴의 핵심은 다음과 같다.
-비즈니스 로직을 처리하는 모델과 결과 화면을 보여주는 뷰가 분리되어 있다.
-어플리케이션의 흐름 제어나 사용자의 처리 요청은 컨트롤러에 집중된다.

즉, 모델은 오직 비즈니스와 관련된 부분을 처리하면 될 뿐 사용자에게 보여줄 화면이나 흐름 제어에 
대해서는 처리할 필요가 없다.
반대로 뷰는 사용자에게 알맞은 화면을 보여주는 역할만 수행하면 될 뿐, 비즈니스 로직이나 흐름 제어 등을 신경 쓸 필요가 없다.
이렇게 모델과 뷰가 분리되어 있기 때문에 모델의 내부 로직이 변경된다 하더라도 뷰는 영향을 받지 않으며, 뷰와 모델이 결합되어 있지 않기 때문에 뷰를 어렵지 않게 변경할 수 있다.

또한, 컨트롤러는 사용자의 요청에 대해서 알맞은 모델을 사용하고 사용자에게 보여줄 뷰를 선택하기만 하면 된다. 
만약 컨트롤러나 모델에 상관없이 새로운 뷰를 추가해 주면 된다. 즉
, MVC 패턴을 사용함으로써 유지 보수 작업이 간단해지고 어플리케이션을 쉽게 확장할 수 있게 되는 것이다.

정리를하자면, 모델 2 구조에서 서블릿은 MVC 패턴의 컨트롤러 역할을 한다.

서블릿은 웹 브라우저의 요청과 웹 어플리케이션의 전체적인 흐름을 제어하게 된다.
또한 모델 2 구조에서 JSP는 뷰의 역할을 담당한다. 비즈니스 로직과 관련된 코드가 없는 점을
제외하면 일반 JSP와 거의 동일한 형태를 취한다는 것이다.




'JSP > JSP 정리' 카테고리의 다른 글

DB정리!!!  (0) 2012.09.26
JSP 수업.  (0) 2012.09.25
웹 어플리케이션  (0) 2012.08.16
Chpater 1. 웹 프로그래밍 기초.  (0) 2012.08.16
웹 서버란  (0) 2012.08.16
posted by changhozz 2012. 9. 26. 22:06

cmd에서>mysql -u root -p
root라는 계정으로 들어감. 패스워드설정해놨으므로 -p 입력.
(-u ㅡ> 이것은 계정을 지정한단 뜻.)
이러면 root라는 계정이 지정된 것이다.
여기서 이제 grant 쿼리를 이용하여 계정 추가 및 권한 설정을 한다.
mysql> grant select, insert, update, delete, create, drop on chap12.* to 'jspexam'@'localhost'
identified by 'jspex';

이것은 localhost에서 접속하는 jspexam 계정에 chap12 데이터베이스의 모든 것에 대해
select, insert, update, delete, create, drop 쿼리를 실행할 수 있는 권한을 주며,
이때 암호는 'jspex'를 사용한것이다.

이제 모든 서버에 연결할수있도록 권한을 준다.

mysql> grant select, insert, update, delete, create, drop on chap12.* to 'jspexam'@'%'
identified by 'jspex';
(달라진건 @ 뒤가 %로 바뀐것뿐.)

이제 MySQL 클라이언트인 mysql을 실행해서 chap12 데이터베이스를 사용할 수 있다.
cmd에서>mysql -u jspexam -p chap12

들어온상태에서 테이블 목록을 볼수있다.
mysql> show tables;
(지금은 테이블을 만들지 않았으므로 empty가 뜨게된다.)


---------------------------------------------------------
테이블 생성 쿼리.
create table TABLENAME(
 COL_NAME1   COL_TYPE1(LEN1),
 COL_NAME2   COL_TYPE2(LEN2),
 COL_NAMEn   COL_TYPE3(LENn)
);

TABLENAME : 테이블을 식별할 때 사용할 이름
COL_NAME : 각 칼럼의 이름
COL_TYPE : 각 칼럼에 저장될 값의 타입
LEN : 저장될 값의 최대 길이.

ex)
create table MEMBER(
 MEMBERID   VARCHAR(10),
 PASSWORD   VARCHAR(10),
 NAME       VARCHAR(20),
 EMAIL    VARCHAR(80)
);

주요키 칼럼을 표시할 때에는 칼럼 타입 뒤에 'PRIMARY KEY'라는 문장을 추가하며,
필수 값에 대해서는 'NOT NULL'을 추가한다.
예를 들어, MEMEBERID 칼럼이 주요키이고, PASSWORD,NAME칼럼이 필수 요소라면
ex)
create table MEMBER(
 MEMBERID   VARCHAR(10) NOT NULL PRIMARY KEY,
 PASSWORD   VARCHAR(10) NOT NULL,
 NAME       VARCHAR(20) NOT NULL,
 EMAIL    VARCHAR(80)
);


여기서 테이블이란
-데이터가 저장되는 가상의 장소
-테이블은 1개 이상의 칼럼으로 구성
--각 칼럼은 타입을 가지며, 제양(값의 길이, 가질 수 있는 값 등)을 갖는다.
--이런 테이블의 구성을 스키마(schema)라고 함.

여기서 칼럼이란
-표의 세로 열을 말한다.

여기서 레코드란.
- 하나의 테이블은 여러 개의 레코드로 구성.

여기서 주요키(PRIMARY KEY)란
-각각의 레코드를 구별하기 위해 사용되는 것
-각 레코드가 서로 다른 값을 갖는 칼럼
-주요키 값을 이용해서 빠른 검색 가능.

인덱스란
-지정한 칼럼에 맞춰 데이터의 정렬 순서를 미리 계산
-주요키로 인덱스의 종류
-인덱스로 사용되는 칼럼은 중복된 값을 가질 수도 있음.

이제 테이블을 생성했으면 데이터를 삽입한다.

---데이터 삽입 쿼리----
INSERT 쿼리!!!

사용법,
insert into [테이블이름]([칼럼1], [칼럼2], ..., [칼럼n])
values([값1],[값2],..,[값n])

ex)
mysql> insert into MEMBER (MEMBERID, PASSWORD, NAME) values ('changhozz', '1234',
 '김창호');

이렇게 칼럼 목록을 표시한상태라면 전체 칼럼에 대해서 모두 값을 지정해줄필요가없다.
EMAIL은 지정해주지않았으니 NULL값이 들어가있는 상태다.
만약 EMAIL이 NOT NULL이라고 명시했다면 NULL을 값으로 갖지않고 아예 EMAIL에 값이 없게
되는것이다.

하여튼
칼럼 목록을 표시하지않고 값을 지정해줄때애네는 전체 칼럼에 대해서 값을 지정해주어야한다.

ex)
insert into MEMBER values('changhozz', '1234', '김창호', 'changhozz@nate.com');
이런식으로...

만약 값에 작은따옴표가 있다면 두번 입력해주면된다.

예를 들어 김창호's  라면
김창호''s 이런식으로!!

!!!!*****앞에서 MEMBERID,PASSWORD,NAME을 NOT NULL로 지정해주었기때문에,
값을 무조건 넣어된다. 반면 EMAIL은 NOT NULL을 지정하지 않았기 때문에
값을 안넣어도 상관이없다.
그래서 EMAIL을 제외하고 insert를 해주어 EMAIL값은 NULL이 되버렸다.
그다음 다시 insert를 이용하여 EMAIL에만 값을 넣어주려했는데 안된다...
왜냐면 insert는 말그대로 삽입이다. 이거 하나만 넣을수가없는것이다.
아직 update가 나오지않아 발생한일..

----------------------------------------
데이터 조회 쿼리.  (조회 및 조건)
SELECT 쿼리!!!!
사용법,
select [칼럼1], [칼럼2],..,[칼럼n] from [테이블이름]

ex)
select MEMBERID, NAME from MEMBER;

만약 전체 칼럼을 모두 읽어오려면
ex)select * from MEMBER;

where절!!!!!!!!
조건에 맞는 레코드 검색

select * from MEMBER where NAME='김창호';

이것은,, MEMBER라는 테이블중에서 NAME이 김창호인 데이터만 불러오는것이다.!!

또한 and나 or을 이용하여 다양한 조건 지정이 가능하다.
select * from MEMBER where NAME = '김창호' and EMAIL = 'changhozz@nate.com';
하게되면 MEMBER라는 테이블중에서 NAME이 김창호고 EMAIL이 changhozz@nate.com
데이터만 불러오는것이다.!!!!


같지 않음을 표현할 때에는 '<>'연산자를 사용한다.
예를 들어, EMAIL 칼럼의 값이 공백 ('')이 아닌 레코드를 검색하고 싶다면
다음과 같은 쿼리를 사용하면된다.
사용법,
select * from MEMBER where EMAIL <>'';

또한 칼럼의 값이 NULL 이거나 NULL이 아닌 레코드를 구하고 싶은 경우도 있는데,
이런 경우에는 다음과 같이 NULL과 관련된 전용 쿼리를 사용할 수도 있다.
사용법,
select * from MEMBER where EMAIL is NULL;
select * from MEMBER where EMAIL is NOT NULL;

또한 부등호 기호를 사용할 수도 있다.
예를들어, 숫자 칼럼에서 값의 범위가 1부터 100사이에 있는 레코드를 읽어오고 싶다고 해보자,
이 경우 다음과 같이 '<','>','<=','>=' 등의 연산자를 사용하면 된다.

where SALARY >= 1000 and SALARY <= 2000;

마지막으로 LIKE 조건!!!!!!

LIKE 조건을 사용하면 특정 문장이 포함된 것을 찾을수있다.
예를들어 NAME 값이 '김'으로 시작하는 레코드를 찾고 싶다면 다음과 같이
LIKE 조건을 사용 할 수 있다.
where NAME like '김%';

 

------------------------------------------------------------
데이터 쿼리 조회 - 정렬
ORDER BY 절!!!!!!
사용법,
select .. from [테이블이름] where [조건절] order by [칼럼1] asc, [칼럼2] desc,...

여기서 [칼럼]은 정렬하고 싶은 칼럼의 이름을 나타내며, 칼럼 이름 뒤에 'asc'나
'desc'를 붙일 수 있다. 'asc'를 붙히면 오름차순으로 정렬되며 'desc'를 붙이면
내림차순으로 정렬된다.

ex)
select * from MEMBER order by NAME asc, MEMBERID asc;

위 쿼리는 NAME 칼럼을 기준으로 먼저 오름차순 정렬이되고,
정렬된 상태에서 MEMBERID 칼럼에 대해서 오름차순으로 정렬한다.
이때 주의사항!
일단 NAME 칼럼으로 정렬된 상태가 되면, NAME 칼럼이 같은 값을 갖는 것들에
대해서만 MEMBERID 칼럼으로 정렬이 이루어진다는 점이다.
-------------------------------------------------------------------
데이터 쿼리 조회 - 집합.
집합 관련된 쿼리에는 sum(), max(), min(), count() 등의 함수가 존재한다.
말그대로 sum은 총합, max는 최댓값, min은 최솟값, count는 개수를 구할 때 사용됨.

사용법,
select max(SALARY), min(SALARY), sum(SALARY) from....
 
만약 특정 조건에 해당하는 레코드에 대해서만 집합 관련 함수를 실행하고 싶다면
where 조건문을 붙히면된다.
예를들어, NAME 칼럼의 값이 '김'으로 시작하는 레코드의 개수를 구하고 싶다면
다음과 같은 쿼리를 실행하면 된다.
사용법,
select count(*) from MEMBER where NAME like '김%';


--------------------------------------------------------------------
데이터 수정 쿼리

수정 쿼리 ㅡ> UPDATE!!!!!!!!!

사용법,
update [테이블이름] set [칼럼1]=[값1], [칼럼2]=[값2], ..where[조건절];

만약 where절을 사용하지않고
update MEMBER set NAME='김창호';
라고한다면, 모든 레코드의 NAME 칼럼의 값을 '김창호'로 변경하게되니
WHERE사용을 주의하자!!!!

ex)
mysql> update MEMBER set EMAIL='changhozz@nate.com' where MEMBERID = 'changhozz';

이것은,
MEMBER 테이블에서 칼럼 EMAIL에 값으로 changhozz@nate.com을 넣겠다.
근데 조건이 MEMBERID가 changhozz인 것만 넣겠다.
이런뜻!.


--------------------------------------------------------
데이터 삭제 쿼리

삭제 쿼리 ㅡ> DELETE!!!!!!!!!

사용법,
delete from [테이블이름] where [조건절]

이것또한 조건 where을 입력하지 않으면 전체 레코드를 삭제해버린다!!!
ㅡ> delete from MEMBER
이렇게하면 MEMBER테이블 내용 다사라짐!!
where을 주의하자!!

이런식으로 사용하자.
mysql> delete from MEMBER where MEMBERID = 'changhohh';

MEMBER 테이블에서 MEMBERID가 changhohh 인것만 삭제한다!!라는뜻!.


-----------------------------------------------------------
조인.

-조인(Join)은 두개 이상의 테이블로부터 관련 있는 데이터를 읽어올 때 사용된다.
조인의 기본 형식은 다음과 같다.

select A.칼럼1, A.칼럼2, B.칼럼3, B.칼럼4 from [테이블1] as A, [테이블2] as B
where A.[칼럽x] = B.[칼럼y]


예를 들기위해
create table MEMBER_ETC(
 MEMBERID    VARCHAR(10) NOT NULL PRIMARY KEY,
 BIRTHDAY    CHAR(8)
);

테이블생성후,
값으로
changhozz 19890105 와 tkdwnsdlzz 19880911와 jungwoogi 19881027을 넣었다.
그 다음
mysql> select * from MEMBER as A, MEMBER_ETC as B where A.MEMBERID = B.MEMBERID;

를 입력하게되면
MEMBER에 있는 MEMBERID와 MEMBER_ETC에 있는 MEMBERID가 같은경우에
테이블을 일렬로 나열하여 전부 보여주었다.
공통된 changhozz와 tkdwnsdlzz의 값들이 아이디 비번 이름 이메일 아이디 생일 순으로
쭉 나열되었다.

 

'JSP > JSP 정리' 카테고리의 다른 글

MVC패턴과 모델 1,2  (2) 2013.01.09
JSP 수업.  (0) 2012.09.25
웹 어플리케이션  (0) 2012.08.16
Chpater 1. 웹 프로그래밍 기초.  (0) 2012.08.16
웹 서버란  (0) 2012.08.16
posted by changhozz 2012. 9. 25. 22:11

8장 - 에러 처리.

1.page 디렉티브에서 지정.
에러페이지 지정방법.
<%@ page erroPage = "error.jsp">

에러 페이지 작성방법.
<%@ page isErroPage = "true" %>
IE에서 예외가 올바르게 보여지려면 에러 페이지가 출력한 응답 데이터 크기가
513바이트보다 커야함.
만약에 513바이트보다 작다면 IE에서 기본적으로 제공하는 에러페이지가 나타남.

2.web.xml 파일에서 예외 타입 별 에러 페이지 지정.

<error-page>
<exception-type>예외클래스명</exception-type>
<location>에러페이지의 URI</location>
</error-page>

3.web.xml 파일에서 응답 상태 코드별 에러 페이지 지정.

<error-page>
   <error-page>에러코드</error-page>
   <location>에러페이지의 URI</location>
</error-page>

에러페이지의 우선순위는 번호 그대로,
page 디렉티브 ㅡ> 에외 타입별 ㅡ> 에러 코드별이다.
(아무것도 해당되지 않을 경우 웹 컨테이너가 제공하는 기본
에러 페이지를 보여줌.)

---------------------------------------------------------

9장 - 클라이언트와의 대화 1: 쿠키

쿠키 ㅡ> 웹 브라우저가 보관하고 있는 데이터로서
웹 서버에 요청을 보낼 때 함께 전송.

쿠키의 생성은 웹서버에서 일어나지만, 쿠키의 저장소는 웹 브라우저이다.

쿠키 생성법.
<%
Cookie cookie = new Cookie("cookieName", "cookieValue");
response.addCookie(cookie);
%>
cookie 이름은 cookieName이고 값은  cookieValue이며,
cookie객체를 더하여 보낸것이다.

쿠키를 읽으려면,
Cookie [] cookies = request.getCookies();
이런식,


* 쿠키는 값으로 한글과 같은 문자를 가질 수 없다.
따라서 인코딩을 하여 보낸후, 디코딩하여 받아야한다.

값 설정시 : URLEncoder.encode("값". "euc-kr")
인코딩을 해준후 인코딩 값을 쿠키의 값으로 넣어준다.
new Cookie("name", URLEncoder.encode("값","euc-kr"));

값 조회시 : URLDecoder.decode("값","euc-kr")
String value = URLDecoder.decode(cookie.getValue(),"euc-kr");

 

-쿠키의 도메인과 경로.

도메인 지정시 , 해당 도메인에 쿠키를 전달한다.
-Cookie.setDomain()으로 쿠키 설정.
-도메인 형식
 만약 .madvirus.net으로 지정해다면
지정한 도메인이 들어간 www.madvirus.net 과 javacan.madvirus.net 모두에
쿠키를 전달한다. 도메인이 벗어난 쿠키는 저장하지 않는다.

만약 경로를 지정해주었다면,
설정한 경로 및 그 하위 경로에 대해서 쿠키를 전달한다.
Cookie.setPath()로 경로 설정함.

-쿠키 유효 시간 지정.
유효시간 미 지정시, 웹 브라우저 닫을 때 쿠키도 함께 살제.
쿠키를 삭제하는 메서드는 존재하지않는다.
따라서 유효시간을 0이나 음수를 주어 삭제시킨다.
Cookie.setMaxAge()를 이용하여... (초단위임.)

 

---------------------------------------------------------------------

10장 클라이언트와의 대화 2: 세션.

세션또한 데이터를 보관하여 쿠키와 같아 보이지만,
세션은 웹서버에서 생성되고, 저장또한 웹 서버에 저장된다.
(세션은 브라우저당 하나지만, 쿠키는 여러개일수있음.)

세션 사용법,
<%@ page sessing = "true"%>
<%
    session.setAttribute("userInfo", userInfo);
%>
기본 값이 true이므로 false로 하지 않는 이상 항상 세션 사용.

 

-세션 종료/ 타임아웃.
session.invalidate()을 이용해서 세션 종료.
세션이 종료되면 기존에 생성된 세션이 삭제되고,
이후 접근 시 새로운 세션이 생성 됨.

또한 유효 시간을 설정하여 마지막 세션 사용 이후 유효 시간이 지나면
자동 종료될수 있도록 web.xml 파일에서 지정해줄수 있음.

<session-config>
    <session-timeout>
      30 (분단위임)
     </sessing-timeout>
</session-config>
또는 session 기본객체의 setMaxInactiveInterval()메서드를 이용하여 지정가능.
(초단위임.)

------------------------------------------------------------------------

11장 <jsp:useBean> 액션 태그

자바빈(JavaBeans)이란 웹 프로그래밍에서 데이트의 표현을 목적으로 사용하는것을 말함.

collection 개념으로써 페이지상에서 들고다닐수있는, 말그대로 콩 조각이 모인 완두콩을 뜻한다.
collection을 이용하여 클래스를 만든 후, 객체를 사용하여 필요한 값에 접근한다.
일반적으로 setter, getter를 이용하여 값을 읽고 쓴다.

여기서 <jsp:useBean> 태그는 JSP에서 자바빈 객체를 생성할 때 사용된다.
사용법,
<jsp:useBean id ="[빈이름]" class="[자바빈클래스이름]" scope="[범위]" />

id - jsp 페이지에서 자바빈 객체에 접근할 때 사용할 이름.
class - 패키지 이름을 포함한 자자빈 클래스의 완전한 이름.
scope - 자바빈 객체가 저장될 영역을 지정. page,request,session,application 중 하나를
값으로 갖는다. 기본값은 page임.

ex)
<jsp:useBean id = "info" class="chap11.member.MemberInfo" scope="request" />
<%= info.getName()%>

-  <jsp:setProperty> 액션 태그
1.<jsp:setProperty name = "id" property="이름" value="값" />
이런식으로 객체의 값을 설정할수도 있음.
name ㅡ> 자바빈 객체의 이름
property ㅡ> 값을 설정할 프로퍼티
value  ㅡ> 프로퍼티의 값.

2.<jsp:setProperty name="id" property="이름" param="파라미터 이름" />
 param ㅡ> 프로퍼티의 값으로 사용할 파라미터 이름.

3.<jsp:setProperty name = "id" property="*" />
 프로퍼티와 동일한 이름의 파라미터를 이용해서 값을 설정
폼에 입력한 값을 자바 객체에 저장할 때 유용하게 사용.

 -  <jsp:getProperty> 액션 태그
프로퍼티의 값을 출력하기 위해 사용.
사용법,
<jsp:getProperty name = "자바빈" property="프로퍼티" />
그러나 EL(Expression Language)의 사용으로 거의 사용 X

'JSP > JSP 정리' 카테고리의 다른 글

MVC패턴과 모델 1,2  (2) 2013.01.09
DB정리!!!  (0) 2012.09.26
웹 어플리케이션  (0) 2012.08.16
Chpater 1. 웹 프로그래밍 기초.  (0) 2012.08.16
웹 서버란  (0) 2012.08.16
posted by changhozz 2012. 8. 16. 18:13

어플리케이션의 동작원리

-. 어플리케이션이란 을 기반으로 실행되는 프로그램을 말한다.

-. 프로그래밍(Web Programming)을 한다는 것은 어플리케이션을 구현한다는 것을 의미한다.

어플리케이션의 동작 순서

① 사용자가 브라우저의 주소 란에 특정 사이트의 주소를 입력하게 되면 브라우저가 해당 서버에

홈페이지를 요청하는 것이 된다.

② 해당 서버에는 브라우저의 요청이 있을 경우 이를 받아들여 요청한 페이지를 응답할 책임을 지고 있다.

요청한 페이지는 서버에서 바로 공급되지 못하고 어플리케이션 서버(WAS : Web Application Server)에서

다양한 로직이나 데이터 베이스와의 연동을 통해서 완성되어야만 공급된다.

어플리케이션 서버(WAS)는 서버가 클라이언트에게 제공할 페이지를 완성하기 위해서 이에 필요한 로직이나

데이터베이스와의 연동과 데이터 처리를 담당한다.

④ 로직이나 데이터베이스 작업 처리 결과를 서버에게 보낸다.

서버는 이 결과를 클라이언트 측 브라우저에 응답하게 된다.

 

---------------------------------------------------------------------------------------------------------

어플리케이션(WAS : Web Application Server)이란 ? (스피어, 로직, 아이플리넷, 제우스..)

을 기반으로 실행되는 프로그램

프로그래밍이란?(JSP, PHP, APS)

클라이언트 요청하게 되면 서버가 이를 처리한 후 결과를클라이언트에게 응답.. 동적으로 변화하는 데이터를 처리하는 역할.

이 둘의 관계는 프로그래밍을 통한 어플리케이션의 구현

<< 어플리케이션의 구조>>

1. 브라우저가 서버에 어떠한 페이지를 요청하게 되면

2. 해당 서버는 브라우저의 요청을 받아서 요청된 페이지의 로직 및 데이터베이스와의 연동을 위해 어플리케이션 서버에 이들의 처리를 요청

3. 어플리케이션 서버는 데이터베이스와의 연동이 필요하면 데이터베이스와 데이터의 처리를 수행한다.

4. 로직 및 데이터베이스 작업의 처리결과를 서버에 돌려보낸다.

5. 서버는 결과를 다시 브라우저에 응답하게 된다!!

<< 어플리케이션의 구성요소 >>

- 브라우저 : 에서 클라이언트이며, 사용자의 작업창이라 할 수 있다. 즉 사용자에게 보여지는 화면(유저 인터페이스 :UI)

- 서버 : 브라우저의 요청을 받아들이는 곳으로 작업의 결과를 브라우저에게 응답을 하는 곳이다. 브라우저의 요청을 받아서 알맞은 결과를 브라우저에 전송한다. 만약 프로그램 처리가 필요하다면 어플리케이션 서버를 사용하거나 프로그램을 직접 호출하여 결과를 생성한다.

요청된 페이지의 로직 및 데이터베이스와의 연동을 위해 어플리케이션 서버에 이들의 처리를 요청하는 작업을 수행한다.

- 어플리케이션 서버(WAS) : 요청된 페이지의 로직 및 데이터베이스와 연동을 처리하는 부분.. 게시판의 글 목록, 고르인 처리와 같은 기능을 처리하고 그 결과를 서버에 전달한다.! ex) 로직, 스피어, 제우스...

- 데이터베이스 : 데이터의 저장소로 에서 발생한 데이터는 모두 이곳에 저장된다.(사이트의 정보를 저장) ex) 게시판의 글, 회원정보 등

<< 어플리케이션 서버 방식>>
CGI방식과 비교하면 쉽게 이해할 수 있다. CGI방식과 어플리케이션 서버방식을 비교해서 설명해 보자.
두 서버방식의 기본 구조는 같지만

서버가 어떤 방식으로 사용하는가의 차이가 있다.

(1)CGI 방식(실행코드 방식) :
- 서버가 어플리케이션 프로그램을 직접 호출하는 구조
즉, 한 요청에 대해 한 프로세스가 생성 되어 요청을 처리한뒤 종료된다.
따라서 시스템에 많은 부하를 가져온다.

* 프로세스 : 메모리 할당을 받은 프로그램으로 실행중인 프로그램을 의미한다.

(2) 어플리케이션 서버 방식(스크립트 코드 방식) :
서버가 어플리케이션 서버에게 처리를 넘겨주고 어플리케이션 서버가 어플리케이션 프로그램을 처리한다.
한 클라이언트 당 1개의 프로세스만을 할당 하고 사용자의 요청을 쓰레드 방식으로 처리.

* 쓰레드 : 프로세스 내의 명령을 블록으로 프로세스 내에 존재.
쓰레드는 메모리를 따로 할당받지 않는다.
하나의 프로세스를 여러개의 쓰레드로 나누어 동시에 처리하는 것을 다중 쓰레디ㅇ이라 한다.
메모리를 점유하지 않으면서 프로그램 수행 속도를 향상시킨다.


<< 어플리케이션의 구현 방식>>
- 클라이언트 사이드 스크립트(Client Side Script) : 클라이언트 쪽에서 처리
ex) JavaScript, VBScript

- 서버 사이드 스크립트(Server Side Script) : 서버에서 처리
ex) ASP, JSP : PHP

1) 실행코드방식 :

미리 컴파일된 실행 프로그램을 사용자의 요청에 따라 실행.
2) 스크립트 코드 방식 :

사용자의 요청이 있을 때 스크립트 코드를 번역해서 번역된 코드를 실행.
스크립트 코드 방식을 사용하는 스크립트 언어를 사용하는 것이 쉽고 빨르게 어플리케이션을 구현할수 있다.


 

'JSP > JSP 정리' 카테고리의 다른 글

DB정리!!!  (0) 2012.09.26
JSP 수업.  (0) 2012.09.25
Chpater 1. 웹 프로그래밍 기초.  (0) 2012.08.16
웹 서버란  (0) 2012.08.16
JSP란 무엇인가.  (0) 2012.08.16
posted by changhozz 2012. 8. 16. 18:09

웹 어플리케이션 ㅡ> 웹을 기반으로 실행되는 어플리케이션을 의미.

우리는 웹 브라우저에 www.naver.com 과 같은 문장을 주소로 입력함으로써
웹 어플리케이션에 기능을 요청하고, 요청을 받은 웹 어플리케이션은 요청한 기능에 알맞은 결과 화면을
생성해서 웹 브라우저에 전송한다.

<이런식>

웹 브라우저 ㅡ> 웹서버 ㅡ> 어플리케이션 서버 ㅡ> 데이터베이스 ㅡ> 어플리케이션 서버 ㅡ> 웹서버 ㅡ> 웹 브라우저 

 구성 요소

역 할 

주요 제품 

 웹 서버 

웹 브라우저의 요청을 받아서 알맞은 결과를 웹 브라우저에 전송한다. 만약 프로그램 처릭 필요하다면 어플리케이션 서버를 사용하거나 프로그램을 직접 호출하여 결과를 생성한다.
주로 정적인 HTML, 이미지,CSS, 자바 스크립트를 웹 브라우저에 제공할 때 웹 서버가 사용된다.

결국, 웹 브라우저에서 정적인 페이지를 요청했을땐 웹 서버에서 바로 제공을 하는것이고,
프로그램 처리가 필요한 동적인 페이지를 요청했을땐 웹 어플리케이션 서버로 넘기는 것이다. 

아파치 

어플리케이션 서버 

게시글 목록, 로그인 처리와 같은 기능을 실행(처리)하고, 그 결과를 응답으로 웹 서버에 전달한다.

톰캣, 웹로직, JBoss 등. 

데이터베이스 

웹 어플리케이션이 필요로 하는 데이터를 저장한다. 예를 들어, 회원 정보, 게시판 글 데이터 등을 저장한다. 

오라클, MySQL, MS-SQL등 

웹 브라우저 

웹 서버에 서비스  실행을 요청하며, 웹 서버의 처리 결과를 사용자에게 보여준다. 

인터넷 익스플로러, 파이어폭스
크롬 

어플리케이션 서버도 웹 서버와 마찬가지로 정적인 HTML이나 CSS, 이미지 등을 제공할 수 있는데,
웹 서버에서 정적인 HTML과 이미지 등을 제공하고 어플리케이션 서버가 프로그램(기능)을 제공하는 이유는
성능 때문이다. 일반적으로 아파치와 같은 웹 서버는 정적인 HTML과 CSS를 제공하는 데 초점이 맞춰져 있고,
톰캣이나 웹로직과 같은 어플리케이션 서버는 JSP, 서블릿과 같은 프로그램을 실행하여 결과를 제공하는 데
초점이 맞춰져 있다.

cf. ) 톰캣 ㅡ> JSP페이지를 웹 서버에 요청을 하면 이 페이지를 해석하고 실행하는 역할을 하는 것.

---------------------------------------------------------------------------------------------------

CGI 방식과 어플리케이션 서버 방식

웹 브라우저 ㅡ> 웹서버 ㅡ>웹 어플리케이션 ㅡ> 웹서버 ㅡ>웹브라우저
                 (요청)         (처리)                                   (응답)

이처럼 웹 어플리케이션이 실행되는 과정은 '요청 - 처리 - 응답'의 3단계 과정으로 정리할 수 있는데,
웹 서버가 웹 어플리케이션 프로그램을 실행하는 방식에 따라서 CGI 방식과 웹 어플리케이션 동작 방식을 구분 할 수 있다.

자 다시 말하면, CGI 방식과 어플리케이션 서버 방식 간의 차이점은 웹 서버가 직접 프로그램을 호출하는지의
여부에 있다.

CGI방식은 웹 서버에서 바로 펄 프로그램이라든지 C프로그램을 직접 실행하고,

┖> 요청 ㅡ> 웹 서버 ㅡ> 프로그램

어플리케이션 서버 방식은 웹 서버가 직접 프로그램을 실행하지 않고, 어플리케이션 서버를 통하여
프로그램들을 실행시킨다. 

┖>요청 ㅡ> 웹 서버 ㅡ> 어플리케이션 서버 ㅡ> 프로그램

접속자가 많은 서비스의 경우 CGI 방식보다 어플리케이션 서버 방식의 성능(처리량)이 더 좋게 나타난다.
예를들어, 동시에 5개의 웹 브라우저가 동일한 프로그램을 요청했다고 해보자.
CGI 방식의 경우 요청 개수만큼 프로그램이 메모리에 로딩된다. 같은 프로그램을 실행하는 경우라 하더라도
요청이 발새할 때마다 매번 메모리에 프로그램이 로딩되기 때문에, 동시에 접속하는 웹 브라우저의 요청 개수가
많아질수록 이에 비례해서 프로그램을 실행하기 위해 필요한 메모리도 증가하게된다.
따라서 속도가 느려져서 전체적으로 성능 저하 현상이 발생한다.

반면, 어플리케이션 서버 방식은 동시에 여러 웹 브라우저가 동일한 프로그램을 요청하더라도 한 개에 해당하는 메모리만 사용하기 때문에 CGI방식에 비해 전체적으로 메모리 사용량이 적다.

----------------------------------------보충설명---------------------------------------------

CGI 방식 (실행코드방식)

: 웹서버어플리케이션 프로그램을 직접 호출하는 구조.

ㄱ. 사용자가 5명이 웹브라우저에서 KIM프로그램을 요청했다.

ㄴ. 각각의 요청을 받은 웹서버가 각각에 해당되는 프로세스를 만들어 직접 프로그램을 직접호출한다.

ㄷ. 프로세스는 실행중인 프로그램인데, 사용자 마다 프로세스를 만들어준다면 과부하가 걸리며 시스템상 좋지 못하다.

2. 웹 어플리케이션 서버 방식(포털사이트, 스크립트 코드방식)

: 어플리케이션 서버 방식은 웹서버가 직접 어플리케이션프로그램을 처리하는게 아니라, 웹어플리케이션 서버에게 처리를

넘겨주고, 어플리케이션 서버어플리케이션 프로그램을 처리한다. 어플리케이션 서버방식은 여러명의 사용자가 동일한

페이지를 요청하여 같은 어플리케이션프로그램을 처리할때 오직 한개의 프로세스만을 할당하면서, 사용자의요청을 쓰레드 방식으로 처리.

쓰레드란? 프로스세 내에 잇는 명령어 블록, 하나의 프로세스 역할을 수행할 수 있다. 다중 쓰레드가 가능

하기 때문에, 하나의 프로세스에 여러개의 쓰레드를 만들어 사용한다면, CGI와 같은 일을 처리하더라도, 프로세스가 하나

이기에, 상당히 시스템상 효율적이다. 당연히 더 많은 사용자에게 서비스를 제공할 수 있다.

 

----------------------------------------보충설명---------------------------------------------

스크립트 방식과 실행 코드 방식

웹 어플리케이션 프로그래밍은 구현하는 방식에 따라 실행 코드 방식과 스크립트 방식으로 구분할 수 있다.

비교 항목 

실행 코드 방식 

스크립트 방식 

코드 형태  

컴파일 된 실행 프로그램 

컴파일 되지 않은 스크립트 코드 

실행 방식 

컴파일 된 기계어 코드 직접 실행 

스크립트 코드를 해석한 뒤 실행 

코드 변경 

소스 코드를 다시 컴파일 해야 함 

스크립트 코드만 고치면 됨 

종류  

C 기반 CGI 프로그램 

JSP, ASP, net, PHP, Ruby 등 

실행 코드 방식의 경우

웹 브라우저 요청 전송 ㅡ> 웹 서버 요청 받음 ㅡ> 프로그램 실행

스크립트 방식의 경우

웹 브라우저 요청 전송 ㅡ> 웹 서버 요청 받음 ㅡ> 스크립트 코드 번역 ㅡ> 번역된 코드 실행.

 

위에 만 보았을 땐 실행 코드 방식이 더 빠른거 같은데 다음과 같은 이유 때문에 스크립트 코드 방식의 속도가 더 빠르다.

1.스크립트 코드 번역은 최초 요청에 대해서 한 번만 발생하며, 이후의 요청에 대해서는 번역 과정 없이 앞서 번역된 코드를 실행하도록 함으로써 번역 횟수를 최소화 하고 있다.

2. 실행 코드 방식의 경우 일반적으로 CGI 방식이고, 스크립트 코드 방식인 JSP나 ASP는 어플리케이션 서버 방식이기 때문에 전체 처리량에서는 JSP/ASP 기반의  스크립트 코드 방식이 앞선다.

3. 기술의 발달로 스크립트 언어를 번역한 코드가 일반 프로그램과 동일한 수준의 성능을 제공하고 있다.

---------------------------------------------------------------------------------------------------------

프로토콜(Protocol) -   컴퓨터와 컴퓨터 사이, 또는 한 장치와 다른 장치 사이에서
데이터를 원활히 주고받기 위하여  약속한 여러 가지 규약(規約).
이 규약에는 신호 송신의 순서, 데이터의 표현법, 오류 검출법 따위가 있다.

프로토콜에는 http, ftp 등이 있는데, 웹 브라우저와 웹 서버는 http나 https 프로토콜을 이용하여 통신하게 된다.

가장 대표적인 프로토콜은 TCP/IP 이다.

TCP/IP ㅡ> TCP/IP란 네크워크 전송 프로토콜로 서로 다른 운영체제를 쓰는 컴퓨터 간에도 데이터를
전송할 수 있어 인터넷에서 정보전송을 위한 표준 프로토콜로 쓰이고 있다.
TCP는 전송 데이터를 일정 단위로 나누고 포장하는 것에 대한 규약이고,
IP는 직접 데이터를 주고 받는 것에 대한 규약이다.
인터넷에 물려 있는 모든 컴퓨터는 인터넷 표준 위원회에서 제정한 규약을 따르고 있는데,
인터넷 표준 프로토콜이 TCP/IP이다.
프로토콜이란 쉽게 말해 한 컴퓨터에서 다른 컴퓨터로 데이터를 완전하게 보내기 위한 장치이다.
TCP/IP에서 먼저 IP는 출발과 도착 주소를 가지는 헤더를 참조해 네트워크를 통해 데이터를 목적지에 전달한다. 그러나 이 과정에서 데이터가 잘못 전달되거나 파손될 수도 있고, 보내진 순서대로 데이터를 전송하지
못할 수도 있다. 이러한 단점을 보완하는 것이 TCP이다.
즉 IP가 데이터 패킷을 분실하거나 파손하면 TCP는 문제가 발생했다는 것을 알리고 데이터를 알맞게 재전송하는 임무를 갖는다.
TCP가 에러를 복구하는 과정에서 데이터를 수신하는 호스트에서는 언제나 에러 없이 순서대로 데이터를 전송 받는다.

 

-----------------------------------------------------------------------------------------------------

쿼리문자열은 주소 뒤에 추가로 붙는 정보로서 '파라미터(parameter)'라고 불리는 데이터를 웹 어플리케이션에
전달할 때 사용된다. 쿼리문자열은 물음표를 이용하여 경로 부분과 구분되며 다음과 같이 1개 이상의 파라미터
이름과 값을 갖는다.

?이름1=값1&이름2=값2&....

이처럼 각각의 파라미터는 '&' 을 이용하여 구분하며, 파라미터의 이름과 값은 등호 부호(=)를 이용하여 구분한다. 
ex) http://www.google.com/search?hl=en&q=jsp&aq=f&oq=

-----------------------------------------------------------------------------------------------------

서블릿과 JSP

자바 언어를 개발한 Sun Microsystems에서 웹 개발을 위해 만든 표준이 서블릿(Servlet)이다.
서블릿 규약에 따라 만든 클래스를 서블릿이라고 부른다. 서블릿을 만들기 위해서는 자바 코드를 작성하고,
코드를 컴파일 해서 클래스 파일을 만들게 된다.
즉, 서블릿은 실행 코드 방식에 속한다. 따라서 서블릿을 이용하여 웹 어플리케이션을 개발할 경우
화면에 출력되는 데이터를 조금만 바꾸고 싶어도 코드를 수정하고 컴파일하고 클래스를 알맞은 곳에 복사해주는 작업을 반복해 주어야 했다. 이런 반복 작업은 개발 효율성을 떨어 뜨리는 요인이 되었다.

이후, Sun은 서블릿의 단점을 보완하기 위해 스크립트 방식의 표준인 JSP를 만들었다. JSP는 코드를 수정하면
바로 변경 내역이 반영되었기 때문에 웹 어플리케이션을 개발하는 데 사용되는 주요 기술로 자리 잡기 시작했다.

JSP표준은 서블릿 표준을 기반으로 만들어졌다. 내부적으로 JSP파일이 번역되며 최종 결과물로
서블릿이 만들어진다. 따라서 이 두 표준은 쌍으로 발전하고 있다.

-------------------------------------------------------------------------------------------------------

JSP란 무엇인가.

JSP, 즉 JavaServer Page는 스크립트 언어이며, 다음과 같은 특징을 갖고 있다.

1.자바 언어를 기반으로 하는 스크립트 언어로서 자바가 제공하는 기능을 그대로 사용할 수 있다.
2.HTTP와 같은 프로토콜에 따라 클라이언트의 요청을 처리하고 응답한다.
3.HTML, XML 등 클라이언트가 요청한 문서를 생성하는데 주로 사용된다.
4.서블릿/EJB 등의 엔터프라이즈 기술들과 잘 융합된다.
5.표현 언어, 표현식, 스크립트릿 등 다양한 스크립트 요소와 액션 태그 등을 제공함으로써 보다 쉽게
웹 어플리케이션을 프로그래밍 할 수 있도록 도와준다.

 

JSP는 HTTP 프로토콜을 알마게 처리할 수 있도록 설계 되었다. 예를 들어 , JSP는 웹 브라우저가 전송한 데이터를 읽어오고 생성한 데이터를 웹 브라우저에 전송하는 것처럼 웹 어플리케이션을 개발하는 데 필요한
기능들을 스크립트 차원에서 제공하고 있다. 또한, 사용자의 세션을 쉽게 관리할 수 있도록 자체적으로 세션 기능을 제공하고 있다.(세션 관리는 사용자의 로그인/로그아웃을 구현하는 데 필수적인 요소인데, JSP가 제공하는 세션 기능을 사용하면 쉽게 로그인/로그아웃 기능을 구현할 수 있다.)

 

JSP는 주로 웹 브라우저의 요청에 따라 알맞은 HTML 결과 화면을 생성하기 위해 사용된다.
하지만, HTML 뿐만 아니라 XML 문서, PDF 문서 등 다양한 문서를 생성하는 데에도 JSP를 사용할 수 있다.
최근에는 사이트의 정보를 XML 문서로 전송해 주는 서비스를 제공하는 곳이 늘언고 있는 추세인데,
JSP를 사용해서 쉽게 XML 문서를 생성할 수 있기 때문에 이러한 추세를 쉽게 반영할 수 있다.

 

서블릿과 JSP 그리고 JSTL은 웹 요청을 처리하고 결과를 생성하는 데 사용되는 웹 영역의 기술이다.

--------------------------------------------------------------------------------------------------

웹 컨테이너는 이름 그대로 웹 어플리케이션을 실행할 수 있는 컨테이너이다.
자바에서 웹 어플리케이션은 JSP와 서블렛으로 구현되므로 자바에서의 웹 컨테이너는
JSP + 서블릿 으로 구성된다고 볼 수 있다.

웹 컨테이너는 JSP와 서블릿을 실행시켜 주는 컨테이너로 톰캣, 제티, ClassFish 등이 있다.
(웹 컨테이너의 한 종류인 갑다 톰캣이)

 

JSP를 사용하는 이유

1.자바 언어를 기바느로 하고 있기 때문에 플랫폼에 상관없이 사용할 수 있다.
2.대규모 어플리케이션을 구현할 때 사용되는 스프링이나 스트럿츠와 같은 프레임워크와 완벽하게
연동되며, 금융권에서 많이 사용되는 EJB 기술과도 완벽하게 연동된다.

 

 

 

 

 

 

 

 

 

 

'JSP > JSP 정리' 카테고리의 다른 글

JSP 수업.  (0) 2012.09.25
웹 어플리케이션  (0) 2012.08.16
웹 서버란  (0) 2012.08.16
JSP란 무엇인가.  (0) 2012.08.16
스크립트 방식 & 실행 코드 방식  (0) 2012.08.14
posted by changhozz 2012. 8. 16. 13:51

우선 일반적으로 서버란 일반 네트워크에서 개인용 컴퓨터들을 서로 연결해주고
관리를 할 수 있도록 구축해놓은 컴퓨터 시스템을 말한다.(네트워크 망?)

따라서 웹서버란 인터넷이라는 네트워크에서 개인 사용자들이 업체의 컴퓨터에 접속하여
홈페이지 방문 혹은 기타 서비스를 제공받을 수 있도록 인터넷 네트워크에 구축해 놓은
컴퓨터 시스템이다.

즉 웹브라우저(클라이언트)로부터 웹 문서를 요청받아 브라우저가 원하는 웹 문서를
전송하는게 웹 서버이다.

여기서 웹 브라우저란 웹을 사용하기 위해서 필요한 소프트웨어로,
웹 브라우저에 URL 주소를 입력하면 명시된 주소의 컴퓨터에 있는 웹 문서를 요청하는 것이다.
이 컴퓨터가 웹 서버 인 것이다.

 

'JSP > JSP 정리' 카테고리의 다른 글

웹 어플리케이션  (0) 2012.08.16
Chpater 1. 웹 프로그래밍 기초.  (0) 2012.08.16
JSP란 무엇인가.  (0) 2012.08.16
스크립트 방식 & 실행 코드 방식  (0) 2012.08.14
서블릿(Servlet)  (0) 2012.08.14
posted by changhozz 2012. 8. 16. 01:47

JSP란 무엇인가.
우선 JSP를 설명하기 위해선 Servlet을 알아야 하고,
Servlet을 알기위해선 CGI를 알아야 겠다는 생각이 들었다.
먼저 CGI는 Commmon Gateway Interface의 약자로 특정한 프로그램 언어를 뜻하는 것이 아니라
웹 서버와 프로그램을 연결 시켜주는 protocol(규약, 약속)을 의미하며,
웹 서버의 일부분으로 서버측에서 수행되는 다른 응용프로그램과 통신할 수 있는 기능을 제공한다.
또한 CGI는 C, Java 등의 언어로 사용하여 작성하게 되는데, 자바 CGI의 성능을 개선한 방법을 servlet이라고 한다.
그렇다면 servlet이란 무엇일까?
servlet은 자바를 이용해서 작성한 CGI 프로그램으로, 일반 CGI 프로그램과는 다른 특성들을 가지고 있다.
일반 CGI는 특성상 클라이언트의 요청이 있을 때마다 프로세스를 생성하여 CGI를 수행한다.
그러한 프로세스 생성은 클라이언트의 요청이 많아질 경우 과부하를 불러오기 때문에 비효율적이다.
이러한 단점을 보완한 것이 sevlet이다. sevlet은 클라이언트의 요청이 생길 경우 프로세스를 생성한 것이
아니라 thread를 생성한다. 또한 각 sevlet은 한 번 메모리에 로드되고 계속적으로 사용된다.
servlet을 실행시키는 JVM은 항상 실행되고 있는 상태이고, 사용자가 많은 사이트의 경우 효과적이다.
그러나 servlet 또한 단점이 있다.servlet을 만들기 위해서는 자바 코드를 작성하고,
코드를 컴파일 해서 클래스 파일을 만들어야 한다. 즉, servlet은 실행 코드 방식에 속한다.
따라서 servlet을 이용하여 웹 어플리케이션을 개발할 경우 화면에 출력되는 데이터를 조금만 바꾸고 싶어도
코드를 수정하고 컴파일 하는 작업을 반복해 주어야 한다.
때문에 , Sun은 servlet 단점을 보완하기 위해 스크립트 방식의 표준인 JSP를 만든 것이다.
따라서 JSP는 코드를 수정하면 바로 내역이 반영된다는 뛰어난 효율성을 갖고 있기 때문에,
웹 어플리케이션을 개발하는데 사용되는 주요 기술로 자리 잡기 시작한 것이다.


Tomcat과 Apache의 차이점

Apache와 Tomcat은 모두 Apache 소프트웨어 재단에서 개발한
오픈 소스 프로그램으로써,
Apache는 정적인 페이지(html)를
Tomcat은 동적인 페이지(jsp)를 동작시키고자 할때 활용하게 되어있다.
또한 Apache는 웹서비스의 역할만을 할 수가 있고,
Tomcat은 웹서비스와 WAS를 모두 담당할 수 있게 되어 있다.
즉 Apache는 사용자의 요청에 따라 html 정도만 뿌려주는 프리젠테이션 역할을 하고,
Tomcat은 그외의 비즈니스 로직이 필요한 동적인 부분을 담당해서
그것을 html 형태로 해석하여 Apache에게 던져주는 역할을 담당하고 있다.
물론 Apache가 없어도 Tomcat 내에도 웹서비스 데몬이 내장되어 있어서
혼자서도 웹서비스와 WAS 역할 모두를 수행할 수가 있다.
마지막으로 여기서 WAS란 Web Application Server의 약자로
서버와 클라이언트 사이에 처리하는 작업량이 많아지면서
 생기는부하를 해결하기 위해 개발 된 것이다.
즉, 클라이언트에서 작업요청이 들어오면 실질적인 처리는
WAS가 하고 서버는 단지 클라이언트에 결과값만 뿌려주는 역할을 하는 것 이다.

 

'JSP > JSP 정리' 카테고리의 다른 글

웹 어플리케이션  (0) 2012.08.16
Chpater 1. 웹 프로그래밍 기초.  (0) 2012.08.16
웹 서버란  (0) 2012.08.16
스크립트 방식 & 실행 코드 방식  (0) 2012.08.14
서블릿(Servlet)  (0) 2012.08.14
posted by changhozz 2012. 8. 14. 23:11


비교 항목 

실행 코드 

스크립트 

코드 형태 

컴파일 된 실행 프로그램 

컴파일 되지 않은 스크립트 코드 

실행 방식 

컴파일 된 기계어코드 직접 실행 

스크립트 코드를 해석한 뒤 실행 

코드 변경 

소스 코드를 다시 컴파일 해야함 

 스크립트 코드만 고치면 됨

종류 

C기반 CGI 프로그램 

JSP,ASP,PHP,Ruby등 

실행 코드 방식의 경우 실행 순서
웹 브라우저 요청 전송 -> 웹 서버 요청 받음 -> 프로그램 실행

스크립트 방식의 경우 실행 순서
웹 브라우저 요청 전송 -> 웹 서버 요청 받음 -> 스크립트 코드 번역 -> 번역된 코드 실행


JSP(Java Server Page)는 스크립트 언어이며 다음과 같은 특징을 갖고있음.

-html,xml 등 클라이언트가 요청한 문서를 생성하는데 주로 사용된다.
-http와 같은 프로토콜에 따라 클라이언트의 요청을 처리하고 응답한다.
-표현 언어, 표현식, 스크립트릿 등 다양한 스크립트 요소와 액션 태그 등을 제공함으로써
보다 쉽게 웹 어플리케이션을 프로그래밍함.

'JSP > JSP 정리' 카테고리의 다른 글

웹 어플리케이션  (0) 2012.08.16
Chpater 1. 웹 프로그래밍 기초.  (0) 2012.08.16
웹 서버란  (0) 2012.08.16
JSP란 무엇인가.  (0) 2012.08.16
서블릿(Servlet)  (0) 2012.08.14
posted by changhozz 2012. 8. 14. 21:07

서블릿 ㅡ>

자바언어를 개발한 Sun Microsystems에서 웹 개발을 위해 만든 표준이 서블릿(Servlet)이다. 서블릿 규약에 따라 만든 클래스를 서블릿이라고 부른다.
서블릿을 만들기 위해서는 자바 코드를 작성하고, 코드를 컴파일 해서 클래스 파일을 만들게 된다. 즉,  서블릿은 *실행 코드 방식에 속한다.
따라서 서블릿을 이용하여 웹 어플리케이션을 개발할 경우 화면에 출력되는 데이터를 조금만 바꾸고 싶어도 코드를 수정하고 컴파일하고 클래스를 알맞은 곳에 복사해 주는 작업을 반복해 주어야 했다.
이런 반복 작업은 개발 효율성을 떨어뜨리는 요인이 되었다.

이후, Sun은 서블릿의 단점을 보완하기 위해 스크립트 방식의 표준인 JSP를 만들었다. JSP는 코드를 수정하면 바로 변경 내역이 반영되었기 때문에 2000년 JSP 1.1과 2001년 JSP 1.2가 출시되면서, 웹 어플리케이션을 개발하는 데 사용되는 주요 기술로 자리 잡기 시작했다.


JSP 표준은 서블릿 표준을 기반으로 만들어졌다. 내부적으로 JSP파일이 번역되면 최종 결과물로 서블릿이 만들어 진다. 따라서 이 두 표준은 쌍으로 발전하고 있다. 예를 들어, 서블릿 2.3버전과 JSP 1.2버전이 한 쌍이고,
서블릿 2.4버전과 JSP 2.0버전이 한 쌍이다. 그리고 내가 배우는 책에서 설명하는 JSP2.1버전은 서블릿 2.5버전과 쌍을 이루고 있다.



JSP표준이 서블릿 표준에 의존하고 있기 때문에, JSP의 동작 방식을 완벽하게 이해하기 위해서는 서블릿에 대한 이해가 필요하다.
 하지만, 서블릿을 모르더라도 JSP를 이용해서 어느 수준까지 웹 어플리케이션 을 개발할 수 있다. 
 


-------------------------------------------------------------------

또 다른 설명,


1. 서블릿이란 ?

자바를 이용해서 웹상에 실행되는 프로그램을 작성하는 기술
서블릿은 컴파일 과정이 플요하고 특정 클래스를 상속 받아야만 구현이 가능한 구조.
JSP : 텍스트 파일 구조
서블릿 : 자바 클래스 구조이다

2. JSP란

서블릿이 가진 HTML 표현상의 문제를 해결하기 위함이다.
서블릿은 프로그램 내에서 HTML 을 처리하기 때문에 간단한 태그를 변경할
때조차 재 컴파일 해야하는 문제가 있다. 이러한 이유로 웹 디자이너는
화면을 마음대로 바꿀수 없었고 이러한 문제점을 해결하기 위해 비지니스 로직과
콘텐츠를 분리하기 위한 노력이 있었고 JSP의 탄생이다.

3. 웹 개발시 서블릿을 사용하면 좋은점

1)콘텐츠와 비지니스 로직을 분리할 수 있다.
2)컨트롤러와 뷰의 역할 분담으로 인해 웹 디자이너와 개발자 간의 원할한 작업이 가능하다.
3)유지보수가 수월하다.
4)기능 확장이 용이하다.

----------------------------------------------------------------

또 다른 설명,

▣ 서블릿(Servlet)

서블릿(Servlet)이란 "Server" + "Let"의 합성어로써, 말 그대로 서버에서 실행되는 프로그램을 의미한다.

즉,'Server에 application을 허용(Let) 한다.'라는 의미.

클라이언트의 요청에 따라 서버에서 서블릿을 실행하고 그 결과를 클라이언트에게 전송하는 방식으로 동작된다.

□ 서블릿(Servlet)
◇ Server + Let
◇ 서버에서 실행되는 프로그램

▣ 서블릿의 구성

서블릿은 웹에서 사용 가능한 자바 프로그램을 구현하기 위한 방법으로써,
자바 기반의 확장 CGI 애플리케이션을 구현하기 위해 사용된다.

□ 서블릿의 구성
◇ 웹에서 사용 가능한 자바 프로그램을 구현하기 위한 프로그래밍 방법
◇ 자바 기반의 확장 CGI 애플리케이션을 구현하기 위한 언어

▣ 서블릿을 실행하기 위한 필요조건

서블릿은 자바 기반이기 때문에 당연히 JDK(Java Development Kit)가 설치되어 있어야 한다.
또한 서블릿을 이용해서 서비스를 제공하기 위해 서블릿이 실행될 수 있는

서블릿 컨테이너(Servlet Container)가 필요하다.

□ 서블릿을 실행하기 위한 필요조건
◇ JDK
◇ 서블릿 컨테이너

대표적인 서블릿 컨테이너로는 Tomcat, Resin, Web Sphere 등이 있다.

-----------------------------------------------------------------------------------


JSP란?(Java Server Page)
동적으로 웹페이지를 생성하기 위한 자바기반의 서버측 기술이다. 즉 , jsp사양은 HTML과 XML 템플릿들 그리고
안전하며 빠른 서버 플랫폼에 독립적인 자바코드를 이용하여 동적으로 클라이언트에게 제공 되어질 페이지를
생성하기 위한 프레임웍을 제공하고 있다.

JSP[제이 에스 피]서블릿의 사용을 통해 웹페이지의 내용이나 모양을 제어하는 기술이다. 자바의 개발자인 썬마이크로시스템즈에서는 JSP 기술이 서블릿 API라고 말하고 있다. JSP는 마이크로소프트의 ASP 기술에 필적한다. JSP가 웹서버에 의해 실행될 자바프로그램을 호출하는데 반하여, ASP는 페이지가 사용자에게 보내지기 전에 스크립트 인터프리터(VBScript 또는 JScript와 같은)에 의해 해석될 스크립트를 포함시킨다.

자바 서블릿으로 가는 링크를 포함한 HTML 페이지는 파일이름 확장자에 .JSP가 붙는다.



Java에서 서블릿이란?
서블릿은 기존의 CGI(Common Gateway Interface) 형태의 동작 프로그램을 대체할 수 있는 자바 프로그램이다. 즉
서블릿은 자바를 이용한 CGI프로그램이라고 할 수 있다. 그러나 서블릿은 기존의 CGI와는 달리 효율적인 면에서
매우 뛰어나다. 기존의 CGI 프로그램(C, C++, Perl 등)은 클라이언트 요청이 있을때 마다 하나의 프로세스(process)
를 생성해서 CGI 프로그램을 수행한다. 이러한 방법은 클라이언트의 요청이 많을 경우 서버에 많은 부하를 주게 되며
성능이 저하된다. 그러나, 서블릿은 클라이언트 요청에 프로세스를 생성하는 것이 아니라 쓰레드를 생성한다.
쓰레드는 프로세스 생성에 비해 서버에 부하를 주지 않아 CGI에 비해 성능면에서 뛰어나다.

서블릿은 서버에서 실행되는 작은 프로그램이다. 이 용어는 웹 페이지와 함께 별도의 파일로 보내지는 작은 프로그램인 자바 애플릿의 맥락에서 만들어진 신조어이다. 자바 애플릿들은 사용자를 위해 간단한 계산업무를 수행하거나 사용자의 반응에 기반하여 이미지를 위치시키는 등과 같은 서비스를 위해 대개 클라이언트에서 실행되도록 만들어진다.

그러나, 사용자의 입력에 따라 데이터베이스와 연계되는 프로그램들은 서버에서 실행될 필요가 있다. 보통, 이러한 것들은 CGI를 이용하여 구현된다. 그러나, 서버에서 실행되는 자바 가상머신을 이용하면, 그러한 프로그램들을 자바 언어로 구현할 수 있다. 서버에 있는 자바 서블릿의 장점은 CGI 응용프로그램보다 더 빠르게 실행될 수 있다는 것이다. 서블릿은 각 사용자의 요청마다 별도의 프로세스가 생기는 대신, 단 하나의 데몬 프로세스 내에서 스레드로 호출되는데, 이는 각 요구에 따른 시스템 오버헤드가 적다는 것을 의미한다.

CGI 응용프로그램의 이름을 지칭하는 URL 대신, 호출되고 있는 자바 서블릿의 결과인 웹 페이지 내의 요청이 URL을 호출하게 되는데, 그 형태는 다음과 같다.

http://www.terms.co.kr:8080/servlet/gotoUrl?http://www.someplace.co.kr

URL 내의 "8080"이라는 포트 번호는 이 요청이 웹 서버 그 자체로 직접 가는 것임을 의미한다.


몇몇 추가적인 모듈들은 자바 서블릿들이 넷스케이프 Enterprise나, 마이크로소프트의 IIS 및 아파치 서버에서 실행될 수 있도록 해준다.


-----------------------------------------------------------
CGI (Common gateWay, interface)  란,

CGI는
웹서버에 있어 사용자의 요구를 응용프로그램에 전달하고 그 결과를 사용자에게 되돌려주기 위한 표준적인 방법이다. 사용자가 하이퍼링크클릭 하거나 웹사이트의 주소를 입력함으로써 웹 페이지를 요청하면, 서버는 요청된 페이지를 보내준다. 그러나, 사용자가 웹페이지의 양식에 내용을 기재하여 보냈을 때, 그것은 보통 응용프로그램에 의해 처리될 필요가 있다. 웹 서버는 으레 그 양식 정보를 조그만 응용프로그램에 전달하는데, 이 프로그램은 데이터를 처리하고 필요에 따라 확인 메시지를 보내주기도 한다. 이렇게 서버와 응용 프로그램간에 데이터를 주고받기 위한 방법이나 규약들을 CGI라고 부른다. 이것은 웹의 HTTP 프로토콜의 일부이다.
 -------------------------------------------------------------------

CGI는 Common Gateway Interface의 약자로 특정한 프로그램 언어를 뜻하는 것이 아니라 웹 서버와 프로그램을 연결 시켜주는 protocol(규약, 약속)을 의미한다. 

CGI는 웹 서버의 일부분으로 서버측에서 수행되는 다른 응용프로그램과 통신할 수 있는 기능을 제공한다.

예를 들어 홈페이지의 게시판을 만들 경우 데이터베이스와 접속이 필요하다.(사용자가 기입한 내용을 FORM으로 전달)


CGI는 C, Java등의 언어로 사용하여 작성하게 되는데 자바 CGI의 성능을 개선한 방법을 sevlet이라고 한다.


서블릿은 자바를 이용해서 작성한 CGI 프로그램이지만, 일반 CGI 프로그램과는 다른 특성들을 가지고 있다

일반 CGI는 특성상 클라이언트의 요청이 있을 때마다 프로세스를 생성하여 CGI를 수행한다.

그러한 프로세스 생성은 클라이언트의 요청이 많아질 경우 과부하를 불러오기 때문에 비효율적이다.

이러한 단점을 보완한 것이 서블릿이다. 서블릿은 클라이언트의 요청이 생길 경우 프로세스를 생성하는 것이 아니라 thread를 생성한다. 또한 각 서블릿은 한 번 메모리에 로드되고 계속적으로 사용된다.

서블릿을 실행시키는 자바 가상 머신은 항상 실행되고 있는 상태이고, 사용자가 많은 사이트의 경우 효과적이다.

'JSP > JSP 정리' 카테고리의 다른 글

웹 어플리케이션  (0) 2012.08.16
Chpater 1. 웹 프로그래밍 기초.  (0) 2012.08.16
웹 서버란  (0) 2012.08.16
JSP란 무엇인가.  (0) 2012.08.16
스크립트 방식 & 실행 코드 방식  (0) 2012.08.14