반응형
회사에서 기존 프로젝트를 인계받아 운영 업무를 진행하려고 하였을 때, 소스를 확인해보니 자주 사용하던 spring 기반의 프로젝트가 아닌 struts2 기반으로 개발된 프로젝트였다.
struts2 에 대해서 처음 알게 되어, 해당 내용을 공부하여 기록하고자 한다.
1. Struts Framework 란?
- Struts 는 Model(모델), View(뷰), Controller(컨트롤러) 아키텍쳐를 나타내는 MVC 모델을 기반으로 하는 프레임워크 이다.
- 오픈 소스 플랫폼이며 엔터프라이즈 에디션 웹 어플리케이션을 개발하는데 사용한다.
- 사용자의 요청을 처리하는 요청 기반 프레임워크를 기반으로 개발되어, 요청 핸들러와 응답 핸들러가 존재한다.
- Ajax, REST 및 SOAP이 지원 된다.
- 아파치 프로젝트의 일부에서 진행된다.
- Struts1 과 Struts2 차이점
- Struts2는 Struts1 과 웹 워크가 결합한 형태
- Struts2는 Struts1의 서블릿 방식에서 필터 방식으로 변화와 Action 부분이 POJO로 구현
- XML 기반의 환경 설정, 태그 라이브러리 지원, 국제화 지원 등 다양한 유틸리티 제공
2. Struts Framework 특징
- 완전히 새로운 프레임워크
- 스트럿츠 때와는 다른 웹워크2의 MVC 아키텍쳐 선택 - 직관적인 개발
- POJO 기반의 동작(Action) - 제로 컨피규레이션 지향
- 기본 값 지원으로 설정 생략 가능
- 어노테이션 사용으로 설정 파일에서 설정 생략 가능 - 신속한 리로딩
- 변경된 환경 설정 파일의 내용을 웹 컨테이너 재시작 없이 리로드 - POJO Action, POJO Form
- 프레임워크에 종속되지 않음 - 손 쉬운 Ajax 구현
- Ajax 테마 지원 태그 - 다양한 표현식 언어 EL 지원
- JSTL 사용 가능 - 다양한 Result 타입의 지원 및 프로파일링
- JSP 외에 프리마커(FreeMarker), 벨로시티(Velocity) 등의 사용 가능
- 요청 처리 과정 프로파일링 - 의존성 주입(DI) 지원
- 구글 주스(Google Guice) 프레임워크를 사용하여 프레임워크 내부 핵심 객체의 라이플 사이클 관리
3. Struts 동작 및 구조
- Struts 동작
- 스트럿츠2는 사용자요청을 받고 원활하게 작동할 수 있도록 환경을 설정
- 어떤 액션을 호출할지 결정 후 액션을 실행
- Result를 실행시킨후 최종 응답데이터를 사용자에게 반환하는 역할을 하는 컨트롤러를 제공
- Struts 구조
- 1. StrutsPrepareAndExcecuteFilter
- 브라우저로 부터 요청을 받아 개별 처리와 뷰를 호출 - 2. Interceptors
- 복수의 요청에 대해 공통 처리
- 인증, 로깅 등
- 내장된것을 사용하거나 개발자가 직접 작성 - 3. Action
- 요청별로 개별 처리 - 4. Result
- 뷰 종류 (JSP, Velocity..)와 관련 속성(JSP파일경로) 등 관리
- 뷰 표시하는 역할
- 액션 처리 후 Result로 이동 - 5. Context Map
- 뷰에서 액세스할 데이터가 저장
- 액션 처리에서 얻은 model과 HttpServletRequest 같은 서블릿 관련 오브젝트가 저장 - 6. OGNL
- Context Map 안의 데이터에서 엑세스 할 때 사용하는 식 언어
- JSP가 지원하는 EL과 같다
- 데이터 액세스 또는 사칙연산, 비교연산 가능 - 7. Struts-Tags
- 뷰에 기술할 태그
- HTML을 효율적으로 렌더링
- 1. StrutsPrepareAndExcecuteFilter
참고
- https://www.geeksforgeeks.org/spring-vs-struts-in-java/
- https://hyunmin1906.tistory.com/210
- http://wiki.gurubee.net/pages/viewpage.action?pageId=1507889
반응형
'Tool, 이론 및 기타 > 이론' 카테고리의 다른 글
쿠키(Cookie), 세션(Session) 비교하기 (0) | 2022.04.30 |
---|---|
Spring MVC vs Struts2 비교하기 (0) | 2022.04.21 |
[프로그래밍언어] 절차지향 vs 객체지향 vs 함수형 프로그래밍 비교 (4) | 2022.04.20 |
HTTP (2) (0) | 2020.03.01 |
HTTP (1) (0) | 2020.03.01 |