클라이언트에서 submit된 파라미터를 vo객체에 한번에 setter하기.
; 하나씩 setter메소드를 호출해도 되지만 vo객체를 선언하고 담으면 편리하다.
; action클래스에서 인터페이스 Preparable, ModelDriven을 구현한다.


1) insert.html / success.jsp / error.jsp
2) MemberAction.java ( test.action 패키지 )
3) MembersDao.java ( test.dao )
4) MembersVo.java ( test.vo )
5) Mybatis 관련 orm파일
    5-1) SqlsessionFactoryService.java
    5-2) MembersMapper.xml
    5-3) mybatis-config.xml
6) example.xml ( struts action매핑 xml )

-----------------------------------------------------------------------------------

1) insert.html

<!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>Insert title here</title>
</head>
<body>
<h1>회원가입</h1>
<form method="post" action="member.action">
    아이디<input type="text" name="id"/><br/>
    비밀번호<input type="text" name="pwd"/><br/>
    이메일<input type="text" name="email"/><br/>
    전화번호<input type="text" name="phone"/><br/>
    <input type="submit" value="가입"/>
</form>
</body>
</html>















success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>Insert title here</title>
</head>
<body>
회원가입에 성공하셨습니다.<br/>
<a href="main.jsp">메인으로 이동</a>
</body>
</html>






error.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>Insert title here</title>
</head>
<body>
<h1>회원가입에 실패했습니다.</h1>
<a href="main.jsp">메인페이지로 이동</a>
</body>
</html>




2) MemberAction.java ( test.action 패키지 )

package test.action;

import test.dao.MembersDao;
import test.vo.MembersVo;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable;

public class MemberAction extends ActionSupport
                         implements Preparable, ModelDriven<MembersVo>{
    private MembersVo vo;
    // execute메소드가 호출되기 전에 호출되면
    // execute메소드가 실행되기 위한 준비작업을 한다.
    @Override
   public void prepare() throws Exception {
        vo = new MembersVo();
   }
    //
    @Override
    public MembersVo getModel() {
       return vo;
   }

    @Override
    public String execute() throws Exception {
        System.out.println("vo:" + vo);
        MembersDao dao=new MembersDao();
        int n = dao.insert(vo);
        if(n>0){
            return SUCCESS;
        }else{
            return ERROR;
        }
    }
}



3) MembersDao.java ( test.dao )

package test.dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import test.orm.SqlSessionFactoryService;
import test.vo.MembersVo;

public class MembersDao {
    private SqlSessionFactory sqlSessionFactory;
   
    public MembersDao(){
        sqlSessionFactory=SqlSessionFactoryService.getSqlSessionFactory();
    }
   
    public int insert(MembersVo vo){
        SqlSession sqlSession = null;
        try{
            sqlSession = sqlSessionFactory.openSession();
            int n = sqlSession.insert("insert", vo);
            if(n>0){
                sqlSession.commit();
            }
            return n;
        }finally{
            if(sqlSession!=null) sqlSession.close();
        }
    }
    public List<MembersVo> getList(){
        SqlSession sqlSession = null;
        try{
            sqlSession = sqlSessionFactory.openSession();
            return sqlSession.selectList("list");
        }finally{
            if(sqlSession!=null) sqlSession.close();
        }
    }
}



4) MembersVo.java ( test.vo )

package test.vo;

import java.sql.Date;
public class MembersVo {
    private String id;
    private String pwd;
    private String email;
    private String phone;
    private Date regdate;
   
    public MembersVo() {}

    public MembersVo(String id, String pwd, String email, String phone,
            Date regdate) {
        super();
        this.id = id;
        this.pwd = pwd;
        this.email = email;
        this.phone = phone;
        this.regdate = regdate;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public Date getRegdate() {
        return regdate;
    }
    public void setRegdate(Date regdate) {
        this.regdate = regdate;
    }
    @Override
    public String toString() {
        return "MembersVo [id=" + id + ", pwd=" + pwd + ", email=" + email
                + ", phone=" + phone + ", regdate=" + regdate + "]";
    }
}



5) Mybatis 관련 orm파일

5-1) SqlsessionFactoryService.java

package test.orm;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class SqlSessionFactoryService {
    private static SqlSessionFactory sqlSessionFactory;   
    //static멤버변수를 초기화할때는 static블록을 사용한다.(생성자x)
    static{
        try{
            InputStream is=
                    Resources.getResourceAsStream("test/orm/mybatis-config.xml");
            sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);
        }catch(IOException ie){
            System.out.println(ie.getMessage());
        }
    }   
    public static SqlSessionFactory getSqlSessionFactory() {
        return sqlSessionFactory;
    }
}



5-2) MembersMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="test.orm.MembersMapper">
    <insert id="insert" parameterType="test.vo.MembersVo">
        insert into members
        values(#{id}, #{pwd}, #{email},#{phone}, sysdate )
    </insert>
    <select id="list" resultType="test.vo.MembersVo">
        select * from members
    </select>

</mapper>



5-3) mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
   
    <!--////////   접속할 DB서버에 대한 정보 설정  /////////////-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="oracle.jdbc.OracleDriver" />
                <property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" />
                <property name="username" value="scott" />
                <property name="password" value="tiger" />
            </dataSource>
        </environment>
    </environments>
    <!--///////  sql구문이 들어있는 SQL Mapper파일 포함 ////////// -->
    <mappers>
        <mapper resource="test/orm/MembersMapper.xml" />
    </mappers>
</configuration>

 

 



6) example.xml ( struts action매핑 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="example" namespace="/" extends="default">
        <!-- 액션매핑하기 -->
        <action name="member" class="test.action.MemberAction">
            <result name="success">/view/success.jsp</result>
            <result name="error">/view/error.jsp</result>
        </action>
    </package>
</struts>

+ Recent posts