JaeWon's Devlog
article thumbnail
반응형

회사에서 기존 프로젝트를 인계받아 운영 업무를 진행하려고 하였을 때, 소스를 확인해보니 자주 사용하던 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를 실행시킨후 최종 응답데이터를 사용자에게 반환하는 역할을 하는 컨트롤러를 제공

https://www.geeksforgeeks.org/spring-vs-struts-in-java/

  • 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을 효율적으로 렌더링

 

http://wiki.gurubee.net/pages/viewpage.action?pageId=1507889


참고

- https://www.geeksforgeeks.org/spring-vs-struts-in-java/

- https://hyunmin1906.tistory.com/210

- http://wiki.gurubee.net/pages/viewpage.action?pageId=1507889 

반응형
profile

JaeWon's Devlog

@Wonol

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!