일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Spring
- sagan
- 계획은없음
- fork
- 개선하기
- MVC
- entity
- 공부하기
- POST
- response
- upstream
- data
- 스프링
- Request
- 개념잡기
- 프레임워크
- synchronizing
- 공부
- 문제해결
- 따라하기
- JPA
- renderer
- Controller
- javaserverpage
- 홈페이지
- 너무재미꼬
- git
- Github
- 개념정리중
- 삽질잼
- Today
- Total
메모장
JSP 개념 잡기[1/N] 본문
■ intro
JSP ;Java Server Pages
Servlet을 공부하면서 같이 알아보았다.
예전에 Django를 공부하면서 프론트도 같이 공부했었는데,
jsp를 보긴 했지만, 한번도 공부하거나 사용해보진 않았다.
이번에 Spring을 공부하다보니, Java EE에 대해서 전체적으로 공부하게되었고,
자연스럽게 관련된 기술들을 알아보는 중이다.
■ JSP
JSP 역시 Sevlet과 함께 Dynamic Page를 개발하는데 필요한 기술이다.
지금까지 JSP를 스크립트 언어로 인지하고 있었는데, 차이가 있는건가 싶다.
Oracle의 JSP관련 페이지에서 Technology라는 표현을 하고 있고,
영문 위키에서도 … JavaServer Pages is a technology … 라는 표현을 하고 있다.
다만, 한국 위키에는
"자바 서버 페이지는 HTML내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 돌려주는 언어이다."
라고 표현하고 있다.
뭐 어쨌든, Dynamic Page를 개발하는데 필요한 기술임은 확실하다.
■ Diff with Servlet
그렇다면, 마찬가지의 목적을 두고 사용하는 Servlet과 무엇이 다른가?
- Servlet : HTML 문서 안의 Java Code
- JSP : Java Code 안의 HTML
두 차이라고 하는데, 솔직히 처음 접할 때에는 예제를 같이 봐도 이 두 차이가 무엇을 의미하는지는 몰랐다.
- 정확히 내가 뭘 모르는지를 몰랐다.
여기저기 찾아보고 이해한 내용을 정리 해보자면,
- 두 기술을 사용하는 목적은 “Dynamic Page”를 구현하는 것으로 같다.
- 그렇다면 어떻게 구현하는지에 차이점이 있다는 것이다.
- JSP는 Client(사용자)에게 보여지는 것이고, Servlet은 보이지 않는다.
- JSP는 말 그대로 Page이다.
- Servlet은 서버 사이드에서 (스레드에서) 작동하는 Program이다.
사실, 두 기술을 분리하여 보는 것은 의미없는 것 같다.
영문 위키를 참조하면
"Architecturally, JSP may be viewed as a high-level abstraction of Java Servlets. JSPs are translated into servlets at runtime, therefore JSP is a Servlet; each JSP servlet is cached and re-used until the original JSP is modified"
발번역을 해보면,
"구조적으로, JSP는 Java Servlet의 높은 수준의 추상화로 보여질 수 있다.(간주될 수 있다.) JSPs는 runtime에서 Sevlet으로 변환된다. 그러므로 JSP는 Servlet이다. (각 JSP Servlet은 기존의 JSP가 수정되기 전까지 기억되고, 재사용된다.)"
- Oracle 에서도 같은 표현을 하고 있다.
■ How
"When a JSP page is called, it will be compiled (by the JSP engine) into a Java servlet. At this point the servlet is handled by the servlet engine, just like any other servlet.
The servlet engine then loads the servlet class (using a class loader) and
executes it to create dynamic HTML to be sent to the browser, as shown in Figure 1.
The servlet creates any necessary object, and writes any object as a string to an output stream to the browser."
- Oracle 참조
> 발번역
1. JSP Page가 불려지면, JSP engine에 의해 Java Servlet으로 컴파일 된다.
2. Servlet은 Servlet engine에 의해 제어된다.
3. Servlet engine은 servlet class를 불러운 뒤, 브라우저로 전송시킬 동적인 HTML을 생성하기위해 실행 시킨다.
4. Servlet은 필요한 객체를 생성하고 문자열로 객체를 브라우저의 output stream에 쓴다.
> 해석
1. Client에 의해 JSP Page가 불려진다. (.jsp)
2. JSP Engine에 의해 Java Servlet으로 컴파일 된다. (.class)
3. Servlet engine은 servlet class를 load하여 실행한다.
4. Servlet은 객체를 생성하고, 결과를 만든다. (동적인 HTML 생성)
■ Summary
Dynamic Page를 만드는데 사용한다.
HTML 안에 Java Code가 있는 형식이다. (.jsp)
Client는 해당 파일 실행 요청을 한다.
이후, 해당 Java code는 해석된다.
즉, 이미 정의된 어떤 문서를 넘겨주는 것(Static page)과는 다르게
Runtime에서 해석되므로 입력에 대한, 사용자마다 다른 객체를 포함한 문서를 넘겨줄 수 있다.
■ Feedback
Java Enterprise Edition에 대한 공부로 빠지고 있는 것 같다.
스프링도 공부해야하는데,,.
아니 이게 공부하는거 맞겠지?
아 그리고, 처음에 Servlet과 다르다는 것을 신경쓰면서 공부했는데,
점점 그 둘을 비교하는 것엔 큰 의미가 없다는 것을 느꼈다.
다르면서도 같다고 생각한다.
이 둘의 차이점을 이해하려고 노력하는 것보다
전체적인 J2EE에 대한 이해가 먼저인 것 같다.
아직 멀었다.
영어 공부 해야겠다. :(
'공부 > Spring-Study' 카테고리의 다른 글
Spring Controller - Post Request & URL Response (0) | 2019.08.03 |
---|---|
Spring data JPA (0) | 2019.07.29 |
Servlet 개념 잡기[1/N] (0) | 2019.07.23 |
MVC 개념 잡기[1/N] (0) | 2019.07.20 |
스프링 개념 잡기[1/N] (0) | 2019.07.17 |