본문 바로가기

JAVA를 잡아라!/JSP / Servlet

서블릿, EJB, MVC모델링이 뭐에요?

서블릿, EJB, MVC모델링이 뭐에요?


저는 ASP, PHP는 해보았는데 JSP는 여름때부터 공부한게 다 거든요

그런데 얼마전부터 JSP도 공부를 해봤습니다.

하다보니 자바는 필수로 꼭 배워야 겠다는 생각이 들었는데..

자바를 공부 할려고 하다 보니 자바도 종류가 워낙 많아서리 뭐부터 공부를 해야 할지

모르겠더라고요.

자바에서도 서블릿이라는게 있고..

개발방법 템플릿 같은데 MVC모델이라는것도 있고..

EJB는 뭔지..

암튼 이런것들이 궁금하네요

이런것들을 알고나서 부터, 책을 봐야 할것 같아서요.

전, JSP와 자바, 오라클, 유닉스 기반으로 웹 사이트를 구현하고 싶거든요^^


=============================================================================
답변

JSP 는 JAVA 기반의 웹프로그래밍 언어입니다.

일반적인 JAVA(CLASS) 문법에 태그 정도 추가되었다고 생각하시면 되겠고

SERVLET 의 경우는 JSP 태그를 사용하지 않고 JAVA(CLASS) 형태로 작성되었다고

보시면 되겠네요

개발방법은 일종의 기능이나 보안상으로 괜찮겠구나 해서 개발하는 방법입니다.

mvc 모델은 작업을 Model, View, Controller 를 구분해서 처리하는겁니다. 

JSP 는 사용자에게 보여지는 화면(View) 처리만 하고

SERVLET 은  중간에서 작업구분( Controller  ) 역할을 하고

일반 JAVA(CLASS)  파일에서 업무처리 하는 형태 입니다.

그러므로 JSP 파일 소스도 HTML 이 주가되어 간단하고 보기 쉽고 

SERVLET 을 통해서 작업 호출 하므로 내부 CLASS 에 접근 하려면 서블릿을 통해야 하고 그것도 서블릿에 지정한 형태로만 접근이 되니 보안성도 높아지고 등등...

EJB 는 객체 생성 및 디비연결등 자원관리를 EJB 서버에서 해준다고 보시면 됩니다.

그래서 좀더 대용량으로 효율적으로 사용할 수 있다~

대신에 EJB 형식에 맞춰서 클래스파일들 작성을 해야겠죠

간단하고 보잘것 없는 설명이였습니다~

아~ 무엇을 공부해야 할지 모른다고 하셨는데

JAVA 에 대해서 먼저 공부 하셔야겠고

JSP 공부하시고  SERVLET 공부하시고

EJB 까지 하신다면 마지막으로 EJB 보시면 되겠네요

=======================================================================================
또 다른답변

먼저 간단히 java 에 대해서 설명드리겠습니다.

java 는 프로그래밍 언어 입니다.

xx.java 를 컴파일하면 xx.class 파일이 되고 이 class 파일을 JVM이 컴퓨터에서 실행 되도록 만들어 진것이지요.

xx.java 는 단순 텍스트 파일입니다. 이것을 컴파일하면 class 가되는데 이 파일은 JVM(자바 가상 머신 java virtual machine)이 알아들을수 있는 파일입니다. OS 에서는 바로 동작하지 않습니다. 그래서 중간에 JVM이 필요하지요.  이 JVM때문에 자바가 이식성이 좋다는 것입니다. OS 가 unix 든 window 든 linux든 상관 없이 JVM만 설치가 되어 있으면 동일 환경이 되므로 (버전은 조심해야함) 한번 class 로 만들어진 파일은 어느 OS에서도 동작이 가능합니다.

이런 java 는 SE (Standard Edition) 이 처음 나오게 되었고 제가 알기로 EE( Enterprise Edition) 흔히 EJB라고 불립니다. 그다음에 ME ( Micro Edition) 모바일용이 나온것으로 알고 있습니다. SE,EE,ME 는 다 다른 것이 아니라 모두 동일하지만 API가 크냐 작냐 정도로 여기시면 됩니다.
이름에서도 알수 있듯이 ME 제일 많이 사용하고 가장 기본이 되는 SE 를 배우시는게 도움이 많이 되실겁니다.

그 다음에 대부분 JSP 가 나오구 Servlet 이 나온거로 말씀하시는데... Servlet 이 먼저 나왔습니다. Servlet 이란것은 원래 Java 로 만든 프로그램 들끼리 통신할때(관리용)으로 용이하게 하기위해서 생겨난 것으로 알고 있습니다. 어떤 요청를 보내면 결과를 보내주는것이지요.

그런데 그 구조가 http 와 동일 하기때문에 Servlet 을 확장해서 HttpServlet 을 만들게 되었습니다.

그렇기 때문에 초기 Servlet 개발은 많은 노력이 필요했습니다. 디자이너가 준 html를 모두 java 파일로 만들어서 컴파일해서 서버에 등록을 해야 하니까요. 문제는 디자인이 변경되면 개발자가 죽어 나는것이지요.

그래서 나온것이 JSP(Java Server Page)입니다 JSP 는 asp 나 php 와 거의 비슷한 문법과 구조를 가지고 있지습니다. 기존에 개발하던 사람들이 jsp 로 전향하기가 많이 좋아졌지요. jsp를 작성하면 jsp 를 처리하는 웹서버가 자동으로 Servlet 으로 ( java 파일로) 바꾸어주고 컴파일도 자동으로 하고 서버어도 자동으로 등록을 해줍니다. Serlvet 으로 개발하던 사람들에게는 축복이었지요. 지금은 속도도 많이 개선되었고 좋아졌습니다.

그리고 MVC 라는 것이 나왔는데 M: Model V:View C:Controller 가 맞습니다.

MVC개념은 무엇인지 말씀드리면 asp 와 php 를 해보셨다면 아시겠지만 asp, php 에보면 html 태그와 프로그램 소스가 혼용되어 들어 있습니다 그러니까 if , for 와 같은 프로그램과 < table > < font > < br >
와 같은 출력용 데이터가 공존 하는것이지요. 그래서 디자이너가 작업을 해서 개발자에게 주면 개발자가 밤을 세고 (물론 디자이너고 고생이지만) 중간에 라인이 빠졌다는둥 해서 싸움이 일어나지요..^^ 암튼 디자이너가 작업을 하고 기능이 추가되지도 않았는데 꼭 개발자 손을 거쳐야 했습니다. 그래서 그 2개를 찠어 버린것이지요.

말그대도 V 는 보여지는 놈이지요. java기반에서는 jsp 가 이부분을 담당하지요.

이때 jsp 에서는 어떤 프로그램 코드도 들어있지 않습니다. 약간의 제어를 위한 TLD( 개발자가 만든 태그
 과 같은 태그를 개발자만 만들수 있습니다)만 있지요. 다시 말해서 디자이너가 직접 jsp 를 수정해서 화면을 재구성할수 있습니다. 요즘나오는 홈싸이트,드림위버(같은건가?) 등에서는 tld 도 지원하는 것으로 알고 있습니다. 개발자는 C 만 만들어 놓으면 되지요. 물론 DBA가 없다면 M 부분도 손을 대야 하겠지만요. C 는 데이터 가공. M 는 원본 데이터라고 보시면되겠습니다. 데이터가 있고 그것을 가공하고 보여주는 3단계를 구분한것이지요. 디자인이 바뀌어도 개발자가 일찍 집에 갈수 있는 방법이 생긴것이지요.

EJB는 위에서 말한것들 + 알파 가 추가된것입니다. EJB에서 웹서비스는 한개의 서비스에 지나지 않습니다. 그래서 덩치가 무지크고 말그대로 느리지요. 그리고 개발또한 무쟈게 복잡합니다. 현재 EJB가 쓰이지 않는 이유는 여러가지가 있지만 개발기간이 너무 긴것이 제 생각으로는 가장 단점인거 같습니다. 가장 간단히 EJB를 설명하면 기존에 나와있는 모든 서버를 한곳에 넣고 돌릴수 있는 환경을 제공하는 프로그램이라고 보시면 될거 같습니다.

EJB를 지원하는 프로그램은 상당히 고가였지요. 지금은... 많이 싸졌다고 하는데... 얼마인지는.... 가장 대중적인 weblogic 이 한 4년전에 cpu당 2천 만원쯤 했답니다.

마지막으로

공부하시고 싶으시면

java > servelt > jsp > MVC > EJB

MVC는 java 가 아니더라도 적용할 수 있는 부분이 많습니다 MVC를 적용한 대표적인 웹프레임웍은 Struts 가 있습니다.

도움이 되시길....

=====================================================================================
EJB가 속도때문에 비효율적이라는 단점의 말은 많은 의견차이로 댓글이 올라와있었다.
그리고 배우는 순서도.. 사람의 성격에 따라 다르지 않을까?
여기서 많은 의견의 차이가 왔는데, 정확한 답변이라고 보기에는
이것들을 능숙하게 다를줄아는 기술의 차이에서 있지 않나 싶다.