- JSP의 등장배경
서블릿을 통해서도 웹 구현이 얼마든지 가능하지만, 점차적으로 화면 구성을 좀 더 사용자에게 편의하게 구성하는 것의 필요성이 높아지면서 코드가 복잡해지게 되었다. 이에 자바 코드 안에 HTML 코드를 작성하는 서블릿 코드의 방식으로는 코드의 복잡함이 해소되기가 어려운 것으로 판단되어 JSP가 등장하게 되었다. JSP는 서블릿이 자바 코드를 HTML로 일일이 개발자가 다시 작성하는 역할을 대폭 줄여주었고, 또한 사용자에게 보여질 화면 구성의 디자인을 담당하는 디자이너로서도 복잡한 개발 코드를 보는 것보다 직접 담당하는 HTML, CSS, JS의 코드를 직접적으로 보고 작성할 수 있는 JSP가 훨씬 편리하게 다가오게 되어 JSP는 웹을 구현하는 데 있어 큰 역할을 차지하게 된 것이다.
- JSP의 작동 과정
톰캣 컨테이너가 JSP 파일을 자바 파일로 먼저 변환한다. 그리고 자바 파일을 컴파일하여 클래스 파일로 변환한다. 마지막으로 클래스 파일을 실행하여 HTML, CSS, JS 코드를 브라우저로 전송해 출력한다. 예를들면, 서블릿에서는 HTML 코드를 'out.print("<html><body>")으로 직접 작성해야 했는데, JSP에서는 바로 HTML 코드를 작성하면, 이를 작동 과정에서 자동으로 'out.print("<html><body>")' 코드의 자바 파일로 변환, 그리고 마지막으로 클래스 파일로 변환하여 브라우저로 전송해주는 것이다.
- JSP 페이지 구성 요소
JSP 페이지에서 사용되는 구성 요소는 다음과 같다.
1) 내장 객체(내장 변수) : 서블릿에서 자주 사용되던 객체를 컨테이너가 자동으로 생성한 것
*스코프를 가진 내장 객체(서블릿과 거의 동일) : page, request, session, application
2) 디렉티브 태그(Directive Tag)
*페이지 디렉티브 태그 - 페이지 정보 설정, <%@ page 속성=값%>
*인클루드 디렉티브 태그 - 공통 페이지를 따로 만들어두고 삽입, <%@ include file="공통기능 파일명.jsp" %>
*태그라이브 디렉티브 태그 - 개발자나 프레임워크에서 제공하는 태그 사용 시, <%@ taglib uri="" prefix=""%>
3) 스크립트 요소(Scripting Element) : 주석문, 스크립틀릿(Scriptlet), 표현식, 선언식
*선언식 - JSP에서 변수나 메서드 선언 시, <%! 멤버변수 or 멤버메서드%>
*스크립틀릿 - JSP에서 자바 코드 작성 시, <% 자바코드 %>
*표현식 - JSP에서 변수의 값 출력 시, <%=값 or 자바변수 or 자바식 %>
*주석문 - HTML(<!-- 주석 --!>), JSP 내의 자바(/* 주석 */), JSP(<%-- 주석 --%>)
4) 액션 태그(Action Tag) : 이번에는 JSP에 자바 코드 같이 써야 하는 불편함 발생하여 나타난 기능. 즉, 자바 코드를 가능하면 쓰지 않으려는 것. 스크립트 요소 중 스크립틀릿의 자바 코드를 액션 태그로 대체.
*종류 - <jsp:include>, <jsp:forward>, <jsp:useBean>, <jsp:setProperty>, <jsp:getProperty>
*<jsp:useBean> - 자바 빈(Java Bean, 자바의 DTO나 VO 클래스와 같은 개념)을 대체하는 태그, <jsp:useBean id="빈 이름" class="패키지 이름을 포함한 자바 빈 클래스 [scope="접근범위"]/>
*<jsp:param> - <include>, <forward> 사용 시 다른 JSP로 매개변수 값을 전달할 때 사용
5) 표현 언어(Expression Language) : 이제 JSP의 자바 코드 대신 표현 언어(EL)로 대체. 스크립트 요소 대신 사용. 형식은 ${표현식 or 값}.
*페이지 디렉티브 태그에서는 반드시 isELIgnored=false로 설정 필요
*표현 언어 자체가 하나의 언어라서, 연산자와 내장 객체도 모두 따로 존재함
6) 커스텀 태그(Custom Tag) : JSP 페이지에서 자주 사용하는 자바 코드를 대체.
*종류 - JSTL(JSP Standard Tag Library), 개발자가 만든 커스텀 태그 : 커스텀 태그 중 가장 많이 사용되는 것을 JSTL로 만듦(주로 조건식이나 반복문).
*JSTL의 코어 태그 형태 <c:태그명>, 해당 라이브러리 사용 시 taglib 디렉티브 태그 추가 필요
참고 : 도서 <자바 웹을 다루는 기술>
'TIL' 카테고리의 다른 글
<자바스크립트> Ajax (0) | 2021.11.12 |
---|---|
<트러블슈팅> getPathInfo() = null 에러 (0) | 2021.11.11 |
<트러블슈팅> DB 연동 시 쿼리문 오류 / html 내 js 실행안됨 (0) | 2021.11.09 |
<자바 Java> 커넥션풀(ConnectionPool) (0) | 2021.11.08 |
<자바 Java> 메서드 (0) | 2021.11.07 |