posted by changhozz 2012. 9. 3. 03:27

주요내용 , JSP란 무엇인가.

             리눅스 설정.

실행코드방식 -  컴파일, (요청이 많을시 실행코드방식이 더 빠르다.)

스크립트 방식- 바로 번역 후 실행  (요청이 적을시 스크립트 방식이 더 빠르다.)

JSP란 동적인 웹 애플리케이션을 만들 수 있는 방법을 제공하며, 서블릿을 기반으로 웹 애플리케이션을 만드는 작업을 간단하게 처리할 수 있도록 해 주는 스크립트 언어이다. JSP를 스크립트 언어라고 하는 이유는 JSP로 작성된 코드가 실행 시에 서블릿 파일로 자동 변환되어 컴파일 된 후 실행되기 때문이다. 그래서 JSP를 서버 측 스크립트 언어라고 한다.

JSP를 한 문장으로 정의하자면, HTML 내에 자바 코드를 삽입하여,

웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 돌려주는 언어이다.

JSP의 동작 구조를보자면, 웹  브라우저에서 JSP  페이지를 웹 서버로  요청하게되면,
웹 서버는 JSP에 대한요청을 웹 컨테이너로 넘기게 된다. 이러한 요청을 받은 웹 컨테이너는
해당 JSP페이를 찾아서 서블릿(.java파일 생성)으로 변환하는 과정을 거친 후 컴파일(.class파일 생성)을 하게 된다.  컴파일된 서블릿(.class)은 최종적으로웹 브라우저에 응답되어져 사용자는 응답 결과를 보게된다.
  이러한 과정은 JSP페이지가 최초로 요청되었을때 단 한번만 실행된다.
 이후 같은 페이지에 대한 요청이 있으면 변환된 서블릿 파일로 서비스를 처리한다.

 

Web 1.0  =  Text ㅡ> HTML ㅡ> Homepage 형식으로 운영자에 의한 일방적인 소통이다.

Web 2.0 = 대화형 소통으로 사용자 또한 운영자와 주고받을 수 있다.

Web 3.0  = 컴퓨터가 인공지능이 가능하여,  연관된 관계를 설정할 수 있다.
               시멘틱 ㅡ> 삼단논법처럼 관계와 관계를 통하여 추론하는것. ex) 온톨로지

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

리눅스 -

cygwin을 설치하여, 리눅스 명령어에 대하여 배움.

ls -la   ㅡ> 현재 경로에 있는 파일 및 폴더 목록을 보여줌.

cd 원하는경로  ㅡ> 원하는 경로로 이동

cd . . ㅡ> 상위 경로로 이동.

cp ./파일명 ./경로      ㅡ> 원하는 경로에 파일을 복사함.

mv ./파일명 ./경로   ㅡ> 원하는 경로로 파일을 이동함.

mkdir   ㅡ> 디렉토리 설정

vim에서  i ㅡ>  편집모드

esc ㅡ> 명령모드

:wq  ㅡ> 저장후 종료

:q!  ㅡ>  저장후 강제종료

:q  ㅡ> 강제종료

 

과제 : 금일 수업 한 내용을 vim으로 homework란 폴더를 만 든후, 금일날짜.txt에 저장하는 것. 

 

▣ JSP(Java Server Page)

JSP 는 동적인 웹 애플리케이션을 만들 수 있는 방법을 제공하며, 서블릿을 기반으로 웹 애플리케이션을 만드는 작업을 간단하게 처리할 수 있도록 해 주는 스크립트 언어이다. JSP를 스크립트 언어라고 하는 이유는 JSP로 작성된 코드가 실행 시에 서블릿 파일로 자동 변환되어 컴파일 된 후 실행되기 때문이다. 그래서 JSP를 서버 측 스크립트 언어(Server Side Script Language)라고 한다.

□ JSP(Java Server Page)
◇ 서블릿 기반의 동적 웹 애플리케이션을 구현하기 위한 언어
◇ 웹 + 자바 프로그래밍 + 스크립트

JSP를 한 마디로 정의하면, JSP는 자바 기반의 동적 웹 애플리케이션을 구현하기 위한 스크립트 언어이다.

▣ JSP의 등장

서 블릿은 앞서 이야기했다시피 완전한 하나의 자바 애플리케이션이다. 따라서 정적인 HTML 코드도 프로그램적으로 서블릿 코드에 삽입되어야 하기 때문에 디자인과 프로그램 코드의 분리가 어려우며, 다른 웹 프로그래밍 언어에 비해 복잡하고 번거롭다. 이러한 단점을 해결하고 프로그래머에게 편의성을 제공하고자 JSP가 나오게 되었다.

□ JSP의 등장
◇ 서블릿은 디자인과 프로그램 코드의 분리가 어렵고, 다른 웹 프로그래밍 언어에 비해 복잡하고 번거롭다.
◇ 프로그래머에게 편의성을 제공하기 위해 JSP가 등장했다.

JSP는 실행 시에 서블릿 코드로 자동 변환되어 컴파일된 후 실행된다. 결국 JSP도 서블릿이라는 이야기이다.

▣ 왜 서블릿 대신에 JSP를 사용하는가?

JSP와 서블릿이 동일하다면, JSP도 결국 서블릿인데 왜 JSP를 더 많이 사용할까?

JSP 를 사용함으로써 얻을 수 있는 장점 중 하나는 디자인과 자바 프로그램 코드의 분리가 가능하다는 것이다. 이는 디자인과 프로그래밍이라는 관점에서 작업을 서로 분리하여 수행할 수 있다는 엄청난 장점을 지닌다. 또한 서블릿은 실행 전에 .class 파일로 컴파일을 직접 해야 하지만 JSP는 코드만 작성해 놓으면 실행 시에 자동으로 변환과 컴파일이 이루어지기 때문에 서블릿에 비해 편리하다는 장점을 갖는다.

□ 서블릿에 비해 JSP를 사용하는 이유
◇ 컴파일이 자동 수행되기 때문에 편리하다.
◇ 디자인과 자바 프로그램 코드의 분리가 가능하다.

JSP가 편리하다고 하여 서블릿을 쓰지 않는 것은 아니다. 개발자의 취향에 따라 차이가 있겠지만 필자는 HTML과 간단한 자바 코드는 JSP로 작성하고, 비즈니스 로직은 서블릿을 이용해서 적절히 보완적으로 사용하는 것을 선호한다.

 

'JSP > JSP 수업' 카테고리의 다른 글

JSP 수업 DB부분  (0) 2012.10.05
네번째 수업.  (0) 2012.09.13
jsp 세번째수업  (0) 2012.09.11
두번째 수업 (추가정리).  (0) 2012.09.07
두번째 수업.  (0) 2012.09.07
posted by changhozz 2012. 8. 27. 15:58

document.title     ㅡ>  문서의 제목.

document.lastModified    ㅡ>  변경날짜.

얘네는 속성이였고,

메서드 접근.

날짜를 알기위해선, 날짜 메서드에 접근하기 위해선, Date 객체형의 변수를 선언한뒤 접근해야함.

today = new Date();

today.getFullYear()     ㅡ> 현재 년도.

today.getMonth()    ㅡ> 현재 달.

today.getDate()   ㅡ> 현재 일.

today.getHour()    ㅡ> 현재 시.

today.getMinutes()     ㅡ> 현재 분.

 

웹 브라어저 히스토리 이동하기.

이건 자바스크립트에 쓰는게 아니라, HTML에서 바로 사용하면된다.
history.go() 를 사용한다.

ex)

<input type = "button" value = "이전 페이지로" onClick = "history.go(-1)">

 

값이 없다.

undefined  ㅡ>  값이 아예 할당이 되지않은거.

null  ㅡ> 값이 할당이되긴했는데 아무것도 없는 값이 할당되었다는거.

ex)
var momo;
if(momo==undefined){
document.write("값이 할당 되지 않았음.");
}

if문에서 값이 할당되지 않았거나 null이 할당된경우에 변수 자체는 false가 됨.
값이 할당됫다면 true임.

 

연산자========================================================================

==   ㅡ> 타입이 달라도 값만 같으면 true 반환.

===   ㅡ> 타입도 같고 값도 같을때만 true 반환.

주의할점은 자바는 타입이 다른데 비교할라하면 compile이 안되는데,

자바스크립트는 아무렇지않게 비교가능.

ex)

var  a = 1;
var b = "1";
if(a==b).......    ㅡ> true임...............

 

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

typeof 연산자.
변수의 타입을 반환한다.

ex)
var a = 1;
var typename = typeof a ;

document.write(typename);     ㅡ>   number

 

 

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

in/instanceof    연산자

in    ㅡ>  지정된 속성이 객체에 포함되어 있는지 체크할때 사용.

ex)   if("cpu" in mycomputer)   ㅡ>  true, false를 반환.

instanceof    ㅡ> 지정된 객체 변수가 특정 객체를 통해 선언된 것인지 체크

ex) var str = new String("String1");
if(str instanceof String)     ㅡ> true,false를 반환.

 

 

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

이벤트 핸들러,

<body onload = "load_func()"> 이런식으로 해도 되지만,

HTML의존 없이,   그냥
window.onload = function(){
    alert("환영합니다.");
}

이렇게 해줘도 됨.

 

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

리턴.

<form action = "..." onsubmit="return check()">
.....
</form>

function check(){

if(...)
    return true;

else
    return false;
}

 

이런식으로 onsubmit에 check() 함수를 retrun과 함께 설정하고 있다. 이는 check 함수의
리턴 값을 그대로 onsubmit에 넘겨주겠다는 의미이다. 그래서 만약 check함수에서 어떤
조건 하에서 false를 리턴하게 되면 이 폼은 절대로 submit이 되지 않게 될 것이다. 그래서 이러한
방식은 사용자가 입력한 정보를 submit하기 전에 원하는 정보가 모두 입력되었는지 체크하기
위해 많이 사용한다. 그래서 만약 특정 정보가 입력되지 않았다면 여기에서 바로 false를 리턴하여
사용자에게 입력을 요구할 수 있게 된다.

'자바스크립트' 카테고리의 다른 글

자바스크립트 사용시 주의사항  (0) 2012.08.27
자바스크립트에 대한 내 생각  (0) 2012.08.27
[HTML] name과 id의 차이점.  (0) 2012.08.27
중요한것들 정리.(1)  (0) 2012.08.17
자바스크립트 정리 <9>  (0) 2012.08.13
posted by changhozz 2012. 8. 27. 15:40

문자열은 '' , " " (작은따옴표, 큰따옴표) 어느것으로 해도 무방하다.

ex) documnet.wirte("hellow world");
     documnet.wirte('hellow world');
허나 작은따옴표를 사용하자. 왜냐면 속성을 지정해줄때 큰따옴표로 하기때문.
ex) onClick = "push('버튼 1번이 눌렸습니다.')"
속성과 텍스트를 구분지어주기 위해서.

 

자바스크립트의 코드는 <head>안에 삽입하는것이 좋다.
<body>부분에 삽입해도 상관없지만, 해석되지도 않은 코드를 실행함으로써,
발생하는 문제를 미연에 방지하기위해 head부분에 삽입하여 한번 거쳐오는것이 좋다.

 

자바스크립트를 지원하지 않는 웹 브라우저가 있으므로 항상 코드부분엔 주석을 달아줘야 한다.
안그럼 코드자체가 웹상에 노출된다.
<!--코드 내용//-->

 

 

함수의 매개 변수 정보

자바스크립트에서 함수를 실행할 때 정의된 매개 변수보다 더 많은 매개 변수를 사용하여도
에러가 생기지 않는다. 가령 함수 정의에는 매개 변수가 하나만 있는데, 실제 실행시
매개 변수 3개를 사용하는 경우 뒤에있는 2개의 매개변수는 무시된다.

 

지역변수 전역변수.

전역변수 ㅡ> 함수밖에서 선언된 변수, 함수안에서 var를 사용하지않고 그냥 선언된 변수.

전역변수 ㅡ> 함수안에서 var를 사용하여 선언된 변수.

'자바스크립트' 카테고리의 다른 글

자바스크립트 사전  (0) 2012.08.27
자바스크립트에 대한 내 생각  (0) 2012.08.27
[HTML] name과 id의 차이점.  (0) 2012.08.27
중요한것들 정리.(1)  (0) 2012.08.17
자바스크립트 정리 <9>  (0) 2012.08.13
posted by changhozz 2012. 8. 27. 15:22

자바스크립트는 스크립트 언어로, 자바나 C와같이 컴파일을 하지않고, 인터프리터방식으로
클라이언트 쪽에서만 실행된다.
따라서 클라이언트에 관련된 HTML과 서버에 관련된 JSP의 중간역할로 보면 될것같다.
HTML만으로는 비밀번호나 아이디에 중복검사,일치를 알아낼수없다.
그렇다고 JSP에 보내어 DB도 필요없는 단순 검증을 서버까지 연결시키기엔 복잡하다.

따라서 단지 클라이언트 쪽에서 서버를 탈 필요없이 로직적인 부분이 필요하다면,
이때 자바스크립트가 필요한것같다.

'자바스크립트' 카테고리의 다른 글

자바스크립트 사전  (0) 2012.08.27
자바스크립트 사용시 주의사항  (0) 2012.08.27
[HTML] name과 id의 차이점.  (0) 2012.08.27
중요한것들 정리.(1)  (0) 2012.08.17
자바스크립트 정리 <9>  (0) 2012.08.13
posted by changhozz 2012. 8. 27. 11:38

[HTML] name과 id의 차이점

name
(1) document.폼객체명.폼원소명.value
(2) document.getElementsByName("네임명")
id
(1) document.all.id.value
(2) id.value
(3) document.getElementById("폼원소아이디").value

name은 페이지 안에 이름이 중복되어 사용이 가능하며 action에 해당하는 페이지로 파라미터 키로 사용된다.

idHTML4에서 부터 생긴 개념이다.

XML문서(DOM Tree) 내에서 Node를 식별하는 용도로 사용되어 페이지 안에 이름이 한개만 존재해야 한다.

보통은 특정 tag를 지정하기 위해서 사용합니다.태그 내용을 바꾸는 dhtml 작업에서 주로 사용합니다.

참고로 id로 설정된 값은 서버쪽으로 파라미터로 넘어가지 않기 때문에 서버쪽에서 접근이 안된다.

id는 자바 스크립트에서 다룰려고 지정하는 것이고

name은 파라미터 전송을 하기 위해서 지정하는 것이다.

** 파폭이나 크롬에서는 document.getElementByIdid로만 읽습니다.

 

'자바스크립트' 카테고리의 다른 글

자바스크립트 사용시 주의사항  (0) 2012.08.27
자바스크립트에 대한 내 생각  (0) 2012.08.27
중요한것들 정리.(1)  (0) 2012.08.17
자바스크립트 정리 <9>  (0) 2012.08.13
자바스크립트 정리 <7>  (0) 2012.08.13
posted by changhozz 2012. 8. 17. 14:34

-----------------------------창-------------------------------------

prompt("창에 쓰일 내용"," 사용자가 쓸 텍스트 창에 미리 쓰여있을 글. ");

alert("창에 쓰일 내용");

-------------------------------이벤트(액션)--------------------------------

onload ㅡ><body> 태그의 이벤트 속성으로 페이지가 열릴때 나타낼 이벤트.

onclick ㅡ> onclick을 지정한 것을 클릭하였을때 나타날 이벤트.

onfocus ㅡ>무언가에 포커스가 잡혔을때,
쉽게말해 input text박스에 커서가 들어왔을때.
(커서가 들어왔을때 text박스에 value를 바꿔주거나 할때 사용하면 좋지.)

onkeypress  ㅡ>  키를 눌렀을때 발생하는 이벤트. text박스에 숫자만 집어넣고 싶을때, 영문자만 가능하게 할때, 특정문자는 입력불가하게 쓸때. 근데 얘는 쫌 늦게 먹힘. nate 비밀번호 확인할 때 생각해봐.

onkeyup

onblur ㅡ> 포커스를 잃었을때 발생하는 이벤트
예를 들면, text박스에 글쓰다가 딴데 클릭하면 창을 띄운다던가, 거의 강압적일때 쓰지,
또 예를들면, 주민등록번호 앞에 6자리를 다쓰고 뒷자리 쓸라고 포커스를 옮길때,
생년월일 부분에 주민번호값으로 채워주게하던가 이럴때 쓰지

alt ㅡ> 마우스 올리면 그림 설명하는 창 뜨게 하는거.

(얜 css) style = "cursor:pointer"    ㅡ> 그림에 지정해줬다치고, 그림위에 마우스를 올리며 손가락 표시로 바뀜.

------------------------------------------변수---------------------------------

자바 스크립트는 세가지 기본 데이터 타입을 사용한다.
바로 text, number, boolean 

var ㅡ> 변수를 생성하는 키워드

const ㅡ> 상수를 생성하는 키워드.

변수를 선언할때 , 타입의 지정없이 값을 넣어 주게되면 자동으로 타입이 지정된다.

ex) var a = 10;  으로 하면 a는 number 타입이 된것이다.

그치만 나중에 a에 텍스트를 넣는다면 a는 다시 String 타입으로 바뀐다.

 

-------------------------------------잡것---------------------------------------------

 

 

-------------------------------------element------------------------------------

웹 페이지 엘리먼트와 엘리먼트의 value와의 차이.

웹 페이지 엘리먼트는 자바스크립트에 객체로서 노출되는데, 이는 엘리먼트를 조작하기 위해
내가 사용할 수 있는 프로퍼티와 메서드들을 가지고 있음을 의미한다.
이러한 프로퍼티 중 하나가 value인데, 이는 엘리먼트에 저장된 값을 가직 있다.
한가지 예로, 폼 필드의 value는 필드에 입력된 데이터를 말한다.

'자바스크립트' 카테고리의 다른 글

자바스크립트에 대한 내 생각  (0) 2012.08.27
[HTML] name과 id의 차이점.  (0) 2012.08.27
자바스크립트 정리 <9>  (0) 2012.08.13
자바스크립트 정리 <7>  (0) 2012.08.13
자바스크립트 <6>  (0) 2012.08.13
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