가장 먼저 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도 추가되어 있었다.
아이디 중복을 확인하기 위해
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해서 사용한다.
주어진 아이디를 갖고 조회했을 때 존재하면 존재한다는 메세지를 전달하고
존재하지 않는다면 사용할 수 있는 버튼을 제공한다.
'포트폴리오 > Spring Framework' 카테고리의 다른 글
스프링 프레임워크 - 로그인 하기(아이디 찾기, 비밀번호 찾기) (1) | 2020.12.01 |
---|---|
스프링 프레임워크 - 회원가입 페이지 만들기 - 2 (0) | 2020.12.01 |
스프링 프레임워크 - 회원가입/ 아이디 찾기/ 비밀번호 찾기 페이지로 이동하기 (0) | 2020.12.01 |
스프링 프레임워크 presentation-layer 설정(기초) (0) | 2020.11.05 |
applicationContext 파일 설정하기 (0) | 2020.11.05 |