클라이언트에서 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>
'WEB > Struts2' 카테고리의 다른 글
Struts2 #04( 로그인예제: Action클래스에서 session객체 얻어오기, validate() 사용하기) (0) | 2013.05.04 |
---|---|
Struts2 #02(Action클래스만들기: ActionSupport클래스를 상속받아 만들기) (0) | 2013.05.04 |
Struts2 #01( action클래스 만들기: Action인터페이스 상속받아 만들기 ) (0) | 2013.05.04 |
Struts2 #00 ( 시작하기 ) (0) | 2013.05.04 |