CodeSiri/Project

[Googoos🕊] 03. Spring | login Session & Join

Dev다D 2021. 5. 26. 23:18
반응형
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

반응형