회원제 게시판

조수경·2022년 2월 4일
0

Spring

목록 보기
12/43


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>
profile
신입 개발자 입니다!!!

0개의 댓글