JSP 방식의 웹 애플리케이션

JSP는 서블릿 2.1 API를 확장하여 구현되는 서블릿을 고수준으로 추상화할 수 있는 뷰를 제공한다. JSP는 동적인 웹 문서를 만들 수 있는 자바 기술로서 정적인 데이터에 자바 코드를 삽입할 수 있는 형식으로 되어 있다. JSP는 JSP 액션이라 불리는 XML과 같은 방식의 태그를 추가할 수 있다. HTML과 XML로 확장할 수 있는 JSP 태그 라이브러리를 생성할 수 있다. 태그 라이브러리는 플랫폼과 독립적이다.

JSP는 JSP 컴파일러에 의해서 서블릿 코드를 생성한다. JSP는 자바 코드로 된 서블릿으로 번역된 다음 자바 컴파일러에 의해 컴파일 된다.

JSP는 웹 애플리케이션에서 그림1과 같은 모습의 아키텍처로 구성된다.



[그림1] JSP를 사용하여 동적인 웹 문서를 생성하는 구조

서블릿과 JSP는 모두 선 마이크로시스템의 Anselm Baird-Smith에 의해서 처음 만들어졌고, 그 후 SatisDhamaraj에 의해 스펙이 보강되었다. JSP 스펙은 1.2로 시작하였다. JSR53은 JSP 1.2와 서블릿 2.3을 정의하고, JSR152는 JSP2.0을 정의하고 있다. 2006년 5월 JAVA EE5의 부분으로 JSR245는 JSP 2.1을 정의하고 있다.

JSP는 HTML과 같은 정적인 데이터와 인클루드(include) 지시자 같은 지시자들과 JSP 스크립트 요소와 변수들, JSP 액션과 커스텀 태그 라이브러리로 구성되어 있다.

다음은 JSP로 만드는 동적인 웹 문서의 예이다.

<%@ page import="java.util.*" %> //example import
<%@ page import="example.MyObject" %>
<%@ page errorPage="myerror.jsp" %>
<%@ page contentType="text/html" %> //example contentType
<%@ page isErrorPage=false %> //example for non error page
<%@ page isThreadSafe=true %> //example for a thread safe JSP
<%@ taglib prefix="myprefix" uri="taglib/mytag.tld" %>

<html>
<head><title>JSP Sample</title>
<body>
<% MyObect myObj = (MyObject)request.getAttribute("myObject");%>

<table>
    <tr><td>id</td><td>name</td></tr>
    <tr>
        <td><%=myObj.getId() %></td>
        <td><%=myObj.getName() %></td>

    </tr>
</table>

...
<myprefix:myaction> <%-- 시작 태그 %>
...
</myprefix:myaction> <%-- 종료 태그 %>
</body>
</html>

위에서 작성한 JSP에서 자바 소스 코드가 포함된 것을 볼 수 있다. <% ... %> 표현식으로 작성하는 것을 스크립트릿(Scriptlet)이라 부른다. 이 안에 자바 소스 코드를 포함할 수 있다. 이러한 방식으로 개발되는 JSP는 정적인 HTML과 같은 데이터와 자바 소스 코드가 혼합된 형태로 구성되는데 이렇게 개발하는 방식으로 'JSP 모델 1'이라 부른다.

JSP 모델 1 형식은 서블릿으로 개발하는 것보다 쉽게 개발할 수 있는 방법을 제공한다. 그러나 자바 소스 코드와 화면 디자인에 관련된 태그를 혼용하여 문서를 만들기 때문에 간단한 웹 사이트에서는 큰 문제점이 발생하지 않지만, 규모가 큰 웹 애플리케이션에서는 개발과 유지보수에 많은 문제점을 발생시킨다.

화면 디자인 작업과 비즈니스 로직 개발 작업을 분리하기에도 어려워질 뿐만 아니라, 페이지에 포함되어 있는 자바 소스 코드가 여러 페이지에 걸쳐 서로 간의 관계가 복잡하게 얽혀 있어 수정 작업이 쉽지 않게 된다. 또한 각 페이지를 개발하는 개발자의 개발 스타일에 의존하기 때문에 조직화된 개발이 어려워진다.

이러한 문제점, 즉 구조화된 웹 애플리케이션을 개발하기 위해 'MVC 패턴'을 도입하려는 움직임을 보이게 되었다.

by nockarm | 2007/12/18 02:20 | 트랙백 | 덧글(0)

트랙백 주소 : http://nockarm.egloos.com/tb/1153692
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶