-
JSP란?프로그래밍 기초 공부 2022. 10. 17. 01:14
열여덟 번째로 포스팅하게 될 내용은 JSP에 대한 내용입니다.
[ JSP란? ]
- JavaServer Pages 의 약자
- HTML 코드에 JAVA 코드를 넣어 동적웹페이지를 생성하는 웹어플리케이션 도구
- JSP는 Servlet 기술의 확장형이라고 볼수 있음
- Servlet을 보완한 스크립트 방식 표준으로, Servlet의 모든 기능 + 추가적인 기능 을 가짐
[ JSP의 특징 ]
- JSP를 통해 정적인 HTML과 동적으로 생성된 contents(HTTP 요청 파라미터)를 혼합하여 사용할 수 있음
즉, 사용자가 입력한 contents에 맞게 동적인 웹 페이지를 생성 - JSP 가 실행되면 자바 서블릿(Servlet) 으로 변환되며 웹 어플리케이션 서버에서 동작되면서 필요한 기능을 수행함
- 그렇게 생성된 데이터를 웹페이지와 함께 클라이언트로 응답해줌
- 서블릿의 단점을 보완하고자 만든 서블릿 기반의 스크립트 기술
- JSP 는스크립트 언어이기 때문에 자바 기능을 그대로 사용할 수 있음
- JSP로 Thred 기능을 써서 클라이언트가 요구하는 메모리를 최초 한 번만 로드하여서 다른 사용자가 같은 메모리를 원한다면 Thred가 재사용되어 Response
- 사용자 정의 태그(custom tags)를 사용하여, 보다 효율적으로 웹 사이트를 구성할 수 있음
- JSTL(JSP Standard Tag Library, JSP 표준 태그 라이브러리)사용
- HTML 코드 안에 Java 코드가 있기 때문에 HTML 코드를 작성하기 쉬움
- HTML 속에서의 자바 코드는 <% %> 사이 혹은 <%= =%> 형태로 들어감
- Servlet과 다르게 JSP는 수정된 경우 재배포할 필요 없이 Tomcat(WAS)이 알아서 처리함
- 자바소스코드로 작성된 부분은 웹 브라우저로 보내는 것이 아니라 웹 서버에서 실행되는 부분으로 웹 프로그래머가 소스코드를 수정할 때도 디자인 부분을 제외하고 자바소스코드만 수정하면 되기 때문에 효율이 증가
- 컴파일 과정을 할 필요없이 jsp 페이지를 작성해서 디렉토리에 추가만 하면 사용이 가능
- JSP는 WAS(Web Application Server)에 의하여 서블릿 클래스로 변환하여 사용
[ 자바 서블릿(Java Servlet) ]
서블릿이란 웹페이지를 동적으로 생성하기 위해 서버측 프로그램을 말함
이는 자바 언어를 기반으로 만들어지며 웹 어플리케이션 서버 ( Web Application Sever ) 위에서 컴파일 되고 동작함[ servlet 과 JSP의 차이 ]
JSP 와 서블릿의 차이점은 결과적으로 하는일은 동일하지만
JSP 는 HTML 내부에 JAVA 소스코드가 들어감으로 인해 HTML 코드를 작성하기 간편하다는 장점
서블릿은 자바코드내에 HTML 코드가 있어서 읽고 쓰기가 굉장히 불편하기 때문에 작업의 효율성이 떨어짐Servlet
- Java 코드 안에 HTML 코드 (하나의 클래스)
- data processing(Controller)에 좋음
- DB와의 통신, Business Logic 호출, 데이터를 읽고 확인하는 작업 등에 유용
- HTML태그로 문자열("")스크림으로 처리해야 함
- Servlet이 수정된 경우 Java 코드를 컴파일(.class 파일 생성)한 후 동적인 페이지를 처리하기 때문에 전체 코드를 업데이트하고 다시 컴파일한 후 재배포하는 작업이 필요함 -> 개발 생산성 저하
JSP
- HTML 코드 안에 Java 코드
- presentation(View)에 좋음
- 즉 요청 결과를 나타내는 HTML 작성하는데 유용
- JSP가 수정된 경우 재배포할 필요가 없이 WAS가 알아서 처리해줌 -> 쉬운 배포
- 키워드가 태그화 되어 서블릿에 비해 배우기 쉬움
[ JSP만을 이용하는 모델 ]
- JSP가 사용자의 요청을 받아 Java Bean(DTO, DAO)을 호출하여 적절한 동적인 페이지를 생성
- 동작 과정
- JSP로 작성된 프로그램은 내부적으로 WAS에서 Servlet 파일로 변환
- JSP 태그를 분해하고 추출하여 다시 순수한 HTML 웹 페이지로 변환
- 클라이언트로 응답
- 특징
- 개발 속도가 빠르다.
- 배우기 쉽다.
- 프레젠테이션 로직(View)과 비즈니스 로직(Controller)이 혼재한다.
- JSP 코드가 복잡해져 유지 보수가 어려워진다.
[ JSP와 Servlet을 모두 이용하는 모델 (MVC Architecture) ]
- JSP와 Servlet을 모두 사용하여 프레젠테이션 로직(View)과 비즈니스 로직(Controller)을 분리
- View(보여지는 부분)는 HTML이 중심이 되는 JSP를 사용
- Controller(다른 자바 클래스에 데이터를 넘겨주는 부분)는 Java 코드가 중심이 되는 Servlet을 사용
- Model은 Java Beans로, DTO와 DAO를 통해 Mysql과 같은 Data Storage에 접근
[ JSP에서 동적인 코드를 호출하는 6가지 전략 ]
- Call Java code directly
- Java 코드를 직접 호출
- 모든 Java 코드를 JSP 페이지에 넣음
- 아주 적은 양의 코드에만 적합한 전략
- Call Java code indirectly
- Java 코드를 간접적으로 호출
- 별도의 utility class(Java Class)를 작성
- utility class를 호출하는 데 필요한 Java 코드만 JSP 페이지에 넣음
- Use beans
- beans로 구조화된 별도의 utility class(Java Class)를 작성
- jsp:useBean, jsp:getProperty, jsp:setProperty를 사용하여 utility class를 호출
- Use the MVC architecture
- MVC 아키텍처를 사용
- Servlet(Controller)이 요청에 응답하고 적절한 데이터를 검색하여 결과를 beans(Model)에 저장
- 위의 결과를 JSP 페이지(View)로 전달하여 결과를 표시
- 즉, JSP 페이지는 bean을 사용
- Use the JSP expression language
- shorthand syntax를 이용하여 간단하게 객체 속성(property)에 접근하고 출력
- 즉, jsp:useBean, jsp:getProperty, jsp:setProperty를 expression language으로 간단하게 표현할 수 있음
- 일반적으로 beans, MVC 패턴을 함께 사용
- Use custom tags
- tag handler class를 만듦
- XML과 같은 사용자 정의 태그(custom tags)를 사용하여 태그 핸들러를 호출
'프로그래밍 기초 공부' 카테고리의 다른 글
MPA와 SPA란? (0) 2022.10.29 AJAX란? (0) 2022.10.17 CGI란? (0) 2022.10.14 HeidiSQL(하이디 SQL)이란? (0) 2022.10.10 Servlet이란? (0) 2022.10.10