프로그램/java

문한구님의 초간단 jsp 개발 방법론 jsp + java

mulderu 2008. 10. 21. 07:02
제목 : [유용한 JSP 웹 개발 방법론 1] 유용한 JSP 개발 방법론 1
글쓴이: 문한구(hankmoon) 2008/09/02 15:55:03 조회수:648 줄수:109

[유용한 JSP 웹 개발 방법론 1] 유용한 JSP 개발 방법론 1

필자가 웹 개발 프로젝트를 경험하면서 어떻게 하면 프로젝트를 효과적으로 진행할 수 있을까 ?
라고 생각하면서 격은 노하우를 몇가지 적고자 합니다.
그 첫번째로 web server restart 없이 java 자동 compile 방법을 제시합니다.

많은 JSP를 사용한 웹 개발 project에서 MVC 1 model을 사용합니다.

JSP에서는 HTML과 간단한 java code가 들어가고
database 처리는 java class로 분리를 합니다.

page.jsp

model.java

이런식으로 분리하여 model.java는 javac를 사용하여 compile을 하고 tomcat web server를 restart합니다.
혹은 eclipse에서 자동으로 compile 해주고 web server를 restart하거나 eclipse에서 compile된
class를 자동으로 반영하는 방식을 사용합니다.
하지만 eclipse에서 자동으로 compile해서 reload하는 java class가 정상적으로 작동하지 않아
web server(tomcat)을 다시 restart하는 경우를 종종 봅니다.

자 이러한 가정을 하겠습니다.
1시간 동안 개발자가 100건의 코드를 수정하고
한건당 web server restart를 한다고 할때 혹은 eclipse에서 자동 컴파일을 할때 필요한 시간이 약 30초가
걸린다고 하겠습니다. 그런데 이것이 자동화 되어 3초로 줄어든다면 개발시간을 훨씬 줄일 수 있습니다.
필자가 많은 개발자와 개발을 하면서 생산성을 높이기 위해서 어떻게 하면 바로 3초안에 compile해서 반영할 수 있을까
생각하였습니다.

다음과 같은 방법을 제시합니다. 아래의 2개 파일을 참조하세요.

/jsp/test.jsp 파일
<%@ page language="java" import="java.util.*,java.sql.*,java.lang.*,java.io.*,java.io.File " contentType="text/html; charset=EUC-KR"%>
<script><%@ include file="/java/testclass.java"%></script>
<html>
</html>

/java/testclass.java 파일

//<%@ page language="java" contentType="text/html; charset=EUC-KR"%>
//<%!/*
import java.util.*;
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
//*/%>
//<%!
public class testclass extends WCPage
{
testclass()
{
}
...
}
//%>

testclass.java를 javac testclass.java 이렇게 compile 하면 compile 이 됩니다.
위의 코드는 //<%!/* ... //*/%> 이와 같은 코드가 JSP에서는 comment로 인식이 되고
Java에서는 //<%!/* 여기까지만 comment로 인식이 됩니다.
즉 java에서는 아래와 같이 해석이 되고

import java.util.*;
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class testclass extends WCPage
{
testclass()
{
}
...
}

JSP에서는 아래와 같이 해석됩니다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"%>
<%!
public class testclass extends WCPage
{
testclass()
{
}
...
}
%>
즉 //<%!/* 이와 같은 code를 사용하여 java와 jsp에서 동일하게 인식이 되는 java file을 만들 수 있습니다.

또한 jsp에서 다음과 같이 include 하면
<script><%@ include file="/java/testclass.java"%></script>
testclass.java 파일이 자동으로 컴파일 되면서 jsp에 include됩니다.

즉 testclass.java 내용을 수정하고 test.jsp page를 refresh하면 testclass.java class를
compile 하고 web server에 class를 reload할 필요 없이 자동으로 수정 사항이 반영됩니다.

그러면 개발자는 다음과 같이 질문 할지 모르겠습니다.
"그러면 프로그램의 실행 속도가 느리게 된다."

물론 0.1초 정도 느릴 수 있습니다. 하지만 개발 시간을 30초를 3초로 줄였습니다.
그리고 실제 운영 서버에 반영시에는 testclass.java 파일을 compile해서 import해서 사용하면
느리지가 않습니다.

이와 같은 방법은 개발 생산성 측면에서 비교가 되지 않게 빨랐습니다.

출처 : 웹개발라이브러리(Web Development Library 소스공개 : http://www.webdevlib.net)