본문 바로가기

Struts/Struts Programming

[Struts] 도메인 오브젝트

반응형

■ 회원 정보를 저장하기 위한 도메인 오브젝트

 -. 데이터 베이스에 정보를 저장하는 계층을 퍼시스턴스 계층(Persis-tence Layer)이라고 한다.

    퍼시스턴스 계층 역시 모델 영역에 포함된다.

 -. 퍼시스턴스 계층은 별도의 도메인 오브젝트를 설계하되, DAO(Data Access Object) 패턴으로 구현하는것이 바람직 하다.


  User.java

package model;

public class User {
   
    private String userId;
    private String userPw;
    private String userName;
   
    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;
    }
   
    @Override
    public String toString() {
       
        String result;
        result = String.format("[User : ID = %s, Password = %s, Name = %s]", userId, userPw, userName);
       
        return result;
    }
}

 UserDao.java
package dao;

import model.User;

// 데이터베이스 테이블 정보를 저장하는 모델 영역의 퍼시스턴스 계층(Persistence Layer)에 포함되는
// 도메인 오브젝트를 UserDao란 이름으로 정의한다.
public class UserDao {
   
    // create() 메소드에는 실질적으로 데이터베이스에 정보를 저장하는 퀴리문을 수행하는 비즈니스 로직이 기술되어야 한다.
    public void create(User user) {
       
        System.out.println("사용자를 추가했습니다.");
        System.out.println("추가된 사용자의 정보");
        System.out.println(user);
    }
}
 UserRegAction2.java
package action;

import com.opensymphony.xwork2.Action;
import model.User;
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 {
       
        UserDao uerDao = new UserDao();
        uerDao.create(user);
        return SUCCESS;
    }
}
 userRegForm2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>회원 가입</title>
</head>
<body>
<center>
<h2>회원가입</h2><p/>
<form method = "post" action = "UserRegAction2.action">
<table cellspacing = "10">
    <tr>
        <td>아이디</td>
       
        <%-- <input> 태그의 name 속성 값을 user.userId로 지정하면 params 인터셉터가 액션의 getUser().setUserId()를 호출한다. --%>
        <%-- 액션의 도메인 오브젝트(User)가 인스턴스화 되었으면 바로  getUser().setUserId()를 호출하지만, --%>
        <%-- 인스턴스가 없으면 인스턴스를 생성하고 생성한 인스턴스를 setUser() 메서드를 통해서 액션에 세팅한다. --%>
        <%-- 그런 후에 getUser().setUserId()메소드를 호출하여 텍스트 상자에 입력한 값을 도메인 오브젝트에 세팅한다. --%>
        <td><input type = "text" name = "user.userId"></td>
    </tr>
    <tr>
        <td>비밀번호</td>
        <td><input type = "password" name = "user.userPw"></td>
    </tr>
    <tr>
        <td>이름</td>
        <td><input type = "text" name = "user.userName"></td>
    </tr>
    <tr>
        <td colspan = "2"><input type = "submit" value = "보내기"></td>
    </tr>
</table>
</form>
</center>
</body>
</html>
 userRegSuccess2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>회원 가입 완료</title>
</head>
<body>
<center>
<b><font color = "red">회원 가입이 완료되었다.</font></b><p/>
아이디 : ${user.userId}<p/>
비밀번호 : ${user.userPw}<p/>
이름 : ${user.userName}<p/>
</center>
</body>
</html>

 struts.xml

<?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 = "ch04" extends = "struts-default">
   
        <action name = "HelloWorld02" class = "action.HelloWorld02">
            <interceptor-ref name = "params"/>
            <result name = "success">/helloWorld.jsp</result>
        </action>
       
        <action name = "UserRegForm">
            <result>/jsp/userRegForm.jsp</result>
        </action>
        <action name = "UserRegAction" class = "action.UserRegAction">
              <interceptor-ref name = "params"/>
              <interceptor-ref name = "validation"/>
              <interceptor-ref name = "workflow"/>           
              <result name = "input">/jsp/userRegForm.jsp</result>
              <result name = "success">/jsp/userRegSuccess.jsp</result>
          </action>
         
          <action name = "UserRegForm2">
              <result>/jsp/userRegForm2.jsp</result>
          </action>
          <action name = "UserRegAction2" class = "action.UserRegAction2">
              <interceptor-ref name = "params"/>
              <result name = "success">/jsp/userRegSuccess2.jsp</result>
          </action>

                   
    </package>
</struts>

 출력화면




반응형