카테고리 없음
[Struts2] 기본적인 구조
och
2024. 11. 14. 09:08
JSP
machine이라는 키값을 getMachine이라는 메서드에 넘기고 있다.
<form action="getMachine" method="post">
<label for="machine">Machine:</label>
<input type="text" name="machine" id="machine" />
<input type="submit" value="submit" />
</form>
Struts2 action Class
@Getter
@Setter
public class MachineAction extends ActionSupport {
priavet String machine; // JSP 에서 넘겨받을 machine 변수
@Override
public String execute() throws Exception {
System.out.println("Received machine value:" + machine);
return SUCCESS; // 이 부분 어디에 정의되어 있는상수지..
}
}
Struts2에서는 JSP에서 전달된 값을 액션 클래스에서 프로퍼티로 받을 수 있다.
위 코드에서 setter는 반드시 필요하다. 데이터를 주입할 때 setter를 사용하게 된다.
나는 여기서 데이터 레이스가 발생할 수도 있지 않을까? 생각중이다.
싱글턴
스트럿츠2의 액션 객체는 요청마다 생성된다. 따라서 프로퍼티에서 데이터레이스가 발생할 일은 없다. 단, static
인 클래스변수 또는 Application Scope
의 데이터를 사용하게 되면 데이터레이스가 발생할 수도 있다.
struts.xml 설정 파일 작성하기
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<!-- getMachine 액션정의 -->
<action name="getMachine" class="com.example.MachineAction">
<result name="success">/success.jsp</result> <!-- 성공 시 이동할 JSP -->
</action>
</package>
</struts>
name : package를 식별하는 고유 이름입니다.
namespace : URL경로와 package를 매핑하는 데 사용됩니다.
- /getMachine 요청이 들어오면, namespace="/"로 정의된 패키지에서 getMachine이라는 이름의 액션을 찾습니다.
- 일반적으로 프로젝트가 커질수록 액션을 구분하고 관리하기 위해 서로다른 네임스페이스를 사용합니다.
extends : 해당패키지가 확장할 기본 패키지를 지정합니다.