안녕하세요?
MelonPeach입니다.
오늘은 회원가입에 대한 포스팅을 하겠습니다.
회원가입이면 아이디, 비밀번호, 이름, 이메일, 주소 등등.. 많지만
저희는 아이디, 비밀번호, 성명 이 3가지만 하도록 하겠습니다.
1. memberMapper.xml 작성
mappers폴더에 memberMapper.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="memberMapper">
<!-- 게시판 글 작성 -->
<insert id="register">
INSERT INTO MP_MEMBER( USERID
, USERPASS
, USERNAME )
VALUES( #{userId}
, #{userPass}
, #{userName})
</insert>
</mapper>
2. MemberVO 작성
kr.co.vo폴더에 MemberVO를 생성해주시고 코드를 작성해주세요.
package kr.co.vo;
import java.util.Date;
public class MemberVO {
private String userId;
private String userPass;
private String userName;
private Date regDate;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserPass() {
return userPass;
}
public void setUserPass(String userPass) {
this.userPass = userPass;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Date getRegDate() {
return regDate;
}
public void setRegDate(Date regDate) {
this.regDate = regDate;
}
@Override
public String toString() {
return "MemberVO [userId=" + userId + ", userPass=" + userPass + ", userName=" + userName + ", regDate="
+ regDate + "]";
}
}
3. MemberDAO 작성
kr.co.dao 폴더에 MemberDAO와 MemberDAOImpl을 생성해줍니다.
package kr.co.dao;
import kr.co.vo.MemberVO;
public interface MemberDAO {
// 회원가입
public void register(MemberVO vo) throws Exception;
}
package kr.co.dao;
import javax.inject.Inject;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;
import kr.co.vo.MemberVO;
@Repository
public class MemberDAOImpl implements MemberDAO {
@Inject SqlSession sql;
// 회원가입
@Override
public void register(MemberVO vo) throws Exception {
sql.insert("memberMapper.register", vo);
}
}
4. MemberService 작성
kr.co.service 폴더에 MemberService와 MemberServiceImpl을 생성해줍니다.
package kr.co.service;
import kr.co.vo.MemberVO;
public interface MemberService {
public void register(MemberVO vo) throws Exception;
}
package kr.co.service;
import javax.inject.Inject;
import org.springframework.stereotype.Service;
import kr.co.dao.MemberDAO;
import kr.co.vo.MemberVO;
@Service
public class MemberServiceImpl implements MemberService {
@Inject MemberDAO dao;
@Override
public void register(MemberVO vo) throws Exception {
dao.register(vo);
}
}
5. MemberController 작성
회원가입 폼으로 이동할때에는 GET메서드를 타고 회원가입 버튼을 눌렀을때 POST메서드를 타게끔 작성해줍니다.
package kr.co.controller;
import java.lang.reflect.Member;
import javax.inject.Inject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import kr.co.service.MemberService;
import kr.co.vo.MemberVO;
@Controller
@RequestMapping("/member/*")
public class MemberController {
private static final Logger logger = LoggerFactory.getLogger(MemberController.class);
@Inject
MemberService service;
// 회원가입 get
@RequestMapping(value = "/register", method = RequestMethod.GET)
public void getRegister() throws Exception {
logger.info("get register");
}
// 회원가입 post
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String postRegister(MemberVO vo) throws Exception {
logger.info("post register");
service.register(vo);
return null;
}
}
6. register.jsp 작성
아이디와 패스워드, 성명을 작성해줄 input태그를 만들어줍니다.
회원가입 버튼과 취소 버튼을 만들어줍니다.
아이디, 비밀번호, 성명에 빈값이면 회원가입을 하지못하게 막아줍니다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<html>
<head>
<!-- 합쳐지고 최소화된 최신 CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<!-- 부가적인 테마 -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<title>회원가입</title>
</head>
<script type="text/javascript">
$(document).ready(function(){
// 취소
$(".cencle").on("click", function(){
location.href = "/login";
})
$("#submit").on("click", function(){
if($("#userId").val()==""){
alert("아이디를 입력해주세요.");
$("#userId").focus();
return false;
}
if($("#userPass").val()==""){
alert("비밀번호를 입력해주세요.");
$("#userPass").focus();
return false;
}
if($("#userName").val()==""){
alert("성명을 입력해주세요.");
$("#userName").focus();
return false;
}
});
})
</script>
<body>
<section id="container">
<form action="/member/register" method="post">
<div class="form-group has-feedback">
<label class="control-label" for="userId">아이디</label>
<input class="form-control" type="text" id="userId" name="userId" />
</div>
<div class="form-group has-feedback">
<label class="control-label" for="userPass">패스워드</label>
<input class="form-control" type="password" id="userPass" name="userPass" />
</div>
<div class="form-group has-feedback">
<label class="control-label" for="userName">성명</label>
<input class="form-control" type="text" id="userName" name="userName" />
</div>
<div class="form-group has-feedback">
<button class="btn btn-success" type="submit" id="submit">회원가입</button>
<button class="cencle btn btn-danger" type="button">취소</button>
</div>
</form>
</section>
</body>
</html>
7. 회원가입 실행 테스트
빈칸에 입력을 하지않고 회원가입을 하게되면 알림창(alert)에 입력하라는 메세지가 나타나게 됩니다.
다음 포스팅에서는 로그인 기능에 대해 포스팅하겠습니다.