본문 바로가기

포트폴리오/Spring Framework

스프링 프레임워크 - 회원가입 페이지 만들기 - 2

주소 입력은 다음에서 제공하는 주소찾기 서비스를 이용한다.

postcode.map.daum.net/guide

 

Daum 우편번호 서비스

우편번호 검색과 도로명 주소 입력 기능을 너무 간단하게 적용할 수 있는 방법. Daum 우편번호 서비스를 이용해보세요. 어느 사이트에서나 무료로 제약없이 사용 가능하답니다.

postcode.map.daum.net

 

사용법은 여기에 간단히 나와있다.

ktsmemo.cafe24.com/s/dev/314

 

다음 우편번호 검색 초간단 예제

웹개발 메모장 : 자바스크립트 : 다음 우편번호 검색 초간단 예제

ktsmemo.cafe24.com

 

jamesyleather.tistory.com/395

 

회원가입 페이지 만들기 - 1

로그인을 하기위해서는 회원가입이 필요하다. 회원가입 페이지를 만들어보자. 로그인페이지에서 회원가입(JOIN)을 눌렀을 때 넘어가는 페이지이다. https://jamesyleather.tistory.com/392 로그인 페이지

jamesyleather.tistory.com

 

회원가입 페이지에서 데이터가 다 입력되었다면

데이터베이스에 저장할 수 있는 메소드를 생성한다.

 

가장 먼저 Mapper에서 데이터를 넣는 SQL문을 작성한다.

 

<User-mapping.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="UserDAO">

	<insert id="joinUser">
		insert into users(id, pwd, name, email, zip_code, address, phone)
		values(#{id}, #{pwd}, #{name}, #{email}, #{zip_code}, #{address}, #{phone})
	</insert>
	
	<select id="idCheck" parameterType="String" resultType="user">
		select * from users where id=#{id}
	</select>
	
</mapper>

 

<UserDAO.java>

package com.portfolio.biz.user.impl;

import java.util.*;

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

import com.portfolio.biz.user.dto.UserVO;
import com.portfolio.biz.utils.Criteria;

@Repository
public class UserDAO {

	@Autowired
	private SqlSessionTemplate mybatis;

	public void joinUser(UserVO vo) {
		System.out.println("==> Mybatis로 joinUser() 기능 처리");

		mybatis.insert("UserDAO.joinUser", vo);
	}

	public UserVO idCheck(String id) {
		System.out.println("==> Mybatis로 idCheck() 기능 처리");

		UserVO user = mybatis.selectOne("UserDAO.idCheck", id);

		return user;
	}

}

 

<UserService.java>

package com.portfolio.biz.user;

import java.util.List;

import com.portfolio.biz.user.dto.UserVO;
import com.portfolio.biz.utils.Criteria;

public interface UserService {

	void joinUser(UserVO vo);

	UserVO idCheck(String id);

}

 

<UserServiceImpl.java>

package com.portfolio.biz.user.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.portfolio.biz.user.UserService;
import com.portfolio.biz.user.dto.UserVO;
import com.portfolio.biz.utils.Criteria;

@Service("userService")
public class UserServiceImpl implements UserService{

	@Autowired
	private UserDAO userDAO;
    
	@Override
	public void joinUser(UserVO vo) {
		userDAO.joinUser(vo);
	}

	@Override
	public UserVO idCheck(String id) {
		return userDAO.idCheck(id);
	}


}

 

그리고 컨트롤러에서 주소가 2개의 데이터로 들어오므로

하나로 만들어준다.

 

<UserController.java>

package com.portfolio.view.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;

import com.portfolio.biz.employee.dto.AdminVO;
import com.portfolio.biz.user.UserService;
import com.portfolio.biz.user.dto.UserVO;
import com.portfolio.biz.utils.Criteria;
import com.portfolio.biz.utils.PageMaker;

@Controller
@SessionAttributes("loginUser")
public class UserController {

	@Autowired
	private UserService userService;
	
	@RequestMapping(value="/about")
	public String aboutPageView() {
		return "about";
	}

	@RequestMapping(value = "/login_form")
	public String loginFormView() {
		return "member/login";
	}
	
	@RequestMapping(value="/login", method=RequestMethod.POST)
	public String loginAction(UserVO vo, Model model) {
		UserVO loginUser = userService.loginUser(vo);
		
		if(loginUser == null) {
			model.addAttribute("check", 1);
			model.addAttribute("message", "아이디와 비밀번호를 확인해주세요.");
			return "member/login";
		}else {
			model.addAttribute("loginUser", loginUser);
			return "redirect:index";
		}
	}
	
	@RequestMapping(value="/logout")
	public String logoutAction(SessionStatus status) {
		status.setComplete();
		return "redirect:index";
	}

	@RequestMapping(value = "/join_form")
	public String joinFormView() {
		return "member/join";
	}

	@RequestMapping(value = "/id_check_form")
	public String idCheckFormView(@RequestParam(value = "id", defaultValue = "", required = false) String id,
			Model model) {
		model.addAttribute("id", id);
		return "member/idcheck";
	}

	@RequestMapping(value = "/id_check_form", method = RequestMethod.POST)
	public String idCheckAction(HttpServletRequest request, Model model, UserVO user) {
		String id = request.getParameter("id");
		UserVO vo = userService.idCheck(id);
		System.out.println(vo);

		if(vo == null) {
			model.addAttribute("check", 0);
		}else {
			model.addAttribute("check", 1);
		}
		
		model.addAttribute("id", id);
		return "member/idcheck";
	}

	@RequestMapping(value = "/join", method = RequestMethod.POST)
	public String joinAction(@RequestParam(value = "addr1", defaultValue = "", required = false) String addr1, 
    						@RequestParam(value = "addr2", defaultValue = "", required = false) String addr2, 
                            UserVO vo) {
		vo.setAddress(addr1 + " " + addr2);
		vo.setEmail(vo.getId() + "@email.com");
		System.out.println(vo);
		userService.joinUser(vo);
		return "member/login";
	}

	

}

 

@RequestParam()으로 데이터가 안 들어올 수도 있으므로

defaultValue를 설정해주고 required = false로 설정해준다.

 

 

그리고 데이터가 잘 들어갔는지 확인한다.

 

728x90
반응형