memverVO
package kr.or.ddit;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
//자바빈 클래스
public class MemberVO {
private String memberid;
private String password;
private String name;
private String email;
@DateTimeFormat(pattern="yyyy/MM/dd")
private Date regdate;
//기본 생성자
public MemberVO() {
super();
// TODO Auto-generated constructor stub
}
public MemberVO(String memberid, String password, String name, String email, Date regdate) {
super();
this.memberid = memberid;
this.password = password;
this.name = name;
this.email = email;
this.regdate = regdate;
}
public String getMemberid() {
return memberid;
}
public void setMemberid(String memberid) {
this.memberid = memberid;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getRegdate() {
return regdate;
}
public void setRegdate(Date regdate) {
this.regdate = regdate;
}
public boolean matchPassword(String pwd) {
return password.contentEquals(pwd);
}
@Override
public String toString() {
return "MemberVO [memberid=" + memberid + ", password=" + password + ", name=" + name + ", email=" + email
+ ", regdate=" + regdate + "]";
}
}
sql.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="member">
<!-- 회원가입 -->
<insert id="insert" parameterType="memberVO">
insert into member(MEMBERID,PASSWORD,NAME,EMAIL,REGDATE)
values(#{memberid},#{password},#{name},#{email},SYSDATE)
</insert>
</mapper>
dao
package kr.or.ddit;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository //자바빈으로 관리해줘! 일반 클래스 아니야~
public class MemberDAO {
//sqlSessionTemplate 타입 객체를 BookDao 객체에 주입(사용가능하게)함
@Autowired
SqlSessionTemplate sqlSessionTemplate; //root에서 가져온것
//회원 가입
public int insert(MemberVO memberVO) {
//namespace.id
//result가 0이면 입력 실패, 1이면 입력 성공
int result = this.sqlSessionTemplate.insert("member.insert",memberVO);
return result;
}
}
serviceImpl
package kr.or.ddit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
//spring 프레임워크가 자바 빈(=객체)으로 등록해서 관리
@Service //서비스야!! 꼭알려주기!
public class MemberServiceImpl implements MemberService {
//DI(의존성 주입)
//데이터베이스에 접근을 위해 MemberDao 인스턴스를 주입을 받는것!
@Autowired
MemberDAO memberDao;
//회원가입
@Override
public int insert(MemberVO memberVO) {
return memberDao.insert(memberVO);
}
}
service
package kr.or.ddit;
public interface MemberService {
/**
* 스프링은 직접 클래스를 생성하는 것을 지양(안함)하고,
* 인터페이스를 통해 접근하는 것을 권장하는 프레임워크.(확장의 여지를 남겨 놓는것)
*/
//회원 가입
public int insert(MemberVO memberVO);
}
controller
package kr.or.ddit;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller //자바빈으로 관리 ㄱ
public class MemberController {
//컨트롤러 insert메서드의 매개변수로 자바빈즈 객체가 전달이 되면
//기본적으로 다시 화면(view(jsp))으로 전달함
//컨트롤러와 뷰 사이에 자바빈즈 객체를 서로 공유함
//1) 폼 객체의 속성명을 직접 지정
//2) 폼 객체의 속성명은 직접 지정하지 않으면 * 폼 객체의 클래스명의 맨 처음 문자를 소문자로 변환하여 처리
//3) ModelAttribute 애너테이션으로 폼 객체의 속성명을 gaeddongi라고 지정했다면 .. @ModelAttribute("gaeddongi")
// 스프링 폼의 modelAttribute 속성의 값도 똑같이 gaeddongi라고 작성해줘야 함
//MemberVO -> memberVO
//MemberVO이것으로 공유되는 거임 memberVO는 다른 이름이여도 상관없음
@RequestMapping("/member/insert")
public String insert(Model model,@ModelAttribute("memberVO") MemberVO memberVO) {//리턴도 string(방법3: MemberVO memberVO)
//2. MemberVO를 앞글자만 소문자로 바뀌어서 joinForm.jsp에 사용된 것
//model만 써보자! 데이터를 넣는곳
//폼 객체의 속성명과 스프링 폼 테그의 modelAttribute 속성값이 같아야 함
//방법1
// model.addAttribute("memberVO", new MemberVO()); //직접지정한것
//폼 객체의 프로퍼티 값을 지정..
//모댈을 통해서 뷰(jsp)로 전달이 됨
memberVO.setMemberid("a001");
memberVO.setName("개똥이");
return "member/joinForm";
}
}
joinForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!DOCTYPE html>
<html>
<head>
<title>회원가입</title>
</head>
<body>
<!--
스프링 폼 태그 라이브러리
- 스프링 폼은 HTML 폼을 표시하기 위한 태그 라이브러리
- 스프링 폼을 이용하면 HTML 폼과 자바 객체를 쉽게 바인딩할 수 있음
-->
<form:form modelAttribute="memberVO" method="post" action="/member/insert">
<p>
아이디 : <form:input path="memberid" />
<font color="red">
<form:errors path="memberid" />
</font>
</p>
<p>
이름 : <form:input path="name" />
<font color="red">
<form:errors path="name" />
</font>
</p>
<p>
비밀번호 : <form:input path="password" />
<font color="red">
<form:errors path="password" />
</font>
</p>
<p>
이메일 : <form:input path="email" />
<font color="red">
<form:errors path="email" />
</font>
</p>
<form:button name="register">등록</form:button>
</form:form>
</body>
</html>