<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="http://rss.egloos.com/style/blog.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
	<title>nockarm님의 이글루</title>
	<link>http://nockarm.egloos.com</link>
	<description></description>
	<language>ko</language>
	<pubDate>Sun, 23 Dec 2007 22:58:30 GMT</pubDate>
	<generator>Egloos</generator>
	<image>
		<title>nockarm님의 이글루</title>
		<url>http://md.egloos.com/img/samplelogo2.gif</url>
		<link>http://nockarm.egloos.com</link>
		<width>80</width>
		<height>80</height>
		<description></description>
	</image>
  	<item>
		<title><![CDATA[ 스트럿츠2 오픈 세미나 2008년 1월중 예정 ]]> </title>
		<link>http://nockarm.egloos.com/1181026</link>
		<guid>http://nockarm.egloos.com/1181026</guid>
		<description>
			<![CDATA[ 
  아첸 자바 커뮤니티(<a href="http://www.artszen.org/">www.artszen.org</a>)의 아키텍트 그룹 주체로 스트럿츠2 오픈 세미나가 진행될 예정이다.<br>2008년 1월 중순 진행할 계획이며 약 3시간 정도의 시간이 계획되었다.<br>1시간 20분 정도 이론, 20분 휴식, 1시간 20분 정도 실습으로 진행될 예정이다.<br>자세한 내용은 아첸 자바 커뮤니티에 게시되어 있다.<br><br><div style="TEXT-ALIGN: left"></div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds6.egloos.com/pds/200712/24/69/e0079469_476ee7d9d8d0d.png" width="500" height="386.756238004" onclick="Control.Modal.openDialog(this, event, 'http://pds6.egloos.com/pds/200712/24/69/e0079469_476ee7d9d8d0d.png');" /></div>			 ]]> 
		</description>
		<category>스트럿츠2</category>

		<comments>http://nockarm.egloos.com/1181026#comments</comments>
		<pubDate>Sun, 23 Dec 2007 22:58:30 GMT</pubDate>
		<dc:creator>nockarm</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 웹 애플리케이션 개발 프레임워크의 필요성  ]]> </title>
		<link>http://nockarm.egloos.com/1153702</link>
		<guid>http://nockarm.egloos.com/1153702</guid>
		<description>
			<![CDATA[ 
  <p><span style="FONT-FAMILY: Verdana">자바 기술을 이용한 대형 웹 애플리케이션 개발이 활성화되면서 기존 방식의 개발과 시스템 관리, 유지보수 시 발생하는 어려움을 해소하기 위해 자바 웹 개발 프레임워크의 필요성이 절실해졌다. 이러한 시기에 여러 가지 훌륭한 자바 웹 개발 프레임워크들이 세상에 모습을 나타내었다. 이들 중 크레이그 맥클래너헌(Craig McClanahan)에 의해 만들어지고, 2000년도에 아파치 재단에 기증된 스트럿츠1 역시 많은 개발자에게 호응을 얻어 웹 애플리케이션을 개발하는 표준 프레임워크처럼 퍼져 나가게 되었다.</span></p><p><br><span style="FONT-FAMILY: Verdana">자 그렇다면 프레임워크가 무엇을 의미하는지 정의해 보자.<br><br></span></p><p><span style="FONT-FAMILY: Verdana">프레임워크란 특정한 형태의 소프트웨어 문제점, 즉 애플리케이션 개발, 유지보수, 성능 등과 같은 것을 해결하기 위해 서로 협력 관계를 갖는 클래스와 인터페이스의 집합을 말한다. 프레임워크는 유사한 개발 방식을 유도하는 환경을 제공하게 된다. 팀 작업을 할 경우 팀원들이 서로 비슷한 방식의 코딩 작업을 할 수 있다면 개발 시 업무 교류가 원활할 수 있는 장점을 갖는다. 프레임워크는 검증된 개발 기반 환경을 제공하기 때문에 안정적으로 작동할 수 있는 프로그램을 개발하는 데 큰 도움이 된다. 따라서 웹 개발 프레임워크는 다음과 같은 특성으로 정리할 수 있다.<br></span></p><p><span style="FONT-FAMILY: Verdana">&nbsp;&nbsp;&nbsp; - 프레임워크는 개념을 추상화한 여러 클래스나 컴포넌트로 구성된다.<br>&nbsp;&nbsp;&nbsp; - 프레임워크는 이런 추상적인 개념을 이용하여 문제를 해결하는 방법을 정의한다.<br>&nbsp;&nbsp;&nbsp; - 프레임워크 컴포넌트는 재사용성이 높다.<br>&nbsp;&nbsp;&nbsp; - 프레임워크는 논리적인 패턴을 조직화한다.<br></span></p><p><span style="FONT-FAMILY: Verdana">스트럿츠1 역시 이러한 특성을 가진 훌륭한 웹 개발 프레임워크이다. 최근 자바를 이용하여 애플리케이션을 개발할 때 새로운 흐름으로 방향을 전환하고 있다. 어쩌면 새로운 흐름이 아니라 다시 기본적인 관점으로 돌아가고 있다고 볼 수 있다. 어떤 식으로 그 현상을 정의한다 하더라도 그 흐름은 간편한 개발, 신속한 개발, 재사용성을 높일 수 있는 개발, 성능이 뛰어난 개발, 유지보수가 쉬운 개발을 위한 방향으로 진행하고 있다. 따라서 자바 웹 개발 프레임워크 역시 이 흐름 속에서 큰 변화를 시도하고 있다. 이러한 과정에서 탄생된 것이 스트럿츠2(Struts2)이다.<br></span></p><br/><br/>tag : <a href="/tag/웹개발프레임워크의필요성" rel="tag">웹개발프레임워크의필요성</a>,&nbsp;<a href="/tag/프레임워크" rel="tag">프레임워크</a>			 ]]> 
		</description>
		<category>스트럿츠2</category>
		<category>웹개발프레임워크의필요성</category>
		<category>프레임워크</category>

		<comments>http://nockarm.egloos.com/1153702#comments</comments>
		<pubDate>Mon, 17 Dec 2007 17:23:56 GMT</pubDate>
		<dc:creator>nockarm</dc:creator>
	</item>
	<item>
		<title><![CDATA[ MVC 아키텍처 ]]> </title>
		<link>http://nockarm.egloos.com/1153697</link>
		<guid>http://nockarm.egloos.com/1153697</guid>
		<description>
			<![CDATA[ 
  <p><span style="FONT-FAMILY: Verdana">MVC는 모델(Model), 뷰(View), 컨트롤러(Conroller)로 구성된 패턴이다.<br></span></p><p><span style="FONT-FAMILY: Verdana">MVC 아키텍처는 자바 웹 애플리케이션을 개발할 때 'JSP 모델 2'라고 불린다.<br><br>용어 MVC는 스몰토크의 모델-뷰-컨트롤러 패턴에서 기원하였다. 스몰토크 MVC에서 뷰는 옵저버 패턴(Observer Pattern)을 통해 모델로부터 그 자체를 업데이트하였다. 원래의 MVC 패턴은 폐쇄 루프 같은 모습을 가지고 있었다. 컨트롤러는 모델과 통신하고, 뷰와 통신하고, 뷰는 다시 컨트롤러와 통신한다. 그러나 모델과 뷰 사이의 직접적인 연결은 웹 애플리케이션에 이롭지 못한 영향을 주었다. 그래서 고전 MVC 배열을 루프 같은 모양에서 중간에 컨트롤러를 두어 말의 편자 같은 모양으로 구성하도록 수정하였다.<br></span></p><p><span style="FONT-FAMILY: Verdana">MVC/모델2 디자인 패턴에서 애플리케이션 흐름은 중간 컨트롤러에 의해 제어된다. 컨트롤러는 리퀘스트를 적절한 핸들러에게 중개하는 역할을 한다. 핸들러는 모델과 밀접하게 묶여있으며 각 핸들러는 리퀘스트와 모델 사이의 어댑터로서 작동하게 된다. 모델은 비즈니스 로직 또는 상태를 포함하거나 표현하게 된다. 다음, 제어권은 적절한 뷰로 컨트롤러를 통해서 포워딩된다. 포워딩은 보통 데이터베이스 또는 환경설정 파일로부터 읽어 들인 매핑의 집합을 참조하여 결정할 수 있다. 이들은 애플리케이션을 보다 쉽게 생성하고 유지보수 할 수 있도록 뷰와 모델 사이의 결합을 느슨하게 유지할 수 있도록 한다.<br></span></p><p><span style="FONT-FAMILY: Verdana">MVC 모델이 편리한 개념이지만, 애플리케이션이 3개의 계층 이상을 이용할 수 있다는 것을 발견할 수 있을 것이다. 모델 내에 전혀 다른 비즈니스 로직 및 데이터 엑세스 계층을 예로들 수 있다.<br></span></p><p><span style="FONT-FAMILY: Verdana">프레임워크는 JSP 모델2 웹 애플리케이션을 위하여 컨트롤 계층을 제공한다. 개발자는 비즈니스, 데이터 엑세스, 프레젠테이션 계층을 구축하기 위한 다른 표준 기술과 함께 이 계층을 사용할 수 있다.<br></span></p><br/><br/>tag : <a href="/tag/mvc" rel="tag">mvc</a>			 ]]> 
		</description>
		<category>mvc</category>

		<comments>http://nockarm.egloos.com/1153697#comments</comments>
		<pubDate>Mon, 17 Dec 2007 17:22:01 GMT</pubDate>
		<dc:creator>nockarm</dc:creator>
	</item>
	<item>
		<title><![CDATA[ JSP 방식의 웹 애플리케이션 ]]> </title>
		<link>http://nockarm.egloos.com/1153692</link>
		<guid>http://nockarm.egloos.com/1153692</guid>
		<description>
			<![CDATA[ 
  <p><span style="FONT-FAMILY: Verdana">JSP는 서블릿 2.1 API를 확장하여 구현되는 서블릿을 고수준으로 추상화할 수 있는 뷰를 제공한다. JSP는 동적인 웹 문서를 만들 수 있는 자바 기술로서 정적인 데이터에 자바 코드를 삽입할 수 있는 형식으로 되어 있다. JSP는 JSP 액션이라 불리는 XML과 같은 방식의 태그를 추가할 수 있다. HTML과 XML로 확장할 수 있는 JSP 태그 라이브러리를 생성할 수 있다. 태그 라이브러리는 플랫폼과 독립적이다.<br></span></p><p><span style="FONT-FAMILY: Verdana">JSP는 JSP 컴파일러에 의해서 서블릿 코드를 생성한다. JSP는 자바 코드로 된 서블릿으로 번역된 다음 자바 컴파일러에 의해 컴파일 된다.</span></p><p><span style="FONT-FAMILY: Verdana">JSP는 웹 애플리케이션에서 그림1과 같은 모습의 아키텍처로 구성된다.<br></span></p><p><span style="FONT-FAMILY: Verdana"><img src="http://artszen.goanygate.com/artszenorg/files/2007-12-18/11979108528756321550413699227022.jpg"><br><br>[그림1] JSP를 사용하여 동적인 웹 문서를 생성하는 구조<br></span></p><p><span style="FONT-FAMILY: Verdana">서블릿과 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을 정의하고 있다.<br></span></p><p><span style="FONT-FAMILY: Verdana">JSP는 HTML과 같은 정적인 데이터와 인클루드(include) 지시자 같은 지시자들과 JSP 스크립트 요소와 변수들, JSP 액션과 커스텀 태그 라이브러리로 구성되어 있다.<br><br>다음은 JSP로 만드는 동적인 웹 문서의 예이다.<br></span></p><p><span style="FONT-FAMILY: Verdana">&lt;%@ page import="java.util.*" %&gt; //example import<br>&lt;%@ page import="example.MyObject" %&gt;<br>&lt;%@ page errorPage="myerror.jsp" %&gt;<br>&lt;%@ page contentType="text/html" %&gt; //example contentType<br>&lt;%@ page isErrorPage=false %&gt; //example for non error page<br>&lt;%@ page isThreadSafe=true %&gt; //example for a thread safe JSP<br>&lt;%@ taglib prefix="myprefix" uri="taglib/mytag.tld" %&gt;</span></p><p><span style="FONT-FAMILY: Verdana">&lt;html&gt;<br>&lt;head&gt;&lt;title&gt;JSP Sample&lt;/title&gt;<br>&lt;body&gt;<br>&lt;% MyObect myObj = (MyObject)request.getAttribute("myObject");%&gt;</span></p><p><span style="FONT-FAMILY: Verdana">&lt;table&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tr&gt;&lt;td&gt;id&lt;/td&gt;&lt;td&gt;name&lt;/td&gt;&lt;/tr&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;%=myObj.getId() %&gt;&lt;/td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;td&gt;&lt;%=myObj.getName() %&gt;&lt;/td&gt;</span></p><p><span style="FONT-FAMILY: Verdana">&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br>&lt;/table&gt;</span></p><p><span style="FONT-FAMILY: Verdana">...<br>&lt;myprefix:myaction&gt; &lt;%-- 시작 태그 %&gt;<br>...<br>&lt;/myprefix:myaction&gt; &lt;%-- 종료 태그 %&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;<br></span></p><p><span style="FONT-FAMILY: Verdana">위에서 작성한 JSP에서 자바 소스 코드가 포함된 것을 볼 수 있다. &lt;% ... %&gt; 표현식으로 작성하는 것을 스크립트릿(Scriptlet)이라 부른다. 이 안에 자바 소스 코드를 포함할 수 있다. 이러한 방식으로 개발되는 JSP는 정적인 HTML과 같은 데이터와 자바 소스 코드가 혼합된 형태로 구성되는데 이렇게 개발하는 방식으로 'JSP 모델 1'이라 부른다.<br></span></p><p><span style="FONT-FAMILY: Verdana">JSP 모델 1 형식은 서블릿으로 개발하는 것보다 쉽게 개발할 수 있는 방법을 제공한다. 그러나 자바 소스 코드와 화면 디자인에 관련된 태그를 혼용하여 문서를 만들기 때문에 간단한 웹 사이트에서는 큰 문제점이 발생하지 않지만, 규모가 큰 웹 애플리케이션에서는 개발과 유지보수에 많은 문제점을 발생시킨다.<br></span></p><p><span style="FONT-FAMILY: Verdana">화면 디자인 작업과 비즈니스 로직 개발 작업을 분리하기에도 어려워질 뿐만 아니라, 페이지에 포함되어 있는 자바 소스 코드가 여러 페이지에 걸쳐 서로 간의 관계가 복잡하게 얽혀 있어 수정 작업이 쉽지 않게 된다. 또한 각 페이지를 개발하는 개발자의 개발 스타일에 의존하기 때문에 조직화된 개발이 어려워진다.<br></span></p><p><span style="FONT-FAMILY: Verdana">이러한 문제점, 즉 구조화된 웹 애플리케이션을 개발하기 위해 'MVC 패턴'을 도입하려는 움직임을 보이게 되었다.<br></span></p><br/><br/>tag : <a href="/tag/jsp" rel="tag">jsp</a>			 ]]> 
		</description>
		<category>jsp</category>

		<comments>http://nockarm.egloos.com/1153692#comments</comments>
		<pubDate>Mon, 17 Dec 2007 17:20:39 GMT</pubDate>
		<dc:creator>nockarm</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 서블릿 방식의 웹 애플리케이션 ]]> </title>
		<link>http://nockarm.egloos.com/1153680</link>
		<guid>http://nockarm.egloos.com/1153680</guid>
		<description>
			<![CDATA[ 
  <p><span style="FONT-FAMILY: Verdana">서블릿 방식으로 웹 애플리케이션을 개발할 때 웹 서버와 서블릿은 그림1과&nbsp; 같은 구조를 가진다.</span></p><p><span style="FONT-FAMILY: Verdana"><img src="http://artszen.goanygate.com/artszenorg/files/2007-12-18/1197910605265-3280408362037344270.jpg"><br>[그림1] 동적인 웹 문서를 만들기 위해 서블릿을 사용하는 구조</span></p><p><span style="FONT-FAMILY: Verdana">서블릿은 사용자의 리퀘스트에 프로세서를 생성하는 방식을 사용하지 않고, 경량의 쓰레드를 생성하여 작업 부하를 줄이고, 업무 처리를 더욱 빠르게 수행할 수 있도록 한다. 이 외에도 서블릿은 메모리를 적게 사용하며, 표준 API를 제공하고, 서블릿 보안 모델을 사용할 수 있으며, 분산 객체 기술(RMI, CORBA, EJB 등)을 활용할 수 있는 장점을 가진다. CGI 방식의 여러 단점을 보완할 수 있는 방법을 제시한다.</span></p><p><span style="FONT-FAMILY: Verdana">자 그럼, 서블릿을 만들기 위한 자바 소스의 일부분을 살펴보자.</span></p><p><span style="FONT-FAMILY: Verdana">...<br>public class SampleServlet extends HttpServlet {<br>&nbsp;&nbsp;&nbsp; private static final String CONTENT_TYPE = "text/html; charset=euc-kr";<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; public void init(ServletConfig config) throws ServletException {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super.init();<br>&nbsp;&nbsp; &nbsp;}<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; public void doGet(HttpServletRequest request,&nbsp;HttpServletResponse response)&nbsp;throws ServletException, IOException {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setContentType(CONTENT_TYPE);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PrintWriter out = response.getWriter();<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("&lt;html&gt;");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("&lt;head&gt;&lt;title&gt;Servlet Sample&lt;/title&gt;&lt;/head&gt;");<br>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;out.println("&lt;body&gt;");<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //비즈니스 데이터 처리<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("&lt;p&gt;출력 내용&lt;/p&gt;");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;out.println("&lt;/body&gt;&lt;/html&gt;");<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; ...<br>}</span></p><p><span style="FONT-FAMILY: Verdana">서블릿을 사용하면 CGI 애플리케이션의 리소스 관리가 힘들다는 단점을 해결할 수 있으나, 위의 서블릿 소스를 보면 동적인 웹 문서를 만들기 위해 C 언어로 만든 CGI 애플리케이션과 유사한 방법으로 HTML 내용을 소스 안에서 직접 적어야 하는 문제가 남아있는 것을 알 수 있다.</span></p><p><span style="FONT-FAMILY: Verdana">여전히 동적인 웹 문서를 만들기 위한 작업에 적지 않은 어려움이 있다. 좀 더 쉬운 방법으로 동적인 웹 문서를 만들기 위해 그 다음으로 제시된 방법은 바로 JSP(JavaServer Pages)이다.<br></span></p><br/><br/>tag : <a href="/tag/서블릿" rel="tag">서블릿</a>,&nbsp;<a href="/tag/servlet" rel="tag">servlet</a>			 ]]> 
		</description>
		<category>스트럿츠2</category>
		<category>서블릿</category>
		<category>servlet</category>

		<comments>http://nockarm.egloos.com/1153680#comments</comments>
		<pubDate>Mon, 17 Dec 2007 17:16:53 GMT</pubDate>
		<dc:creator>nockarm</dc:creator>
	</item>
	<item>
		<title><![CDATA[ CGI 방식의 웹 애플리케이션 ]]> </title>
		<link>http://nockarm.egloos.com/1153663</link>
		<guid>http://nockarm.egloos.com/1153663</guid>
		<description>
			<![CDATA[ 
  <p><span style="FONT-FAMILY: Verdana">CGI(Common Gateway Interface) 방식으로 동적인 웹 문서를 만들기 위해 웹 서버와 CGI 프로그램의 관계는 그림1과 같은 구조로 구성된다.</span></p><p><span style="FONT-FAMILY: Verdana"><img src="http://artszen.goanygate.com/artszenorg/files/2007-12-18/1197910246578-7251261772894014567.jpg"><br>[그림1] CGI를 사용하여 동적인 웹 문서를 처리할 수 있는 웹 서버의 구조<br><br></span></p><p><span style="FONT-FAMILY: Verdana">그림2 처럼 CGI 프로그램을 이용하여 원하는 방식으로 비즈니스 로직을 처리하여 동적인 웹 문서를 만들 수 있다.</span></p><p><span style="FONT-FAMILY: Verdana"><img src="http://artszen.goanygate.com/artszenorg/files/2007-12-18/1197910350281-50439227097690662.jpg"><br>[그림2] CGI 프로그램이 데이터 베이스를 이용하여 동적인 HTML을 생성하는 구조<br><br></span></p><p><span style="FONT-FAMILY: Verdana">CGI는 웹 서버와 외부 프로그램을 연결하는 규약으로 CGI &nbsp;방식을 따르는 프로그램을 포함하기도 한다. CGI는 웹 서버가 사용자의 리퀘스트를 외부 응용 프로그램에 전달하고 처리 결과를 사용자에게 전달하기 위한 표준적인 방법이다. 이렇게 웹 서버와 외부 프로그램이 데이터를 주고 받기 위한 방법이나 규약을 CGI라고 부른다.<br></span></p><p><span style="FONT-FAMILY: Verdana">CGI 프로그램을 만들기 위해 사용되는 언어는 Perl, C/C++, Visual Basic, Apple Script, Tcl 등이 있다. 각 언어마다 특징에 따라 적합한 언어로 CGI 프로그램을 개발한다. 만약 C로 CGI 프로그램을 만든다면 CGI 프로그램은 다음과 같은 방식으로 작성하게 된다.</span></p><p><br><span style="FONT-FAMILY: Verdana">int cgiMain(void) {<br>&nbsp;&nbsp;&nbsp; /* 입력 값 처리 */<br>&nbsp;&nbsp;&nbsp; ...<br>&nbsp;&nbsp;&nbsp; printf("&lt;HTML&gt;\n\n");<br>&nbsp;&nbsp;&nbsp; printf("&lt;HEAD&gt; &lt;TITLE&gt; CGI Sample &lt;/TITLE&gt; &lt;/HEAD&gt;\n\n");<br>&nbsp;&nbsp;&nbsp; printf("&lt;BODY&gt;\n\n");<br>&nbsp;&nbsp;&nbsp; printf(" &lt;H2&gt;Subject&lt;/H2&gt;\n");<br>&nbsp;&nbsp;&nbsp; printf(" 회원수 : %d명&lt;BR&gt;\n", count);<br>&nbsp;&nbsp;&nbsp; ...<br>}<br><br></span></p><p><span style="FONT-FAMILY: Verdana">C로 작성하는 CGI 프로그램은 동적인 웹 문서를 만들기 위해 printf() 메소드를 사용하여 출력할 HTML 내용을 직접 적어 넣는 방식을 사용한다. 이 때 비즈니스 데이터를 웹 문서에 포함시켜 원하는 문서를 만들 수 있다.</span></p><p><span style="FONT-FAMILY: Verdana">그러나, 여기에서 볼 수 있는 가장 큰 문제점은 화면 처리를 위한 작업과 비즈니스 로직을 분리해서 작업하기가 매우 힘들다는 것이다. 하지만 이 보다 더 큰 문제점은 사용자의 리퀘스트마다 이를 처리하기 위해 다 수의 동일한 프로세스를 메모리로 로딩해야 한다는 것이다.<br><br></span></p><p><span style="FONT-FAMILY: Verdana">웹은 불특정 다수를 위한 것이기 때문에 동시에 많은 수의 사용자가 웹 서버에 리퀘스트할 수 있다. 따라서 사용자의 리퀘스트를 처리하기 위해 기하급수적으로 많은 자원을 사용할 가능성이 있으며, 하드웨어 시스템이 이를 감당하지 못할 상태에 쉽게 이를 수 있는 마치 폭탄을 떠안고 있는 것과 같은 문제점이 남아있는 것이다.<br></span></p><p><span style="FONT-FAMILY: Verdana">이러한 이유 때문에 웹 애플리케이션을 위한 서버의 아키텍처에 변화를 가져올 방법이 필요했다. 서버에서 작동하는 애플리케이션은 적은 자원을 소모하면서도 빠른 처리 능력을 가질 수 있어야 했다. 경량의 프로세서로 사용자의 리퀘스트를 처리할 수 있는 외부 애플리케이션의 필요성을 만족시키기 위해 자바에서는 서버에서 경량의 쓰레드 방식으로 작동할 수 있는 애플리케이션인 서블릿(Servlet)을 고안해 내었다.<br></span></p><br/><br/>tag : <a href="/tag/cgi" rel="tag">cgi</a>			 ]]> 
		</description>
		<category>스트럿츠2</category>
		<category>cgi</category>

		<comments>http://nockarm.egloos.com/1153663#comments</comments>
		<pubDate>Mon, 17 Dec 2007 17:10:25 GMT</pubDate>
		<dc:creator>nockarm</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 초기 웹 애플리케이션의 구성 ]]> </title>
		<link>http://nockarm.egloos.com/1153655</link>
		<guid>http://nockarm.egloos.com/1153655</guid>
		<description>
			<![CDATA[ 
  <p>웹은 몇 명의 사용자가 얼마나 많은 자원을 사용할 지 모르는 상태에서 개발하는 경우가 많다. 그러나 사실 모두가 그런 것만은 아니다. 사용자의 수와 사용 양을 어느 정도 예측할 수 있는 경우도 많다. 그러나 웹 애플리케이션을 개발하는 사람이 먼저 염두에 둘 것은 웹이란 불특정한 다수를 위한 것이라는 점이다.&nbsp; 따라서 웹 개발은 다른 독립적인 응용 애플리케이션 즉, 일반 DOS 프로그램, 윈도우즈 프로그램, 서버용 데몬 등의 애플리케이션을 구축하는 방법과 작업하는 방법이 많이 달라진다.</p><p>웹이 정해지지 않은 다수의 사용자를 위한 것이란 점이 기술에 많은 영향을 미친다. 사용자가 불특정 다수란 것은 자원 관리가 어렵다는 것을 의미한다. 자원을 효율적으로 관리할 수 있어야 하며, 그러한 자원을 이용하는 애플리케이션을 개발하는 것도 보다 쉬운 방향으로 기술이 발전해 가고 있다.</p><p>초기 웹 애플리케이션은 이미 만들어진 정적인 문서(HTML 등)를 사용자가 리퀘스트(Request)할 때 마다 해당하는 자원을 웹 서버를 통하여 사용자에게 보내주는 방식을 사용하였다. 이는 아래의 그림1과 같은 모습으로 표현할 수 있다.</p><p><img src="http://artszen.goanygate.com/artszenorg/files/2007-12-18/11979100489066323804212096640594.jpg"></p><p>[그림1] 정적인 웹 자원을 처리하는 웹 서버의 구조</p><p>그러나 웹 문서가 고정된 형태로 만들어져 있는 자원만으로 원하는 정보를 처리하기에 한계가 있다. 사용자는 정보를 보다 효율적으로 활용하기 위해 동적으로 만들어진 웹 문서를 원하게 되었다. 데이터베이스와 같은 정보 관리 시스템을 이용하여 그 때 그 때 마다 원하는 정보가 포함된 문서를 생성할 필요가 생겼다. 그러나 웹 서버는 비즈니스 로직을 처리할 수 있는 능력을 가지고 있지 않다. 웹 서버의 역할은 리퀘스트한 자원이 있는 경우에는 그 자원을 사용자에게 보내주고, 만약 자신이 처리할 수 없는 것이라면 TCP/IP 통신을 이용해서 외부 모듈이 이 리퀘스트를 처리하도록 요청하게 된다.</p><p>따라서 웹 서버 외에서 동적인 웹 문서를 생성할 수 있는 프로그램이 필요하였다. 처음 이러한 요구사항을 만족시키기 위해 사용하던 방식이 CGI(Common Gateway Interface) 방식을 사용한&nbsp; 프로그램이었다.<br></p><br/><br/>tag : <a href="/tag/초기웹애플리케이션구성" rel="tag">초기웹애플리케이션구성</a>			 ]]> 
		</description>
		<category>스트럿츠2</category>
		<category>초기웹애플리케이션구성</category>

		<comments>http://nockarm.egloos.com/1153655#comments</comments>
		<pubDate>Mon, 17 Dec 2007 17:08:17 GMT</pubDate>
		<dc:creator>nockarm</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 스트럿츠2의 기본 개념 ]]> </title>
		<link>http://nockarm.egloos.com/1125421</link>
		<guid>http://nockarm.egloos.com/1125421</guid>
		<description>
			<![CDATA[ 
  <p dir="ltr" style="MARGIN-RIGHT: 0px">1. 스트럿츠2가 제공하는 기본 개념<br>&nbsp;&nbsp;&nbsp; -&nbsp;액션 (Action)<br>&nbsp;&nbsp;&nbsp; -&nbsp;리절트 (Result)<br>&nbsp;&nbsp;&nbsp;&nbsp;- 환경설정 (Configuration)<br><br></p><p dir="ltr" style="MARGIN-RIGHT: 0px">1.1 액션 (Action)<br>&nbsp;&nbsp;&nbsp; - 액션이란 스트럿츠2에서 비즈니스 로직을 실행하기 위한 통로 역할을 하는 개념으로서 가장 중심적인 위치에 있다.</p><p dir="ltr" style="MARGIN-RIGHT: 0px">&nbsp;&nbsp;&nbsp; <img src="http://artszen.goanygate.com/artszenorg/files/2007-11-27/11961252342391887610268163909703.jpg"><br><br>1.2 리절트 (Result)<br>&nbsp;&nbsp;&nbsp; - 스트럿츠2가 비즈니스 로직을 수행한 후, 최종 결과를 출력하기 위해 제공하는 것은 리절트이다.<br><br>&nbsp;&nbsp;&nbsp; <img src="http://artszen.goanygate.com/artszenorg/files/2007-11-27/11961252778332471287376240117430.jpg"><br><br>&nbsp;&nbsp;&nbsp; - 액션을 실행한 후, 최종 출력을 위해 리절트를 실행.<br>&nbsp;&nbsp;&nbsp; -&nbsp;리절트를 통해 생성되는 결과 페이지는 JSP뿐만 아니라, 프리마커(FreeMarker), 벨로시티(Velocity), XML 스트림이나 파일 다운로드 혹은 다른 액션이 될 수 있다<br><br></p><p dir="ltr" style="MARGIN-RIGHT: 0px">&nbsp;&nbsp;&nbsp; - 결과 페이지에서는 태그 라이브러리나 여러 가지 문법을 통해서 액션 클래스의 프로퍼티를 접근할 수 있기 때문에 손쉽게 동적인 페이지를 구성할 수 있다.</p><p dir="ltr" style="MARGIN-RIGHT: 0px">&nbsp;&nbsp;&nbsp; <img src="http://artszen.goanygate.com/artszenorg/files/2007-11-27/1196125326193-541123377480072028.jpg"></p><p dir="ltr" style="MARGIN-RIGHT: 0px"><br>1.3 환경 설정<br>&nbsp;&nbsp;&nbsp; - 환경 설정 파일 : struts.xml<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +&nbsp;사용자의 리퀘스트에 대해 어떤 액션을 수행한 후, 어떤 리절트를 출력해야 하는지 스트럿츠2가 알 수 있도록 해야 한다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +&nbsp;액션과 리절트의 관계를 정의.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +&nbsp;스트럿츠2 자체의 기능 설정을 위해 환경설정 모듈 제공.<br><br></p><p dir="ltr" style="MARGIN-RIGHT: 0px">&nbsp;&nbsp;&nbsp; <img src="http://artszen.goanygate.com/artszenorg/files/2007-11-27/11961253708496023593351403994581.jpg"><br><br>아첸 자바 커뮤니티(<a href="http://www.artszen.org/">www.artszen.org</a>) 참고<br></p>			 ]]> 
		</description>
		<category>스트럿츠2</category>

		<comments>http://nockarm.egloos.com/1125421#comments</comments>
		<pubDate>Wed, 12 Dec 2007 04:30:51 GMT</pubDate>
		<dc:creator>nockarm</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 스트럿츠2 서적이 곧 출간될 예정 ]]> </title>
		<link>http://nockarm.egloos.com/1125403</link>
		<guid>http://nockarm.egloos.com/1125403</guid>
		<description>
			<![CDATA[ 
  스트럿츠2 서적 출간을 코 앞에 두었다. 계획은 11월 중순에 출간할 예정이었지만 교정 작업도 제법 시간이 많이 걸리는 작업이었다. 책이 출간되면 기념으로 공개 세미나를 계획하고 있지만 그 준비또한 만만한 작업은 아닐 것 같다.&nbsp;거창한 것 보다는 주변에 아는 사람들을 통해 조촐하게 인원을 선별해서 스트럿츠2의 특징과 장점을 소개해보는게 좋을 듯 싶다. <br><br>앞으로 이 곳에 스트럿츠2에 대한 얘기도 시간이 나는 대로 글을 올릴 것이고, 스트럿츠2 및 자바에 대해 열정을 가진 친구들과 마음껏 얘기를 나눌&nbsp;수 있는 공간을 마련할 기회로 자바 커뮤니티를 임시로 오픈했다. 현재는 여러 가지 테스트 상에 서버를 직접 운영하고 있어서 속도가 빠르지 못하다. 조만간 호스팅을 해서 사용상 불편함이 없도록 준비할 예정이다. 현재 회원을 가입할 수 있도록 했고, 회원 가입과 동시에 간단한 블로그를 기능을 제공하도록 구성해놓았다.<br><br>최근 스트럿츠2와 서블릿&amp;JSP에 대해 강좌를 올리고 있으니, 스트럿츠2에 대해서 관심이 있는 친구들에게는 조그이나마 도움이 될 수 있을거라 생각한다.<br><br>아첸 자바 커뮤니티 : <a href="http://www.artszen.org/">www.artszen.org</a><br><br>			 ]]> 
		</description>
		<category>스트럿츠2</category>

		<comments>http://nockarm.egloos.com/1125403#comments</comments>
		<pubDate>Wed, 12 Dec 2007 04:25:43 GMT</pubDate>
		<dc:creator>nockarm</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 스트럿츠2 탄생 배경 ]]> </title>
		<link>http://nockarm.egloos.com/1125359</link>
		<guid>http://nockarm.egloos.com/1125359</guid>
		<description>
			<![CDATA[ 
  <p>1. 아파치 스트럿츠는 2000년에 등장하여 많은 자바 기반의 웹 애플리케이션들을 개발하는데 많은 도움을 주며 성장했다.<br></p><p><br>2. 더욱 다양하고 복잡한 기능 필요.</p><p>&nbsp;&nbsp;&nbsp; - 스트럿츠가 마이너 수준의 개선을 거듭하는 것만으로 이러한 요구 사항을 명쾌하게 해결하기에 부족함을 느끼게 되었다.&nbsp;</p><p><br>3. 더 쉽고 간결하게 웹 애플리케이션을 만들며 더욱 풍부한 사용자 인터페이스를 구축하기 위한 웹 프레임워크들이 등장</p><p>&nbsp;&nbsp;&nbsp; - 스트럿츠의 뒤를 이어 웹워크(WebWork), 태피스트리(Tapestry), 스프링 MVC(Spring MVC), 비하이브(Beehive) 등</p><p><br>4. 2005년 자바원(JavaOne)에서 스트럿츠 프로젝트의 개발자와 비하이브의 개발자가 미팅을 통해 스트럿츠 Ti(Titanium) 제안 초안을 구성.</p><p>&nbsp;&nbsp;&nbsp; - 여러 웹 프레임워크의 좋은 아이디어를 하나로 통합하는 것에 흥미를 가진 개발자들 간의 모임이 만들어지면서, 본격적으로 스트럿츠2의 개발이 시작되었다.</p><p><br>5. 스트럿츠2는 루비 온 레일즈(Ruby on Rails)나 나노웹(NanoWeb)의 단순함, 웹워크2의 세련미, 비하이브의 툴친화성과 페이지 플로우와 같은 장점과 스트럿츠1를 결합.</p><p>&nbsp;&nbsp;&nbsp; - 현재는 기존 스트럿츠와 웹워크2를 결합하는 모습으로 스트럿츠2의 개발이 진행되고 있다.</p><p><br>6. 스트럿츠2 로고</p><p>&nbsp;&nbsp;&nbsp; <img src="http://artszen.goanygate.com/artszenorg/files/2007-11-27/11961254891612667725566538831797.jpg"></p><p><br>7. 웹워크2와 결합하며 MVC 패턴을 구현한 내부 아키텍처가 완전히 달라졌다.</p><p>&nbsp;&nbsp;&nbsp; - 스트럿츠2의 아키텍처는 웹워크2의 아키텍처를 그대로 적용하고 있다.</p><p>&nbsp;&nbsp;&nbsp; - 스트럿츠1의 서블릿과 리퀘스트 프로세서 기반으로 액션 요청을 처리하던 구조 대신 필터와 인터셉터 기반의 웹워크2 아키텍처를 적용함으로써 매우 유연한 아키텍처를 구축하게 되었다.</p><p><br>8. 다른 뛰어난 오픈 소스의 좋은 기능들을 쉽게 접목하여 활용할 수 있는 방법을 계속해서 구축.</p><p>&nbsp;&nbsp;&nbsp; - Dojo를 활용한 Ajax 기능을 태그와 테마 기반으로 쉽게 구현.</p><p>&nbsp;&nbsp;&nbsp; - 빈 팩토리 패턴의 구현을 위해 구글 주스(Guice)나 스프링 프레임워크를 통합.</p><p>&nbsp;&nbsp;&nbsp; - 무엇보다 개발자들에게 가장 반가운 점은 스트럿츠2에서는 설정작업이 줄어들면서 매우 명확해졌다는 점일 것이다.<br></p><br/><br/>tag : <a href="/tag/스트럿츠2" rel="tag">스트럿츠2</a>,&nbsp;<a href="/tag/struts2" rel="tag">struts2</a>			 ]]> 
		</description>
		<category>스트럿츠2</category>
		<category>스트럿츠2</category>
		<category>struts2</category>

		<comments>http://nockarm.egloos.com/1125359#comments</comments>
		<pubDate>Wed, 12 Dec 2007 04:12:35 GMT</pubDate>
		<dc:creator>nockarm</dc:creator>
	</item>
</channel>
</rss>
