Apache struts

[Struts2]Apache Struts2에 대하여

kchs0529 2025. 3. 13. 15:56

🚀 Apache Struts2란?

  • Java 기반 MVC 웹 프레임워크
  • Servlet + JSP 기반으로 동작
  • XML 설정(struts.xml)을 통해 컨트롤러, 뷰 연결
  • Spring MVC 등장 전, 웹 개발의 표준이었던 프레임워크

📌 Struts 주요 개념

구성 요소 역할
StrutsPrepareAndExecuteFilter 모든 요청을 중앙에서 관리 (Front Controller 역할)
Action 클래스 컨트롤러 역할, 비즈니스 로직 처리 (Struts 1의 ActionServlet 없이 직접 실행됨)
Interceptor 요청과 응답을 가로채서 공통 로직 처리 (예: 인증, 로깅, 예외 처리 등)
JSP(View) 사용자 화면 (Struts 2 태그 및 OGNL 표현식 사용 가능)
struts.xml 요청 URL과 액션 클래스 매핑 (Struts 1의 struts-config.xml 대체)
ValueStack & OGNL 데이터 저장 및 표현식 언어 처리 (Action 클래스의 속성 접근 가능)
ActionSupport 기본 기능을 제공하는 Struts 2의 Action 클래스 (유효성 검사, 로깅 등 지원)

📂 Struts의 동작 방식

  1. 사용자 요청 → StrutsPrepareAndExecuteFilter
  2. StrutsPrepareAndExecuteFilter → 요청을 매핑된 Action으로 전달
  3. 요청 전 Interceptor 실행 → 사전 처리 (예: 로그인 체크, 로깅 등)
  4. Action 실행 → 비즈니스 로직 처리 및 데이터 생성
  5. 요청 후 Interceptor 실행 → 후처리 (예: 응답 가공, 데이터 변환 등)
  6. Result 반환 → 어떤 View를 보여줄지 결정
  7. View 렌더링 → JSP 등을 이용해 화면을 생성
  8. 클라이언트에게 HTTP 응답 전송

🔥 Struts 1 vs Struts 2

비교 항목 Struts 1 (구버전) Struts 2 (최신)
설정 방식 struts-config.xml struts.xml
Form Bean ActionForm 필요 POJO 사용 가능
Action 클래스 execute() 고정 여러 메서드 정의 가능
DI 지원 없음 Spring과의 통합 가능하지만 기본적으로 독립적
Ajax 지원 없음 JSON 플러그인을 통해 지원 가능

Struts의 장점

  • MVC 구조 제공 (Servlet + JSP 관리 용이)
  • Struts 2 태그 라이브러리 제공 (<s:form>, <s:textfield> 등)
  • 기존 Java EE 환경과 호환 가능

Struts의 단점

  • 설정 파일이 많음 (struts.xml 복잡)
  • Spring MVC에 비해 확장성 부족
  • Ajax 및 최신 웹 기술 지원 부족
  • 현재 대부분 Spring Boot로 대체됨