반응형
01. Controller
MemberLoginController
package com.mygg.mygg.controller;
import com.mygg.mygg.dto.LoginDTO;
import com.mygg.mygg.service.MemberService;
import com.mygg.mygg.vo.MemberVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Map;
@Controller
@RequestMapping("/member")
public class MemberLoginController {
private final MemberService memberService;
@Autowired
public MemberLoginController(MemberService memberService) {
this.memberService = memberService;
}
// login page
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String loginGET(@ModelAttribute("loginDTO")LoginDTO loginDTO) {
return "/member/login";
}
// login session
@PostMapping("/user/login")
public String loginPOST(LoginDTO dto, HttpServletRequest request) throws Exception {
HttpSession session = request.getSession();
System.out.println(dto.getEmail());
Map<String,String> memberInform = memberService.login(dto);
System.out.println(memberInform);
if(memberInform.get("email").equals(dto.getEmail()) && memberInform.get("password").equals(dto.getPassword())){
session.setAttribute("memberId",memberInform.get("id"));
System.out.println("세션 생성");
return "/member/loginSuccess";
}else{
System.out.println("비밀번호가 틀립니다.");
return "redirect:./";
}
}
// logout
@RequestMapping(value = "/logout", method = RequestMethod.GET)
public String logout(HttpSession session) throws Exception {
session.invalidate();
return "/member/logout";
}
}
- Login Controller
- 로그인 상태를 유지하기 위해 Service 객체에서 LoginDTO에 있는 id 값으로 꺼내온 결과값을 세션에 저장해줘야한다.
MemberRegisterController
package com.mygg.mygg.controller;
import com.mygg.mygg.dto.MemberDTO;
import com.mygg.mygg.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/member")
public class MemberRegisterController {
@Autowired
private MemberService memberService;
// Join page
@GetMapping("/signup")
public String registerGET() {
return "/member/signup";
}
// Join 처리
@PostMapping("/signup")
public String registerPOST(MemberDTO memberDTO) {
memberService.register(memberDTO);
return "redirect:/member/login";
}
}
- Join Controller
02. DAO
MemberDAO
package com.mygg.mygg.dao;
import com.mygg.mygg.dto.LoginDTO;
import com.mygg.mygg.dto.MemberDTO;
import org.apache.ibatis.annotations.Mapper;
import java.util.Map;
@Mapper
public interface MemberDAO {
void register(MemberDTO memberDTO) ;
Map<String,String> login(LoginDTO loginDTO) ;
}
MemberDAOImpl
package com.mygg.mygg.service.impl;
import com.mygg.mygg.dao.MemberDAO;
import com.mygg.mygg.dto.LoginDTO;
import com.mygg.mygg.dto.MemberDTO;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;
import javax.inject.Inject;
import java.util.Map;
@Repository
public class MemberDAOImpl implements MemberDAO {
@Inject
private SqlSession sqlSession;
@Override
public void register(MemberDTO memberDTO) {
sqlSession.insert("MemberMapper.register", memberDTO);
}
@Override
public Map<String, String> login(LoginDTO loginDTO) {
return null;
}
}
03. DTO
LoginDTO
package com.mygg.mygg.dto;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class LoginDTO {
private String email;
private String password;
private boolean useCookie;
}
MemberDTO
package com.mygg.mygg.dto;
import com.mygg.mygg.domain.entity.MemberEntity;
import lombok.*;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class MemberDTO {
private Long id;
private String email;
private String password;
private String name;
private String nickname;
private String phone_number;
private String gender;
private int age;
private String location;
private String photo;
private int authority = 1;
private String role;
public MemberEntity toEntity(){
return MemberEntity.builder()
.id(id)
.email(email)
.password(password)
.name(name)
.nickname(nickname)
.phone_number(phone_number)
.gender(gender)
.age(age)
.location(location)
.photo(photo)
.authority("1")
.role(role)
.build();
}
@Builder
public MemberDTO(Long id, String email, String password, String name, String nickname, String phone_number, String gender, int age, String location, String photo, String authority, String join_date, String role) {
this.id = id;
this.email = email;
this.password = password;
this.name = name;
this.nickname = nickname;
this.phone_number = phone_number;
this.gender = gender;
this.age = age;
this.location = location;
this.photo = photo;
this.authority = 1;
this.role = role;
}
}
04. Service
MemberService
package com.mygg.mygg.service;
import com.mygg.mygg.dto.LoginDTO;
import com.mygg.mygg.dto.MemberDTO;
import com.mygg.mygg.vo.MemberVO;
import org.springframework.stereotype.Service;
import java.util.Map;
public interface MemberService {
public void register(MemberDTO memberDTO);
Map<String, String> login(LoginDTO loginDTO) throws Exception;
}
MemberServiceImpl
package com.mygg.mygg.service.impl;
import com.mygg.mygg.dao.MemberDAO;
import com.mygg.mygg.dto.LoginDTO;
import com.mygg.mygg.dto.MemberDTO;
import com.mygg.mygg.service.MemberService;
import com.mygg.mygg.vo.MemberVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.inject.Inject;
import java.util.Map;
@Service
public class MemberServiceImpl implements MemberService {
private final MemberDAO memberDAO;
@Autowired
public MemberServiceImpl(MemberDAO memberDAO) {
this.memberDAO = memberDAO;
}
@Override
public void register(MemberDTO memberDTO) {
memberDAO.register(memberDTO);
}
@Override
public Map<String, String> login(LoginDTO loginDTO) throws Exception {
return memberDAO.login(loginDTO);
}
}
전체 소스코드는 GitHub 참고
codesiri/Googoos
Googoos🕊 | Final Project. Contribute to codesiri/Googoos development by creating an account on GitHub.
github.com
반응형
'CodeSiri > Project' 카테고리의 다른 글
[Googoos🕊] 05. Spring | 회원 관리자 페이지 - 회원 권한 관리 & 회고 | MyBatis, SpringMVC (0) | 2021.06.12 |
---|---|
[Googoos🕊] 04. Spring | 회원가입 중복체크 | ajax, MyBatis (0) | 2021.06.11 |
[Googoos🕊] 02. Spring | 회원가입 - Profile photo & dropbox & authority & 가입 날짜 자동 설정 (0) | 2021.05.17 |
[Googoos🕊] 01. Spring | Spring Security 회원가입/로그인/로그아웃 (0) | 2021.05.14 |
[Mini Project 🚴🏻♀️] 12. 게시글 수정 및 삭제 기능 구현 & 회고 (0) | 2021.02.22 |