차근차근/JAVA JSP

java controller , java servlet 차이??

예쁜꽃이피었으면 2014. 7. 26. 01:27

 

나는 질문을 할 때 단순하게 자바파일이라고 말을 하는데

상대방은 어떤 자바파일인지를 묻는다..

걍...      .java로 된 파일을 말한건데.. 뭐가 다른가.ㅜㅠ

 

 

java controller , java servlet 차이??

 

java servlet은

http://javafactory.tistory.com/32

 

- 자바 프로그램이 서버의 역할을 할 수 있도록 하는 확장

- 보안성이 있고, 이식가능하며 사용이 쉬워서 CGI를 대체한다.

- 웹 서버의 요청에 따라 동적으로 모듈을 불러 들인다.

- JVM에서 작동(당연)

- 서버측에서 실행되기 때문에 브라우저를 가리지 않는다.(당연)

 

 

 

http://seodh007.tistory.com/10

-  자바 플랫폼에서 컴포넌트를 기반으로 한 웹 어플리케이션을 개발할 때 사용하는 핵심기술이다.

이러한 서블릿을 이용하면 웹 어플리케이션 확장이 용이하고 플랫폼 독립적인 개발이 가능하다

- 서블릿은 JSP에서 컨텐츠와 비즈니스 로직을 분리한다.

JSP가 텍스트 파일 구조인데 비해 서블릿은 자바 클래스 구조이다.



 

 

서블릿이란

 

서블릿은 자바 플랫폼에서 컴포넌트를 기반으로 한 웹 애플리케이션을 개발할 때 사용하는 핵심 기술입니다.

이러한 서블릿을 이용하면 웹 애플리케이션 확장이 용이하고 플랫폼 독립적인 개발이 가능합니다.


서블릿은 JSP 에서 컨텐츠와 비즈니스로직을 분리합니다다.

JSP가 텍스트 파일 구조인데 비해 서블릿은 자바 클래스 구조입니다.

 

장점

1) 스레드를 기반으로 하기 때문에 웹 애플리케이션 운영에 효율적이다.

2) 자바를 기반으로 하므로 자바 API 를 모두 사용할 수 있다.

3) 운영체제나 하드웨어에 영향을 받지 않으므로, 한번 개발된 애플리케이션은 다양한 서버 환경에서 실행가능

4) 웹 애플리케이션에서 효율적인 자료 공유 방법을 제공한다.


웹 애플리케이션 개발시 서블릿 이용의 장점

1) 컨텐츠와 비즈니스 로직을 분리

2) 컨트롤러와 뷰 역할 분담으로 인해 웹 디자이너와 개발자간의 원활한 작업이 가능.

3) 유지보수가 수월, 기능 확장이 용이하다.

4) 현재와 같이 프로그래머가 HTML 자바스크립트 스타일시트와 같은 복잡한

기술을 모두 알아야 할 필요는 없다.

5) JSP 에 HTML, CSS, 자바스크립트와 자바 소스 코드가 뒤섞이는문제를 막는다.


서블릿 컨테이너

서블릿 구조에서 가장 큰 특징은 서블릿 컨테이너라 할수 있습니다.

웹 서버는 서블릿 자체를 실행하지 못하므로 JVM을 내장한 컨테이너라는 서블릿 실행환경이 필요합니다.


동작과정

1) 웹 서버는 클라이언트 요청을 컨테이너로 전달한다. 컨테이너는 서블릿이 메모리에 있는지 확인하고 없을시 클라이언트 요청을 처리할 스레드를 생성해서 처리한다.

2) 서블릿은 JDBC 를 이용해 데이터베이스에 접근할 수 있고, 별도로 제작된 자바 클래스를 통해 다양한기능 구현

3) 서블릿에서 수행된 결과는 HTML 형식으로 클라이언트에 전달된다.


둘다 java언어로 만드는 것인데 이름이 비슷해서 헷갈리죠^^;;

둘 다 단순한 HTML문서를 자바프로그래밍을 이용하여 확장을 시킨 것이라 볼 수 있습니다.

애플릿(applet)은 하나의 완성된 자바프로그램입니다. 자바가상머신(jvm)만 있으면 컴퓨터에서 실행을 시킬 수 있죠. 보통 웹페이지안에 들어있는 자바프로그램을 애플릿이라고 부릅니다.

이해하기 쉬운 예로 들면, 플래쉬가 있는 웹페이지를 생각해보죠. 그 페이지를 실행시키면 플래쉬가 실행됩니다. 브라우저안에 플래쉬 실행하는 기능이 플러그인되어있기 때문에 사용자는 이것이 어떠한 원리로 실행되는지 알 필요 없이 실행되는 것만 보면 되죠~

 

애플릿도 동일합니다. 웹페이지안에 들어있기 때문에, 그 페이지를 실행시키면, 자동적으로 실행되는 애플릿을 볼 수 가 있습니다. 애플릿은 완전한 자바프로그래밍이기 때문에 확장성이 엄청나죠. 프로그래밍에 따라서 무척 많은 것들을 사용자에게 보여줄 수 있습니다.

 

서블릿(servlet)도 하나의 자바프로그램이긴 한데, 서블릿의 주된 업무는 사용자에게 정보를 입력받아 적절한 HTML문서를 돌려주는 역할을 합니다. 이러한 일을 하는 프로그램을 자바로 구현한 것이죠. 사용자의 입력에 따라서 다른 HTML문서를 만들어내므로 동적인 HTML문서를 구현할 수가 있게 되는 것이죠. 서블릿은 서블릿규격에 맞게 구현해야합니다. 구현해야하는 함수들이 미리 지정되어있죠. 그리고 서블릿은 서블릿 컨테이너라는 기능이 있어야지 실행이 됩니다. Tomcat이나 Resin등의 프로그램인데 이는 서버에 있어야하는 것이므로, 사용자 입장에서는 신경을 쓰지 않아도 되죠~

CGI라는 것이 사용자의 입력을 받아서 동적인 HTML문서를 만드는 기능을 하는 것인데, 서블릿도 일종의 CGI라고 볼 수도 있습니다. 자바로 구현한 CGI 말이죠. 하지만, 자바의 특성으로 인하여 기존의 CGI보다 훨씬 향상된 성능을 나타내게 되죠.

서블릿 규칙은 꽤 복잡합니다. 따라서 이를 좀더 쉽게 프로그래밍하기 위하여 나온 것이 JSP이죠. JSP문서를 실행시키면 이 문서가 자동적으로 서블릿으로 컴파일되어 실행되게 됩니다.

 

□ 애플릿(Applet)에 대해 설명을 드리겠습니다.

애플릿은 어플리케이션과 비교하여 이해할 수 있습니다.
자바 어플리케이션은 자바버츄얼머신(JVM)이 있는 환경이라면 실행할 수 있는 독립적인 프로그램입니다.

다음과 같이 실행할 수 있습니다.

java 클래스이름

반면, 애플릿은 웹브라우저에서만 실행할 수 있는 프로그램입니다. HTML 문서의 <applet> 태그에 지정된 클래스를 서버로부터 다운받아 클라이언트의 브라우저에서 실행되는 원리이죠. 정적 웹 문서에 동적인 컨텐츠를 제공할 수 있습니다.

 

□ 서블릿(Servlet)은 서버에서 실행되는 애플릿이라고 이해할 수 있습니다.

애플릿이 클라이언트에서 실행되는 반면, 서블릿은 서버에서 실행되고 그 결과만이 클라이언트에 보내지는 것이 둘 사이의 차이점입니다.

서블릿을 Java로 구현된 CGI(Common Gateway Interface)로 많이 이야기합니다. 하지만 서블릿과 CGI 사이에는 성능상의 큰 차이점이 있습니다. CGI는 각각의 클라이언트의 호출에 대해 프로세스(process)를 생성합니다. 그러나 서블릿은 최초 호출에서 만들어진 프로세스를 사용하여 쓰레드(thread)를 생성하여 각각의 클라이언트에게 서비스를 제공합니다.

이러한 이유로 웹 유저들의 수가 많으면 많아질수록 서블릿이 CGI에 비해 월등한 성능의 우위를 보이는 것이고, 많은 웹 사이트에서 동적 콘텐츠 생성을 위해 서블릿을 사용하는 것입니다.


보통 서블릿 서버, 서블릿 컨테이너, JSP 컨테이너, 웹서버 라는 등등의 말을 많이 사용합니다. 그렇지만 실제로 각각에 대한 정확한 의미를 알고 있는 경우는 드문데 각각의 의미를 살펴보면 다음과 같습니다.

서블릿서버 : 현재는 거의 사용되지 않는 말입니다. 공식적으로 사용되는 단어라기 보다는 우리나라에서 관습적으로 사용이 되고 있는 의미로 서블릿을 돌릴 수 있는 서버라는 의미입니다. 실제로 서블릿 컨테이너라는 말을 사용하는 것이 좋습니다.

(초기에는 서블릿을 돌리기 위해서 아파치 등에 모듈로 연동을 해서 사용을 했기 때문에 이런 말이 생겨난 듯 합니다.)

 

서블릿 컨테이너 : 서블릿을 동작 시킬수 있는 환경을 제공하는 서버 프로그램입니다. 즉 HTTP 요청을 받아서 해당 서블릿을 동작을 시키고 그 결과를 사용자의 브라우저로 전달을 해줄 수 있는 기능을 제공합니다.

보통 컨테이너라고 하는 이유는 서블릿 프레임워크 안에서 동작을 하고 서블릿이 동작할 수 있는 환경을 제공해주며, 기타 필요한 작업등을 제공해주기 때문에 그렇게 얘기를 합니다. 즉 HTTP 파라미터 파싱 및 결과 전달 컨트롤, Forwarding, Redirecting 등의 기능을 컨테이너에서 제공을 해줍니다.

이때 서블릿 개발자는 자신이 만든 서블릿을 이 컨테이너에 등록을 하게 되고, 실제 동작을 컨테이너가 알아서 하게 되기 때문에 사용되는 언어입니다.

 

JSP 컨테이너 / 엔진: 실제로 JSP 컨테이너의 의미는 서블릿 컨테이너의 개념과 동일합니다. 그렇지만 조금 자세히 보면 실제로 JSP 컨테이너라는 것은 별도로 존재하지 않습니다.

실제로는 서블릿 컨테이너가 JSP 컨테이너가 됩니다. 그 이유는 JSP는 PHP/ASP와 같이 완전히 스크립트 형식으로 동작하지 않고 서블릿으로 변환이 된 이후에 실행되기 때문입니다.

그리고 JSP를 서블릿으로 컴파일을 해주는 것이 바로 JSP 엔진입니다. 다른 프로그램은 잘 모르겠지만 톰캣의 경우에는 JSP엔진이 바로 JSPServlet 입니다. 즉 JSP를 컴파일하고 동작을 시켜주는 것을 특정 서블릿이 담당하고 있습니다. 여기서 보면 JSP 자체가 완전한 서블릿으로 컴파일 되지 않는 다는 것을 알 수 있습니다.

즉 JSPservlet이 구동 할 수 있는 형태의 서블릿으로 바뀌게 됩니다. 그런 의미에서 보면 별도의 JSP 컨테이너가 있다고 할 수도 있을 것 같습니다.

 

웹서버는 클라이언트/서버 모델과 웹의 HTTP를 사용하여 웹 페이지가 들어 있는 파일을 사용자들에게 제공하는 프로그램입다.

- 웹서버와 JSP컨테이너는 별개라고 할수도 아니라고 할수도 있습니다.

대부분 JSP로 만들어진 사이트는 웹서버와 JSP컨테이너를 탑재하고 있는 WAS를 연동해 사용하기 때문입니다.

쉽게 말하면 웹서버가 하는 일은 html,img등 일반 웹문서를 사용자에게 보여주는 역할만을 하지만, JSP컨테이너를 탑재하고 있는 WAS(Web Application Server)는 JSP를 컴파일하여 실행한 결과를 html으로 만들어 보여줍니다.
웹서버만 구축되어 있는 서버는 웹페이지,이미지,영상등을 전달해 줄수는 있지만,JSP페이지를 컴파일해 동적인 페이지를 생성하지는 못합니다. 이를 위해서는 JSP컨테이너가 탑재되어 있는 WAS가 필요한 것입니다.
웹서버는 웹문서를, WAS는 JSP 페이지를, 이런식으로 양분하여 역할분담을함으로 서버에 부담되는 양을 줄이고자 함입니다.

 

_M#]

 

 

 

 

 

 

 

java controller는

스프링 컨트롤러? mvc모델할 때  컨트롤러? 인듯.

 

 

 

 

 

내가 java파일에서 alert어떻게 띄우는지를 질문했고

그 답변중에 java파일이 컨트롤러냐 서블릿이냐는 질문을 받고 일단 컨트롤러라고 대답은 했지만 찜찜해서

이글을 쓰던중에

질문을 잘했어야 한다는 것을 알았다.

구글에 아무리 java에서 jsp로 값 넘기기

java에서 alert띄우기를 쳐봐도 만족할 만한 대답도 없을 뿐더러

올라온 글도 없었는데

지금 이글을 쓰면서 검색해보니.

스프링 controller에서 alert띄우기라는 글들이 많이 있다는 것을 알았다.

역시..질문을 잘했어야 원하는 답을 얻을수 있었는데..

아직 많이 모자란가보다.

음. 암튼 다시 구글링 해봐야겠다!!!!

반응형

'차근차근 > JAVA JSP' 카테고리의 다른 글

인터페이스 interface  (0) 2014.07.26
is a 와 has a  (0) 2014.07.26
request , response  (0) 2014.07.26
JNI 기초  (0) 2014.07.26
if문 equals / ==  (0) 2014.07.26