jsp를 하면서 프레임워크라는 단어를 듣게 되었습니다. 문득 저는 프레임워크가 뭘까? 다른 보조프로그램인가? 이런 생각을 하게 되었습니다. 그리고 그것을 조사한 결과 제가 내린 결론은 '개발환경' 였습니다. 더 쉽게 말하면 lib에 추가하여 사용하는 API였습니다.
MVC를 이용한 프레임워크의 종류는 대표적으로 Spring2.5(현재는 3.0으로 릴리즈) 이 글에서 알아볼 Struts2가 있습니다. 그럼 재 정리해봅니다.
스트럿츠2란?
스트럿츠(STRUTS) 용어를 보면 “지주, 버팀목, 받침대” 라는 뜻을 갖고 있습니다.
그래서 스트럿츠라는 용어를 사용하게 된 것입니다. 스트럿츠 프레임워크는 자바 기반으로한 웹 언어인 JSP만을 위한 프레임워크입니다. 자바 기반이기 때문에 자바의 장점을 그대로 갖고 있습니다. 독립된 플렛폼 사용하여 운영체제에 구애 받지 않고, 오픈 소스라 개발에 필요한 부분을 수정하여 사용 할 수 있습니다. 그리고 무료배포를 한다는 것이 큰 장점 이며, 한 언어만 사용하다 보니 상당히 가볍습니다. 자바에서는 표준 프로토콜(TCP/IP, XML 등)을 사용하기 때문에 안정적입니다. 이런 장점 때문에 스트럿츠 프레임워크 기반으로 개발되는 추세입니다.
스트럿츠2는 오리지날 MVC패턴(?)급이기 때문에 접근하기가 쉽습니다. Jakarta프로젝트에서 개발한 오픈소스의 웹 어플리케이션 프레임워크로 널리 보급되어 사용되고 있습니다. MVC기본개념을 따르고 있으며, 앞서 MVC를 알아봤다 싶이 모델, 뷰, 컨트롤 부분이 철저하게 분리됩니다.
혹시나 모르니 MVC를 되돌아 봅시다.
모델 : 웹 어플리케이션 서버가 처리할 데이터 영역을 의미. 주로 DB연동 빈(Bean) 부분.
뷰 : 사용자 인터페이스, 보여주는 부분 주로 JSP페이지
컨트롤 : 모델과 뷰 사이에 흐름을 제어하는 역할.
스트럿츠1 에서 2로 버전업이 되면서 탈바꿈하여 초보자들도 쉽게 접할 수 있도록 편리한 결합형태로 변화했습니다. 단순함과 개발툴의 친화성, 어플리케이션 구축에서 배포, 유지보수 전 영역에 거처 풀 개발 사이클을 가질 수 있도록 디자인된 프레임워크입니다.
스트럿츠2 특징
① 완전히 새로운 프레임워크
- 스트럿츠1때와 다른 웹워크2의 MVC 아키텍처 채용
② 직관적인 개발
- POJO기반 액션 사용
③ Zero configration 지향
- 기본값 지원으로 많은 설정을 생략한다.
④ 신속한 리로딩
- 변경된 환경설정 파일의 내용을 웹컨테이너 재시작없이 리로드 가능
⑤POJO 액션, 폼
-프레임워크에 종속되지 않는다.
-Mock객체에 의존하지 않고 손쉽게 테스트가 가능하며 별도의 폼 빈이 필요 없다.
⑥손쉬운 Ajax구현
-Dojo 프레임워크포함
-Ajax 테마지원태그
⑦다양한 표현식 언어
-JSTL사용가능
-ONGL지원
⑧다양한 리절트 타입의 지원 및 프로파일링
-JSP외에 프리마커,밸로시티등의 사용가능
-요청처리과정 프로파일링
⑨의존성 주입지원
-구글주스프레임워크를 사용하여 프레임워크 내부 핵심 객체의 라이프 사이클 관리
결과적으로 이 프레임워크라는게 MVC(Model-View-Controller)라는 구조 자체를 프레임워크라고도 하고, 이를 쉽게 구현할 수 있도록 환경을 제공하는 컴포넌트들의 집합체를 프레임워크라하기도 합니다
<출처: http://blog.naver.com/pksaladin/30078652603>
<스트럿츠 파일 구성>
*web.xml : 웹 어플리케이션의 기본적인 환경설정 파일.
<web.xml>
<web-app>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2<filter-name>
<url-pattern> /*</url-pattern>
</filter-mapping>
</web-app>
- <filter-class> struts2란 필터를 등록한다.
- <url-pattern>에서 /*의 뜻은 요청되어서 들어오는 모든 URL을 struts2필터로 한다. 이런뜻!
*struts.xml : 웹 어플리케이션 내의 처리흐름 결정 파일
1. action명으로 HelloWorld가 호출되면 HelloWorld라는 액션클래스를 호출한다.
2. HelloWorld.java에서 result값이 success 이면 helloWorld.jsp를 호출한다!!
주로 result값의 명명을 하는것이 기본이며, 이밖에 파라미터의 값들도 명시해주고, 아무튼 많다~
<action name="HelloWorld" class="HelloWorld">
<result name="success">helloworld.jsp</result>
</action>
result값이 success이면 helloworld.jsp을 실행시킨다.
*액션클래스(.action)
<HelloWorld.java>
public class HelloWorld{
public String execute() throws Exception{
this.message = "Hello, World!!"
return "success";
}
}
default메소드인 execute()를 명명해주었다. 간단하게 Hello, World메시지를 출력.
return값으로 success를 주게 되는데 여기서 struts.xml파일에서 result값과 일치함으로
helloworld.jsp를 호출하게 된다.
*JSP파일(helloWorld.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitinal//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1> ${message} </h1>
</body>
</html>
helloWorld.jsp에서는 결과를출력하기위해서 ${message}라는 표현을 썼다.
직접적인 표현을 하는 기본적인 구문이다.
<출처: http://blog.naver.com/miae1216/20099132741>