1. 소개
Apache Struts 2 는 엔터프라이즈 Java 웹 애플리케이션 개발을 위한 MVC 기반 프레임워크입니다. 원래 Struts 프레임워크를 완전히 다시 작성했습니다. 오픈 소스 API 구현과 풍부한 기능 세트가 있습니다.
이 사용방법(예제)에서는 Struts2 프레임워크의 다양한 핵심 구성 요소에 대한 초보자용 소개를 제공합니다. 또한 사용 방법을 보여 드리겠습니다.
2. Struts 2 프레임워크 개요
Struts 2 기능 중 일부는 다음과 같습니다.
- POJO(Plain Old Java Objects) 기반 작업
- REST, AJAX, Hibernate, Spring 등을 위한 플러그인 지원
- 구성에 대한 규칙
- 다양한 뷰 레이어 기술 지원
- 프로파일링 및 디버깅 용이성
2.1. Struts2의 다른 구성 요소
Struts2는 MVC 기반 프레임워크이므로 모든 Struts2 애플리케이션에는 다음 세 가지 구성 요소가 있습니다.
- Action 클래스 – POJO 클래스입니다(POJO는 유형 계층 구조의 일부가 아니며 독립 실행형 클래스로 사용할 수 있음을 의미함). 여기서 비즈니스 로직을 구현할 것입니다.
- 컨트롤러 – Struts2에서 HTTP 필터는 컨트롤러로 사용됩니다. 기본적으로 요청/응답 가로채기 및 유효성 검사와 같은 작업을 수행합니다.
- 보기 – 처리된 데이터를 표시하는 데 사용됩니다. 일반적으로 JSP 파일입니다.
3. 애플리케이션 설계
웹 앱 개발을 진행해 봅시다. 사용자가 특정 자동차 브랜드를 선택하면 Custom형 메시지로 인사를 받는 애플리케이션입니다.
3.1. 메이븐 의존성
pom.xml 에 다음 항목을 추가해 보겠습니다 .
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.10</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-junit-plugin</artifactId>
<version>2.5.10</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-convention-plugin</artifactId>
<version>2.5.10</version>
</dependency>
의존성의 최신 버전은 여기 에서 찾을 수 있습니다 .
3.2. 비즈니스 로직
특정 입력 값에 대한 메시지를 반환하는 작업 클래스 CarAction 을 만들어 봅시다 . CarAction 에는 carName (사용자의 입력을 저장하는 데 사용됨) 및 carMessage (표시할 사용자 지정 메시지를 저장하는 데 사용됨 ) 의 두 필드가 있습니다.
public class CarAction {
private String carName;
private String carMessage;
private CarMessageService carMessageService = new CarMessageService();
public String execute() {
this.setCarMessage(this.carMessageService.getMessage(carName));
return "success";
}
// getters and setters
}
CarAction 클래스는 자동차 브랜드 에 대한 사용자 정의 메시지를 제공하는 CarMessageService 를 사용합니다.
public class CarMessageService {
public String getMessage(String carName) {
if (carName.equalsIgnoreCase("ferrari")){
return "Ferrari Fan!";
}
else if (carName.equalsIgnoreCase("bmw")){
return "BMW Fan!";
}
else {
return "please choose ferrari Or bmw";
}
}
}
3.3. 사용자 입력 수락
애플리케이션의 진입점인 JSP 를 추가해 보겠습니다 . 이것은 input.jsp 파일의 내용입니다.
<body>
<form method="get" action="/struts2/tutorial/car.action">
<p>Welcome to Baeldung Struts 2 app</p>
<p>Which car do you like !!</p>
<p>Please choose ferrari or bmw</p>
<select name="carName">
<option value="Ferrari" label="ferrari" />
<option value="BMW" label="bmw" />
</select>
<input type="submit" value="Enter!" />
</form>
</body>
< form > 태그는 작업을 지정합니다(이 경우에는 GET 요청을 보내야 하는 HTTP URI입니다).
3.4. 컨트롤러 부분
StrutsPrepareAndExecuteFilter 는 들어오는 모든 요청을 가로채는 컨트롤러입니다. web.xml 에 다음 필터를 등록해야 합니다 .
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
StrutsPrepareAndExecuteFilter 는 와일드카드 <url-pattern>/*</url-pattern>과 일치하는 URL을 지정하므로 들어오는 모든 요청을 필터링합니다.
3.5. 애플리케이션 구성
Car 작업 클래스에 다음 어노테이션을 추가해 보겠습니다 .
@Namespace("/tutorial")
@Action("/car")
@Result(name = "success", location = "/result.jsp")
이 어노테이션의 논리를 이해해 봅시다. @ 네임스페이스 는 다른 작업 클래스에 대한 요청 URI의 논리적 분리에 사용됩니다 . 요청에 이 값을 포함해야 합니다.
또한 @Action 은 Action 클래스에 도달할 요청 URI의 실제 Endpoints을 알려줍니다 . 작업 클래스는 CarMessageService 를 참조 하고 다른 멤버 변수 carMessage 의 값을 초기화합니다 . execute() 메서드가 값 ( 우리의 경우 "success" )을 반환 한 후 해당 값과 일치하여 result.jsp 를 호출합니다.
마지막으로 @Result 에는 두 개의 매개변수가 있습니다. 첫 번째 이름 은 Action 클래스가 반환할 값을 지정합니다 . 이 값은 Action 클래스 의 execute() 메서드 에서 반환됩니다. 이것은 실행될 기본 메소드 이름입니다 .
두 번째 부분인 위치 는 execute() 메서드가 값을 반환한 후 참조할 파일을 알려줍니다 . 여기서 우리는 execute() 가 값이 " success "인 문자열을 반환 할 때 요청을 result.jsp 로 전달해야 한다고 지정합니다 .
XML 구성 파일을 제공하여 동일한 구성을 얻을 수 있습니다.
<struts>
<package name="tutorial" extends="struts-default" namespace="/tutorial">
<action name="car" class="com.baeldung.struts.CarAction" method="execute">
<result name="success">/result.jsp</result>
</action>
</package>
</struts>
3.6. 보기
이것은 사용자에게 메시지를 표시하는 데 사용될 result.jsp 의 내용입니다.
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<body>
<p> Hello Baeldung User </p>
<p>You are a <s:property value="carMessage"/></p>
</body>
여기서 주목해야 할 두 가지 중요한 사항이 있습니다.
- <@taglib prefix=”s” uri=”/struts-tags %> 에서 struts-tags 라이브러리 를 가져오고 있습니다.
- <s:property value=”carMessage”/> 에서 struts-tags 라이브러리를 사용 하여 속성 carMessage 의 값을 인쇄합니다.
4. 애플리케이션 실행
이 웹 앱은 Apache Tomcat과 같은 모든 웹 컨테이너에서 실행할 수 있습니다. 이를 달성하는 데 필요한 단계는 다음과 같습니다.
- 웹 앱을 배포한 후 브라우저를 열고 다음 URL에 액세스합니다. http://www.localhost.com:8080/MyStrutsApp/input.jsp
- 두 가지 옵션 중 하나를 선택하고 요청을 제출하십시오.
- 선택한 입력 옵션에 따라 사용자 정의된 메시지 가 있는 result.jsp 페이지로 이동합니다.
5. 결론
이 사용방법(예제)에서는 첫 번째 Struts2 웹 애플리케이션을 만드는 방법에 대한 단계별 사용방법(예제)를 살펴보았습니다. 우리는 Struts2 도메인에서 다양한 MVC 관련 측면을 다루었고 개발을 위해 이들을 결합하는 방법을 보여주었습니다.
언제나처럼 이 예제은 Github 에서 Maven 프로젝트로 찾을 수 있습니다.