struts 2에서 제공하는 annotation을 설정함으로서 struts 2에서 기본형으로 제공되던 xml을 참조해 action을 수행할 필요가 없다. 즉 struts.xml파일을 작성하지 않고 사용할 수 있다.
기본개념
1. 기본형일 때는 jsp 페이지에서 properties 파일에서 설정한 대로 뒤에 접두사를 설정한데로 (3가지를 설정했으면 3가지 모두 ex) *.do *.action *.bit)
접근할 수 있지만 annotation을 사용하면 접두사는 무조건 .action을 사용해야 한다.
2. jsp페이지에서 register.acton 이라는 주소로 페이지를 요청했을때 수행 되어야 할 action Class의 이름은 무조건 RegisterAction 이어야 한다.
register.action == > register + action ==>RegiserAction
왜냐 하면 따로 Action Class를 맵핑 시켜주는 xml 문서가 존재 하지 않기 때문에 다음과 같은 이름설정으로 struts 2에서 자동적으로 맵핑이 되게 설정 되어 있다.
설정방법
1. web.xml 파일에서 filter Dispatcher 설정에서 init-param을 설정한다
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
<init-param>
<param-name>actionPackages</param-name>
<param-value>com.myhome.anno</param-value>
</init-param>
</filter>
- param-name 은 annotation을 사용하기 위한 예약어 이다. 꼭 저렇게 써야 한다.
- param-value 는 annotation을 통해 실행될 action이 모여있는 패키지를 설정한다.
2. annotation을 사용할 jsp 페이지의 확장자는 모두 .action 으로 수정한다.
3. jsp페이지의 .action에 대응하는 Action Class를 생성한다.
--------------------------------------------------------------------------------------
package com.myhome.anno;
import org.apache.struts2.config.Result;
import com.myhome.info.dao.InfoDAO;
import com.myhome.info.vo.InfoVO;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
@Result (name="success",value="/WEB-INF/anno/modify.jsp")
public class QueryAction extends ActionSupport{
private InfoVO bean;
@Override
public String execute() throws Exception {
bean = new InfoDAO().getQuery(bean);
return SUCCESS;
}
public InfoVO getBean() {
return bean;
}
public void setBean(InfoVO bean) {
this.bean = bean;
}
}
--------------------------------------------------------------------------------------
위에서 처럼 @result 를 통해 이동할 페이지를 선언해 주고 있다.
execute method에서 리턴 되는 값이 @result 의 name에 대응하고 반응 한다.
여기서 중요한 점은 execute method에서 "SUCCESS" 라는 대문자로 리턴 하더라도 name 에는 소문자로 "success" 라고 선언해 주어야 한다.
@results 라는 것을 통해서 @result를 복수로 설정할 수 있다.
@Results({
@Result(name="success", value="/WEB-INF/anno/list.jsp"),
@Result(name="input", value="/WEB-INF/anno/fail.jsp")
})
※ action을 설정한 xml 파일을 include 하고 있는 struts.xml이 존재하고 annotation을 수행할때
http://localhost:8989/struts2/00000/index.action
이라고 url이 들어왔을때 맨처음 struts.xml 파일에 include된 xml파일에서 다음과 같은 namespace가 있나 확인 한다.
만약 xml파일에 선언된 네임스페이스가 존재 하지 않을때 비로서 web.xml 파일에 설정한 init-param으로 이동하고 설정한 Action으로 이동하게 된다.
'Framework > STRUTS 2' 카테고리의 다른 글
struts 2 - session 사용하기 (1) | 2009.07.05 |
---|---|
struts 2 - action을 선언한 xml에서 result property 들 (0) | 2009.07.05 |
struts 2 - validator (0) | 2009.07.03 |
struts 2 - 스트럿츠 2의 defalte설정 (0) | 2009.07.03 |
struts 2 - 기본 작동 순서 (0) | 2009.07.02 |