확장 CGI프로그램인 ASP나 PHP 모두 Server Side Script 프로그램이라 정의할 수 있다. Server Side Script라 함은 HTML문서에 포함되어 있는 스크립트 언어가 어디에서 처리되느냐로 결정된다. 즉 HTML 문서 내의 Script가 클라이언트 사이드, 다시 말해 클라이언트 컴퓨터에서 처리된다면 이를 Client Side Script라고 하고 서버 컴퓨터에서 처리된다면 이를 Server Side Script라고 한다.
이는 웹프로그래밍에 있어 중요한 부분으로 어느 Side에서 로직을 실행시키느냐에 따라서 로드 문제나 보안 그리고 네트워크통신 등에서 큰 차이를 보이고 있다.
대표적인 Client Side Script라고 할 수 있는 것이 많이 쓰이고 있는 자바스크립트일 것이다.
function nullCheck(form) {
var id = document.myform.myid.value;
var password = document.myform.mypw.value;
if(!id || !passwd)
{
alert(‘아이디나 패스워드를 입력하지 않았습니다.”);
}
return;
}
위의 자바스크립트 부분이 화면 구성과 관련이 없는 null 체크를 위한 부분이다. null 체크를 자바스크립트로 했다면 이는 서버와 네트워크 통신없이 null값이 있다는 것을 알아낼 수 있을 것이다. 만약 자바스크립트 null체크를 하지 않았다면 서버로 데이터가 전송될 것이고 다시 서버에서 null값에 대한 오류 로직을 통해 클라이언트로 보내지게 된다.
이렇게 된다면 불필요한 네트워크 통신이 일어나게 된 것이다.
다시 말해 위와 같은 경우 당연히 Client Side에서 프로그램이 실행되는 것이 맞으며 이렇게 서버와 네트워크 전송 없이 어떤 로직을 수행하는 것을 Client Side Script라고 한다.
이러한 Client Side Script들은 당연히 클라이언트 컴퓨터에 의해 실행되므로 클라이언트에서 소스보기 등의 방법으로 프로그램 내용을 확인할 수 있는 것이다.
하지만 만약 위처럼 간단한 로직이 아니라 데이터베이스와 관련된 로직이라면 그 데이터베이스 계정명과 암호등이 프로그램 내에 들어가야 하고 이 계정과 암호가 클라이언트에게 그대로 보인다면 보안상 심각한 문제를 발생시킬 수 있다.
결국 이렇게 어떠한 로직을 수행하는 소스는 보이지 않고 단지 그 결과만이 html형태로 클라이언트에게 보내지는 방법을 Server Side Script라고 한다.
그리고 이 Server Side Script는 클라이언트 컴퓨터가 아닌 서버에서 수행되게 되는 것이다.
만약 클라이언트가 다음과 같은 url로 웹페이지를 요청했다고 하자.
http://localhost:8080/examples/jsp/helloworldjsp.jsp
그러면 웹서버에서 이 요청을 받아들이고 다음과 같은 jsp파일을 수행시킨다.
<html><head></head><body>
<%! String str = new String(“HelloWorld jsp!!”); %>
<h1><center><%=str %>
</center></h1></body></html>
위 예전에서 굵은글씨로 되어 있는 부분은 jsp프로그램이다. 즉 html에서 jsp 스크립트가 있는 파일이다. 하지만 이것의 결과를 보는 클라이언트는 단순히 이 프로그램 결과물인 html파일밖에 볼 수 없다. 즉 서버 측에서 프로그램이 돌아가고 클라이언트에게는 단순히 결과물만 넘어가게 되는 것이다.
클라이언트 측에서는 helloworldjsp.jsp의 실행결과물인 html파일만 볼 수 있는 것이다. 이처럼 Server Side Script와 Client Side Script의 차이를 보이고 있으며 자바에서도 Applet프로그램이 Client Side이고 Servlet이나 jsp가 Server Side이다.
web 프로그램에서 흔히 말하는 스크립트 언어란 컴파일 과정이 없는 언어이다. 즉 소스 프로그램 자체가 컴파일 과정이 없이 해석기에 의해 직접 실행되는 언어들이다. 대표적인 스크립트 언어가 자바스크립트, asp, php등이다. 그러나 자바프로그램은 모든 파일들이 컴파일 과정을 거쳐 생성된 class(중간 기계어)파일에 의해서 서비스를 제공하는 것이다.