[JSP와 서블릿] 누워서 생각없이 보는 웹이야기 3편

 

 

 

우선 JSP와 서블릿을 알아보기전에 프로그래밍의 역사는 유지보수, 확장의 용이하게 발전해왔다

같은기능을 하는 메서드들을 괜히 복잡하게 객체지향 설계를 하는것은 심심해서 그러는것이아니라

프로그래밍을 하면서 나오는 단점들을 개선하기위해서 하나씩 개선해 나간 결과물이다 JSP와 서블릿도 이와같은 느낌이다

 

 

우선 서블릿에 대해서 설명해보자면 서블릿은 간단하게 Java 파일안에 HTML이 있다고 생각하면 된다

 

 

 

 

위에 코드를 봐볼까 Java파일안에 out.prrintln메서드를 보면 HTML태그들이 나열되어있다

이것을 서블릿이라고 부르며 자바파일안에 HTML문법들이 있다고 보면 편하다

 

자 이제 위에 코드들을 보면서 뭔가 문제점이 있다는것을 알수있는데

바로 HTML태그들이 한줄마다 차지함과 더불어 코드를 짜면짤수록 가독성이 안좋아지고

HTML 인터페이스 부분 구현에있어서 시간이 오래걸린다는 단점이있었다

 

그래서 이것을 어떻게하면 개선할수있을까 해서 나온것이 바로 JSP라는것이다

위에서 말했듯이 JSP는 서블릿과 거의 같지만 HTML안에 JAVA코드가 있는것을 JSP라고 부른다

 

여기서 중요한건 JSP가 서블릿의 상위호환이 절대아니다

그저 HTML코딩이 불편하기 떄문에 나온 " 스크립팅 기술 "이 JSP라는 것이다

둘다 똑같이 웹소스들을 동적으로 생산해내고 이용하는건 똑같다는 말이다

 

 

 

 

이번엔 JSP를 보면 확실히 서블릿에 비해서 눈에 확들어온다

<%!    %> 영역은 클래스메서드를 선언하는 부분이고 <% %> 이곳은 지역변수를 선언하는곳이다

그래서 HTML에 EL태그(${}) 를 쓰지않고 <%변수%> 를 이용한다

 

확실히 인터페이스 부분을 개발하는데 있어서 가독성이 올라가 보기도 편하다

 

그렇다면 어떨때는 JSP를 쓰고 어떨때는 서블릿을 사용하는게좋을까? 이것은 사실 뭐가 확실히 더좋다기보다는 개발자가 원하는 로직을 구현하는데 필요한 구성을 좀더 효율적으로 만들수있는것을 선택하는것이 좋을것이다

 

우선 서블릿의 장점부터 살펴보면 1. Date Processing(Controller)구현에 있어서 좋다

아무래도 JAVA파일 안에 HTML이 들어가다보니깐 로직구현에는 훨씬 편한 가독성을 보장한다

 

또한 DB와 통신하거나 위에서말한 비즈니스 로직 구현에 유리하다 자바를 컴파일 한뒤 동적인 페이지를 처리하기때문에 재배포가 필요하다(생산성 저하) 그다음 JSP의 장점부터 보자면 View구현에 있어서 편하다

위와 동일하게 HTML안에 JAVA소스코드들이 있기떄문에 아무래도 View구현에 있어서 좋은 가독성을 보장한다

 

또한 재배포가 필요없이 WAS(Web Application Server)가 자동으로 처리해주기때문에 생산성이 올라간다

 

 

 

 

 

 

자 이제 서블릿과 JSP의 차이점을 알았는데 여기서 나온것이 바로  Model1 방법과 Model2 방법인데

이게뭐냐면 Model1은 JSP만을 사용하는 방법이고 Model2는 JSP와 서블릿을 혼용하여 사용하는 방법이다

 

Model1의 동작방법은 이러한데 JSP가 사용자의 요청을 받게되면 Java Bean을 호출한다

(Java Bean에 대해서는 다른게시물에서 설명하겠다) 그다음 동적인 페이지를 생성하게되는데

 

여기서 JSP는 WAS에 의해서 서블릿으로 변환되는 과정을 거치게된다(Jsp -> Java -> class)

이과정에서 JSP 태그들을 분해하고 그것을 토대로 순수한 HTML 웹페이지로 변환하게된다

 

이에따라 장점은 첫번째로 개발속도가 빠르면서, 아무래도 한가지(Jsp)만 다루기떄문에 배우기쉽다는 장점이있다 하지만 한파일에 비즈니스로직과 View가 존재하기떄문에 가독성이 떨어져 유지보수에 안좋다는 단점이있다

 

그래서 등장한것이 Model2 방법으로써 Jsp를 View를 담당하게하고 서블릿을 Controller 비즈니스로직을 담당하여 구현하는것이다 이것이 바로 우리가 흔히알고있는데 MVC패턴의 형태라고 볼수있다