본문 바로가기
Dev/Java

JSP의 동작 원리

by 펭귄안에 온천 2022. 10. 3.
728x90
반응형

 

 

OKKY - java와 JSP 컴파일 시점 차이좀 알 수 있을까요?

java와 JSP 컴파일 시점 차이좀 알 수 있을까요?

okky.kr

OKKY와 이런글이 올라왔었다.

java와 JSP 컴파일 시점 차이좀 알 수 있을까요?

어떤분께서 JSP는 인터프리터라서 컴파일이 필요 없습니다. 라고 답변을 달아주셨다.

JSP는 언어도 아니고 인터프리터터도 아닌거같은데…

아니라고 반박하려면 나 먼저 알아야 하기 떄문에 한번 JSP란 무엇인지 정리해보자

 

 

# JSP(Java Server Page)

Java Server Page의 약자로

HTML내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성준다.

 

JSP가 실행되면 자바 서블릿으로 변환된 후 실행되므로 서블릿과 거의 유사하다고 볼 수 있다.

그러나 서블릿과 달리 HTML 표준에 따라 작성되므로 웹 디자인하기에 편리하다.

 

# 자바 서블릿(Java Servlet)

그렇다면 자바 서블릿은 뭘까?

자바 서블릿은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램이다.

 

 

# JSP , Java Servlet 의 차이

결과적으로 역할은 같지만 아래의 차이가 있다.

JSP : HTML 문서 안에 Java 코드를 포함
서블릿 : 자바 코드 안에 HTML을 포함

 

# JSP 동작원리

 

 

  1. 웹브라우저에서 JSP페이지를 웹 서버에게 요청
  2. 웹 서버는 JSP에 대한 요청을 JSP 컨테이너에 넘김 (요청이 처음이 아닐경우 메모리에 적재되어 있는 클래스 파일을 실행 - 5번으로 이동 )
  3. JSP 컨테이너는 해당 JSP를 찾아서 서블릿 파일(.java)을 새롭게 생성
  4. 서블릿 파일은 컴파일되어 서블릿 클래스 파일(.class) 을 생성 및 메모리에 적재
  5. 컴파일된(또는 메모리에 있는) 서블릿 클래스 파일이 클라이언트의 웹 브라우저로 응답
  6. 사용자 응답

정리 - 웹 브라우저 -> 웹 서버 -> JSP 컨테이너 -> .jsp ->.java ->*.class -> 웹 서버 -> 웹 브라우저

 

 

 

 

—————– 여기서부터는 개인적인 생각 —————–

# 어떻게 JSP를 다루어야 할까?

필자는 스트러츠, 스프링부터 기업 자체 프레임워크까지 많은 곳에서 JSP를 경험해봤다.

프레임워크를 설계할때는 프로젝트의 목적에 따라 다르겠지만

모든 코드를 JSP안에 다 떄려 박았던 프로젝트가 있었다.

Java파일 하나 없이 JSP 파일 안에 DB조회를 위한 JAVA코드 , sql쿼리문 ,

HTML , Javascript , Jquery , CSS 등 지저분하기 짝이 없었다.

 

설계자는 서버를 중단없이 수정된 소스를 반영하기 위해서 이렇게 설계했다고 했지만

코드를 읽기 너무 힘들었었다. 그렇다면 어떻게 JSP를 다루어야 할까?

 

1. JSP에서 자바코드는 최대한 지양하자

JSP의 HTML , Javascript, CSS에다가 Java까지 잡다한 언어들 다 들어가고

<% for( …..) %> , <% if …..%> , <%=userName%>와 같은 표현식과 Java코드 는

- 유지보수의 어려움
- 낮은 가독성
- 뷰와 비즈니스로직의 분리가 어려움
의 문제가 있었다.

그러니 JSP안에 비지니스 로직이 포함된 자바 코드는 최대한 지양하자.

 

JSP는 HTML , Javascript의 디자인적인 부분만 작성하자.

라는것에 필자의 의견이다.

 

 

2 . Java코드의 대체재 - JSTL

기존의 <% for( …..) %> , <% if …..%> , <%=userName%>와 같은 표현식과 Java코드 대신 JSTL을 사용하자

JSTL (JavaServer Pages Standard Tag Library)

자바서버 페이지 표준 태그 라이브러리 약칭 JSTL은

HTML코드 내의 Java 코드인 <%=userName> , <%for(int i=0…….%>을 대체하여 사용된다.

 

 

# 정리

HTML내의 Java코드를 적기 위한 것이 JSP이지만

낮은 가독성과 , 유지보수 및 뷰,비즈니스로직의 분리의 어려움 등으로

JSP의 Java코드는 지양하자.

반응형

'Dev > Java' 카테고리의 다른 글

JNDI, JDBC, DBCP  (0) 2022.10.03
Java 컴파일  (1) 2022.10.03
JDK vs JRE  (0) 2022.10.03
Int VS Integer  (0) 2022.03.30
Mac에서 JDK설치 및 환경변수  (0) 2021.07.03