스프링 22강 - Member 게시판 CRUD 구현하기

voilà!·2022년 2월 7일
0

JSP 스프링

목록 보기
22/31

VO

MemberVO.java

package kr.or.ddit;

import java.util.Date;

import org.springframework.format.annotation.DateTimeFormat;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

//자바빈 클래스 
//lombok사용해서 아래처럼 편하게 만들 수 있지만 POJO(초기의 순수한 자바)에 위배됨
//@Setter
//@Getter
//@ToString

public class MemberVO {
	private String memberid;
	private String password;
	private String name;
	private String email;
	//pattern : date 넣을 때 요 형식으로 써주세요~
	//@DateTimeFormat(pattern="yyyy/MM/dd")꼭 써줘야 date형식으로 들어간다
	@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 + "]";
	}
	
}

Controller

MemberController.java

package kr.or.ddit;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

//spring 프레임워크가 자바 빈(=객체)으로 등록해서 관리할 수 있도록 어노테이션 달기
@Controller
public class MemberController {
	
	@RequestMapping("/member/insert")
	public String insert(Model model) {
		
		model.addAttribute("memberVO", new MemberVO());
		
		return "member/joinForm";
		//model은 jsp를 return, ModelAndView는 ModelAndView 객체를 리턴 
	}
}

Dao

MemberDao.java

package kr.or.ddit;

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

//spring 프레임워크가 자바 빈(=객체)으로 등록해서 관리할 수 있도록 어노테이션 달기
@Repository
public class MemberDao {
	
	//sqlSessionTemplate 타입 객체를 BookDao 객체에 주입(사용가능하게) 함
	@Autowired
	SqlSessionTemplate sqlSessionTemplate; //root-context 객체에 있는 id와 같아야 함
	
	//회원가입
	public int insert(MemberVO memberVO) {
		//namaspace.id
		//result가 0이면 입력 실패, 1이면 입력 성공
		int result = this.sqlSessionTemplate.insert("member.insert", memberVO);
		
		return result;
	}
}

Service

MemberService.java

package kr.or.ddit;

/*
* 스프링은 직접 클래스를 생성하는 것을 지양(안함)하고,
* 인터페이스를 통해 접근하는 것을 권장하는 프레임워크.
*/

public interface MemberService {
	//회원가입
	public int insert(MemberVO memberVO);

}

MemberServiceImpl.java

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);
	}

}

JSP

스프링 폼 태그 라이브러리

  • 스프링 폼은 HTML 폼을 표시하기 위한 태그 라이브러리
  • 스프링 폼을 이용하면 HTML 폼과 자바 객체를 쉽게 바인딩할 수 있음

    form 태그 라이브러리 추가하기
    <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

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>

xml

member_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"> <!-- typeAlias에서 정한거 -->
		INSERT INTO MEMBER(MEMBERID,PASSWORD,NAME,EMAIL,REGDATE)
		VALUES(#{memberid},#{password},#{name},#{email},SYSDATE)
	</insert>
</mapper>

0개의 댓글