서블릿이란? 자바빈이란?

JSP : 2007. 6. 18. 17:23
반응형

자바를 공부하는 사람입니다.


자바를 공부하다가 서블릿과,자바빈의 개념이 헷갈려서 질문드립니다.


MVC패턴에서 서블릿은 컨트롤러의 역할을 하고 JSP는 뷰의 역할을 하는것으로 알고 있는데 그럼 서블릿으로 자바빈으로 메소드처럼 호출해서 쓰는건가요?


자바빈이랑 서블릿의 느낌이 비슷하게 다가와서 이런 허접한 질문을 드립니다.


고수님들의 많은 조언 부탁드립니다


질문자가 선택한 답변 -->
re: 서블릿이란? 자바빈이란?


안녕하세요^^
현제 경력2년차의 JAVA프로그래머 입니다.

제가 간략히 설명을 드릴께요...
솔직히 백문이 불여일견이라고... 직접 코딩을 몇번 해보시면 금방 이해하실껍니다.
아니면 소스를 보셔도 이해가 빠를꺼구요...
제가 설명뿐이 못해드리는게 아쉽네요.


우선 질문자님의 글을 읽어 보니 서블릿이 먼지는 잘아시는것 같네요...
그래도 서블릿을 요약해보자면.... 서블릿은 한마디로 class죠....
간략히 특징을 보자면... servlet은 자체가 오로지JAVA문법을 사용하기 때문에 자유롭게 객체 생성 및 사용이 가능하죠.
또한 jsp페이지에서 어떠한 이벤트 발생시 servlet으로 페이지를 넘기는것이 가능하죠.
즉, 하나의 보여지는 페이지로서의 기능도 할수 있습니다.
그런데 문제는... 소스가 화면에 직접나오다 보니... 보안상 굉장히 불안합니다.
Web소스와 java소스가 노출되는것은 엄현히 틀립니다.
또한 서블릿의 객체를 생성하려면.... import도 하고 생성도 합니다.
그러다 보면 자연스레 많은 자바 코드가 들어가게 되죠.
그렇게 되면 웹의 특성상 기능과 디자인의 코딩이 틀린데요...
특히 디자이너들 같이 소스를 모르는 사람들이 디자인 수정을 하기가 어렵죠.
그리고 테그와 java소스로 인해 코딩 자체도 지저분하게 되고...
그리고 무엇보다 jsp에서는 최대한 소스부분을 빼려고합니다.
그래서 jsp페이지에서는 최대한 java 코드를 줄여보자는 의미에서 여러가지 기법들이 나왔습니다.
그중에 자바빈도 나왔죠.


일단 자바빈이란...
보통 '빈즈'라고도 많이 합니다만....
jsp에서 객체를 가져다 사용못하니 기능이 아주 제한적이게 됩니다.
또 가져다 쓰자니 위에 언급한거와 같이 소스가 지저분해지고 디자이너가 수정하기도 어렵습니다.
그래서 jsp에서 객체를 가져다가 사용할수 있도록 한 기법이 자바빈입니다.
(jsp:useBean id="dbpool" class="oracle.ec.bean.DBObject" scope="page")(/jsp:useBean)
보통은 위와 같은 방식으로 사용합니다.
이렇게 하면 oracle.ec.bean.DBObject를 dbpool이란 이름으로 객체처럼 사용이 가능하죠.
scope옵션은 사용기간, 혹은 범위라고 이해하시면 됩니다. page에서만 사용하고 버린다는 뜻이죠^^
아무튼 자바빈에서는 위에 적힌데로 하면 import와 생성이 아라서 되죠.
지저분한 코드없이 객체를 가져다 쓸수 있는겁니다.


왜? 지저분한 소스, 자바 코드를 없엘까?


솔직히 서블릿으로 직접코딩해도 페이지는 나옵니다. 구지 jsp가 없어도 화면 및 기능 다 나오죠^^;
그리고 개발자 입장에서 소스가 지저분 하던 말던 상관 없습니다 ㅡㅡ;;
하지만 서블릿 페이지로 직접코딩하면 디자인뿐만 아니라 코딩 자체도 솔직히 어렵습니다.
직접 서블릿 페이지로 코딩을 해보셨다면 아실껍니다.
전 서블릿으로 코딩하다가 jsp로 코딩하면서 감동먹었습니다 ㅠ.ㅠ
아무튼 코딩을 보다 쉽게 하기 위해 나온것이 jsp입니다.
이때 jsp가 나오면서 웹페이지 형식으로 나온것이죠.
그러면서 썬에서 주장한것이... 자바 코드없이 자바의 기능은 사용할수 있는 웹페이지라고 소개했습니다.
솔직히 웹페이지에서 java소스가 보이는것이 상당히 보안으로도 안좋고 디자인작업시 커뮤니케이션이 안좋죠...
그래서 이런 주장을 한것 같습니다.
아무튼 이때부터 jsp에서 java소스를 제거하려는 sun의 노력이 많아진거죠^^



어떻게 보면 서블릿과 자바빈은 유사하게 보이나... 실질적으로는 많이 틀립니다.
jsp페이지가 어떻게 실행이 되는지는 아시죠?
내부적으로 톰켓이 jsp를 java로 변환하고 그것을 다시 컴파일 하여 class파일로 바꿔서 실행을 시킵니다.
그렇게 되면 페이지 자체가 class가 되는겁니다.
서블릿은 자체가 java로 되어잇어 그것을 class로 컴파일 하는것이죠...
즉, 서블릿에다가 앞에 한단계를 더 붙인것이 jsp죠^^
자바빈은 jsp에서 객체를 가져오기 위한 기법이구요...


부족한것이 있다면 쪽지나 메일주세요^^



useBean사용의 의미...

 

 

useBean 이라는 것은 임의의 클래스에 값을 보내서 결과값을 리턴 받는 것을 말한다.

따라서 패키지(클래스를 모아놓은)형태의 관리가 가능하다.

패키지에 클래스를 모아놓고 거기에 값을 보낸 후 결과를 가져와서 출력할 수 있다.

 

 

 

 

* 자바 빈

- 자바빈 규약에 따르는 클래스

- JSP프로그래밍에서 데이터들은 자바빈 클래스에 담아서 값을 보여주는 것이 일반적임...

 

*<jsp:useBean>액션태그

[문법] <jsp:useBean id="[빈이름]" class="[자바빈 클래스명]" scope="[범위]" />

- id: JSP페이지에서 자바빈 객체에 접근할 때 사용할 이름.

- class: 패키지 이름을 포함한 자바빈 클래스의 완전한 이름.

- scope: 자바빈 객체가 저장될 영역을 지정. page(기본값), request, session, application중 하나..

ex) <jsp:useBean id="info" class="패키지명.클래스명" scope="request" />

 



해야할 작업..

WEB-INF/classes 에 패키지로된 클래스파일들을 생성한다.ROOT에 jsp파일 을 만든다. 
반응형

'JSP' 카테고리의 다른 글

자바빈(Java Bean) 컴포넌트  (0) 2007.06.18
JSP 공부한것 요약  (0) 2007.06.18
[JSP] 세션을 이용한 로그인 처리  (0) 2007.05.03
Posted by Real_G