본문 바로가기
IT_Developers/struts2

Struts2 - ActionSupport 사용법

by 고코더 2019. 10. 4.


ActionSupport 기본 예제


안녕하세요.
고코더 입니다.


이제 헬로우도 끝났고 ActionSupport에 대해 배워 보려고 합니다. 
지난 시간에는 최대한 간단하게 코드를 위해 action으로 구현했습니다.
이번 시간에는 실무에서 많이 사용하는 액션인 ActionSupport 활용해 개발해보겠습니다.



TestAction.java 파일 생성


게시판을 만들기 위해 class명TestAction을 생성 합니다. 패키지는 test 입니다. 

그리고 소스 내용은 아래처럼 채웁니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package test;
import com.opensymphony.xwork2.ActionSupport;
public class TestAction extends ActionSupport {
     String Title;
     String Content;
     public String getTitle() {
           return Title;
     }
     public void setTitle(String Title) {
           this.Title = Title;
     }
     public String getContent() {
           return Content;
     }
     public void setContent(String Content) {
           this.Content = Content;
     }
     
     public String getView() {
           //this.Title = "제목";
           //this.Content = "내용";
           return SUCCESS;
     }
}
cs
3번 라인 : 이전 시간과 달리 ActionSupport를 사용합니다.
6번 라인 : get으로 뷰 Title 값을 전달합니다.
9번 라인 : set은 파라미터에 값을 받아 사용할 수 있습니다.
19번 라인 : 게시판에 상세보기를 getView()로 생성하였습니다.



view.jsp 생성


이제 게시판에 상세뷰를 보여줄 수 있는 jsp를 생성합니다. 기존 WEB-INF에 test 라는 폴더아래 파일을 생성하겠습니다. 

그리고 내용은 아래처럼 채웁니다.
1
2
3
4
5
6
7
8
9
10
11
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
     제목 : ${Title}
     내용 : ${Content}
</body>
</html>
cs



struts.xml 수정 - method 사용


액션 클래스가 생성 되었으니 struts.xml 파일에도 수정이 필요합니다. 
지난 시간에 다룬 헬로우와 다른건 method가 존재합니다. 해당 메소드는 클래스에 메소드까지 참조합니다.

1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
   
<struts>
       <package name="Struts2Gocoder" extends="struts-default">         
             <action name="view" class="test.TestAction"  method="getView">
                 <result name="success"  >/WEB-INF/test/view.jsp</result>
             </action>  
       </package>                
</struts>
cs
7번 라인 : method는 해당 클래스에 지정된 메소드를 실행 합니다. 
8번 라인 : 맵핑 될 view 소스 주소를 기록 합니다. 


결과 화면 


오늘 실습해본 URL


Struts2에서 action(액션)이란 Action 과 ActionSupport의 차이 


스트럿츠에서 액션은 로직을 수행하는 역할로 가장 중요한 개념입니다. 서블릿의 역할을 하며 실질적인 비지니스 로직을 수행합니다. 
Bean으로의 역할로 getter(게터), setter(세터)를 통해 데이터 값을 빈에 저장합니다. 

2가지 액션의 차이
- com.opensymphony.xwork2.Action
- com.opensymphony.xwork2.ActionSupport

두 액션의 가장 큰 차이는 상속 방법으로 나뉠수 있습니다.
ActionSupport - extends(클래스 상속)
Action- implements(인터페이스 구현)

extends하는 ActionSupport는 다양하게 확장이 가능한 구조라는걸 한눈에 알 수 있습니다.
실무에서 가장 많이 사용하는 ActionSuppot 방식은 유효성 검사, 형 변환, 모델 오브젝트등을 사용 가능하며 
Action , Validateable, ValidationAware, TextProvider, LocaleProvider 인터페이스를 구현함으로 다양한 활용이 가능합니다.



마무리


최대한 느리고 천천히 진도를 나가려고 합니다.
그리고 시간이 날때마다 올리겠습니다. (요즘 바뻐서..)

댓글