본문 바로가기

포트폴리오/Spring Framework

스프링 프레임워크 - 아이디 중복 확인

가장 먼저 User 정보를 저장할 수 있는 VO파일을 작성한다

 

 

VO파일에는 User정보가 저장되어야 하므로

데이터베이스에서 User에 관련된 컬럼을 모두 작성해야한다.

 

<UserVO.java>

package com.portfolio.biz.user.dto;

import java.sql.Timestamp;

import lombok.Data;

@Data
public class UserVO {
	private String id;
	private String pwd;
	private String name;
	private String zip_code;
	private String address;
	private String phone;
	private int useyn;
	private Timestamp regdate;
	private String email;
}

 

getter, setter 파일을 작성해줘도 좋지만

편의를 위해 lombok을 이용한다.

class위에 @Data로 어노테이션을 달아준다.

그러면 자동으로 getter, setter가 설저된다.

 

이용하는 방법은 처음에 프로젝트 설정할 때

pom.xml에 필요한 dependency를 추가했었다.

거기에 lombok도 추가되어 있었다.

 

jamesyleather.tistory.com/386

 

스프링 프레임 워크 기본 설정 하기 - 1

스프링 프레임워크를 시작하기 전에 앞서 여러가지 설정해야할 것들이 있다. 먼저 프로젝트 속성부터 설정해줘야한다. 사용하고자 하는 프로젝트를 우클릭하여 [Properties]를 선택한다. [Project Fac

jamesyleather.tistory.com

 

아이디 중복을 확인하기 위해

SQL Mapping 파일을 작성한다.

 

<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">
	
	<select id="idCheck" parameterType="String" resultType="user">
		select * from users where id=#{id}
	</select>

</mapper>

mapper의 namespace를 UserDAO로 변경하고

아이디 확인하는 mapping ID를 idCheck로 작성하였다.

 

그러면 DAO파일에서 해당 SQL문을 갖고 데이터를 가져오도록 작성한다.

 

<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 UserVO idCheck(String id) {
		System.out.println("==> Mybatis로 idCheck() 기능 처리");

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

 

@Repository 어노테이션을 추가하고

 

아이디 체크할 수 있는 메소드를 작성한다.

@Autowired 의존성을 주입하여 보다 편리하게 이용할 있게한다.

SqlSessionTempate는 Mapper에서 작성된 Sql문을 사용할 수 있게 해준다.

 

그리고 Service 파일과 실질적으로 작동하는데 필요한 ServiceImpl파일을 생성한다.

 

 

 

<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 {

	UserVO idCheck(String id);
}

 

인터페이스로 작성하여 ServiceImpl에서 상속받는다.

 

<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 UserVO idCheck(String id) {
		return userDAO.idCheck(id);
	}

}

 

@Service 어노테이션을 추가해서 Controller에서 사용할 수 있게 해준다.

 

Controller 파일에서 페이지에서 넘어갈 때 입력한 아이디 값이 넘어가고

해당 페이지에서 아이디 체크를 할 수 있게 작성한다.

 

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 = "/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);

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

	}
}

 

페이지 넘어갈 때는 GET방식이기 때문에 method를 설정해줄 필요가 없지만

POST방식을 이용할 때는 method에 POST방식이라는 것(method = RequestMethod.POST)을 Mapping 안에 작성해야한다. 그리고 뷰(View-JSP)부분에서 데이터를 받아올 때는 @RequestParam을 이용하여 input 부분 name을 통해 데이터를 받아올 수 있다.

 

그리고 DAO파일 대신 Service파일을 @Autowired해서 사용한다.

주어진 아이디를 갖고 조회했을 때 존재하면 존재한다는 메세지를 전달하고

존재하지 않는다면 사용할 수 있는 버튼을 제공한다.

728x90
반응형