- 우선, STRUTS 에서 구성하는 방법 세가지
1. POJO(Plain Old Java Object)
2. implements Action
3. extends ActionSupport (유효성 체크 가능 : validate() )
요건 알고 시작해야지!
- 2번째 implements Action 에서 도메인 오브젝트(모델영역 : ex - User.java)
모델영역의 도메인 오프젝트를 독립적으로 분리시킴으로써, 어떤 프레임워크 상에서 어떤 뷰를 사용해서 어떻게 구현하였는지
에 대한 영향을 받지 않도록 하기위함.
MVC 패턴지향의 예(교재 : 스트럿츠2 프로그래밍 입문)
1. Model
2. Action
3. Dao
- 모델(Model : Bean.java) 생성(Getter * Setter) 후 struts.xml 에 <action name="" class=""></action> 등록하고
package model;
public class User {
private String userId;
private String userPw;
private String userName;
/* Getter & Setter */
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserPw() {
return userPw;
}
public void setUserPw(String userPw) {
this.userPw = userPw;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
/* toString */
@Override
public String toString() {
String result;
result = "User [userId=" + userId + ", userPw=" + userPw + ", userName="
+ userName + "]";
return result;
}// end - toString Method
}// end - UserClass
- <action></action> 밑에 <interceptor-ref name="params"/> 등록해서 입력 폼에서 요청 파리미터와 같은 이름을 가진
액션 프로퍼티에 값을 저장, 액션 수행 execute() 후 실행할 result 페이지 등록
<struts.xml>
<!-- 도메인 오브젝트 테스트 -->
<action name="UserRegForm2">
<result>/jsp/userRegForm2.jsp</result>
</action>
<action name="UserRegAction2" class="action.UserRegAction2">
<interceptor-ref name="params"/>
<result name="success">/jsp/userRegSuccess.jsp</result>
</action>
- action 페이지에서 도메인 오프젝트(Model : Bean) 생성, get, set 생성 후
execute() 메서드에서 Dao 호출하여 DB 작업
<UserRegAction2.java>
package action;
import model.User;
import com.opensymphony.xwork2.Action;
import dao.UserDao;
public class UserRegAction2 implements Action {
private User user;
public User getUser() {
return user;
}
public void setUser(User user){
this.user = user;
}
@Override
public String execute() throws Exception {
/* Dao Instance Create */
UserDao userDao = new UserDao();
userDao.create(user);
return SUCCESS;
}// end - execute Method
}// end - UserRegAction2 class
- action 에서 Model 객체 Dao 넘김 -> Dao 에서 데이타베이트 처리(현 예제는 간단히 Model 객체 출력으로 대처)
<UserDao>
package dao;
import model.User;
public class UserDao {
public void create(User user) {
System.out.println("사용자를 추가하였습니다.");
System.out.println("추가된 사용자의 정보");
System.out.println(user);
}// end - create Method
}// end - UserDao class
이런 방식인데. 현 주제의 implements Action 도메인 오브젝트 를 사용하면 입력 폼이 있는 JSP 페이지에서
<form action="action Name"> 으로 넘겨줄때 Parameter 이 액션객체로 넘어갈때. 액션에 생성된 Model 인스턴스명 + 변수명 을
같이 지정해 주어야 한다.
(※ 책에서 그냥 도메인오브젝트명이래서 긴가민가 하다 액션에서 Model 인스턴스명 변경하고 테스트하니 오류 발생)
<input type="text" name="액션에서생성한Model 인스턴스명.변수명"> -> <input type="text" name="user.userId"> 이렇게!!!
또. action execute() SUCCESS 이후 struts.xml 에 등록한 <result name="success"></result> 에 등록한 페이지에서 보여줄때도
같은방식으로 보여줘야 한다. 예를 들면 아이디 : ${user.userId} 이렇게!!!!
와~ 신기하다!! 근데 조금만 쓰면 입력 폼이 존재하는 JSP 와 결과를 보여줄 JSP 모든 뷰에서 action 에서 생성한 인스턴스명을 꼭
붙여주여야 해서 어간 불편한게 아닐수 아닐수 아닐수 없을수 없다.
그래서. 사용하는것이 "ModelDriven" 와 "Preparable" 두개이다. 이건 다음장에서 설명
'공부 > STRUTS2' 카테고리의 다른 글
STRUTS_[리절트 타입 Dispatcher 와 redirect 차이] (0) | 2012.11.20 |
---|---|
STRUTS_[struts2 아키텍처 & Intercept] (0) | 2012.11.20 |
STRUTS_[체인 리절트를 활용한 액션 체인] (0) | 2012.11.19 |
STRUTS_[Struts2 요소] (0) | 2012.11.02 |