- 우선, 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" 두개이다. 이건 다음장에서 설명









+ Recent posts