주소 입력은 다음에서 제공하는 주소찾기 서비스를 이용한다.
사용법은 여기에 간단히 나와있다.
회원가입 페이지에서 데이터가 다 입력되었다면
데이터베이스에 저장할 수 있는 메소드를 생성한다.
가장 먼저 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
반응형
'포트폴리오 > Spring Framework' 카테고리의 다른 글
스프링 프레임워크 - 관리자 로그인 (0) | 2020.12.07 |
---|---|
스프링 프레임워크 - 로그인 하기(아이디 찾기, 비밀번호 찾기) (1) | 2020.12.01 |
스프링 프레임워크 - 아이디 중복 확인 (1) | 2020.12.01 |
스프링 프레임워크 - 회원가입/ 아이디 찾기/ 비밀번호 찾기 페이지로 이동하기 (0) | 2020.12.01 |
스프링 프레임워크 presentation-layer 설정(기초) (0) | 2020.11.05 |