이번엔 struts2의 s태그의 action이라는 속성을 이용하여 page include를 하여보자.
이건 뭐 생각보다 간단해서 설명을 해야 할까. 아니면 걍 소스만 올릴까 하다가 그래도 설명까지 해놓기로 한다.
일단은 struts2 + ibatis로 설정이 되어 있다는 가정하에 시작한다.
아! 이 전글인 s:url 과 sx:div를 읽어 보았다면 이 것은 뭐 누워서 껌뱉어서 다시 먹고 씹을 수 있는 그런게 아닐까 한다.
암튼 테스트방식은 db까지는 아니고 간단하게 본 페이지에서 action을 호출하여 뿌려지는 jsp 페이지를
include하는 형태의 테스트를 하겠다.
일단 testAction.java, actionLayout.jsp, actionTest.jsp 를 생성한다.
actionTest.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Action Test page</title>
</head>
<body>
<div style="background-color: silver">
actionLayout 페이지로 inlucde 되어질 페이지.<br/>
actionTest Action 호출 결과 값<br/>
<s:property value="test1" /><br/>
<s:property value="test2" />
</div>
</body>
</html>
여기는 별 내용없다. actionLayout.jsp 페이지에 include 되어질 페이지니까. 그냥 action에서 보낸 값만 뿌려는 페이지.
참고로 일단 div에 색을 입혀 놧다.
actionLayout.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Action Layout page</title>
</head>
<body>
actionTest 페이지를 호출하기 위한 페이지<br/><br/>
<div style="background-color: blue">
actionTest 호출
<s:action name="actionTest" executeResult="true" />
</div>
<br/>
<div style="background-color: yellow">
actionLayout Action 호출 결과 값 <br/>
<s:property value="layout1" /><br/>
<s:property value="layout2" />
</div>
</body>
</html>
여기서 s태그를 사용하기 위해서 빨간색 형광펜으로 된 것을 선언해준다.
그리고 빨간색 글씨가 s:action을 사용하는건데 name에는 호출할 action 명을 적어주면 된다.
여기서도 호출되어지는 부분을 div로 감싸서 색을 칠해줫다. 파란색으로.
왜 actionTest.jsp 랑 actionLayout에서 색을 칠하는 지는 아래에서 확인을 하자.
그리고 executeResult="true" 는 해당하는 action을 호출 후 result 되는 페이지를
이부분에 뿌려줄 것인가를 선택하는 것이다. true를 할경우 뿌리고 false로 하면 안뿌린다.
false를 하게 되면 action만 실행하게 되는 것이다.
testAction.java
public class testAction extends ActionSupport {
private String layout1;
private String layout2;
private String test1;
private String test2;
public testAction(){}
public String actionTest(){
test1 = "actionTest Action Method";
test2 = "TEST SUCCESS";
return SUCCESS;
}
public String actionLayout(){
layout1 = "actionLayout Action Method";
layout2 = "TEST SUCCESS";
return SUCCESS;
}
public String getLayout1() {
return layout1;
}
public void setLayout1(String layout1) {
this.layout1 = layout1;
}
public String getLayout2() {
return layout2;
}
public void setLayout2(String layout2) {
this.layout2 = layout2;
}
public String getTest1() {
return test1;
}
public void setTest1(String test1) {
this.test1 = test1;
}
public String getTest2() {
return test2;
}
public void setTest2(String test2) {
this.test2 = test2;
}
}
간단하게 jsp에서 action을 실행했을 경우 리턴값을 던져주는 형태이다.
뭐 실제로는 db까지 연동해서 원하는 값을 리턴해야겠지만.
테스트 형태이므로 간단하게~~
struts.xml 파일에 들어가는 result 코드는 생략하기로 한다.
워낙 간단하니까 욕먹을라.;;;ㅋㅋ
이렇게 하고 난후 실행을 시켜보자.
실행 url은 actioinLayout.action을 실행한다.
실행 화면은 다음과 같다.
여기서 보면 회색부분이 actionTest.action을 수행하고 들어 온 result 페이지이다.
result페이지는 아시다 싶이 actionTest.jsp.
원래 actionLayout.jsp에서 actionTest.action 호출하는 부분에 div로 파란색으로 감쌌는데.
actionTest.jsp에서 출력되는 곳을 회색으로 감쌌으므로 색은 당연히 회색으로 나오게 된다.
action을 수행 확인은 actionTest Action Method와 TEST SUCCESS 이다.
노란색 부분은 actionLayout.jsp에서 actionLayout.action 실행 확인차 해놓은 것임.
이로써 아주 간단한 s:action 에 대해서 알아보았다.
s:action 을 잘만 사용한다면 쉽게 쉽게 코딩을 할 수 있지 않을까 생각한다.
오늘은 시간이 없는 관계로 주절주절은 이만.ㅋㅋ;;;
그럼 다음엔 뭐 또 다른걸로 보자. ㅋㅋ
특별한 기능을 사용할때 다시 글을 쓰도록 하고~바이~