MemberController.java

팡태(❁´◡`❁)·2022년 3월 7일
0

java

목록 보기
17/36
package com.example.controller;

import java.util.List;

import javax.servlet.http.HttpSession;

import com.example.entity.Member;
import com.example.service.MemberDB;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
@RequestMapping(value = "/member")
public class MemberController {

    // DB에 일을 수행하는 클래스
    // 클래스명 obj = new 클래스명(); 을 아래처럼 쓰고 있음..
    @Autowired
    private MemberDB memberDB;

    @Autowired
    private HttpSession httpSession;

    @GetMapping(value = "/login")
    public String loginGET() {
        return "member/login";
    }

    @PostMapping(value = "/login")
    public String loginPOST(@ModelAttribute Member member, HttpSession httpSession) {

        // DB에 아이디, 암호를 전달하여 일치하는 항목이 있는지 확인
        Member retMember = memberDB.selectLogin(member);
        System.out.println(retMember);

        if (retMember != null) {
            // 로그인되는 시점
            // 세션: 서버에 기록되는 정보(어떤 주소, 어떤 컨트롤러에서 공유)
            httpSession.setAttribute("USERID", retMember.getId());
            httpSession.setAttribute("USERNAME", retMember.getName());
            return "redirect:/home";
        }
        return "redirect:/member/login";
    }

    @GetMapping(value = "/logout")
    public String loginGET(HttpSession httpSession) {
        // 세션 완전 삭제
        return "redirect:/home";
    }

    @GetMapping(value = "/mypage")
    public String mypageGET(
            Model model,
            @RequestParam(name = "menu", defaultValue = "0") int menu) {

        String userid = (String) httpSession.getAttribute("USERID");
        if (userid == null) {
            return "redirect:/member/login";
        }
        if (menu == 0) {
            return "redirect:/member/mypage?menu=1";
        }

        if (menu == 1) {
            Member member = memberDB.selectOneMember(userid);
            model.addAttribute("title", "정보수정");
            model.addAttribute("mem", member);
        } else if (menu == 2) {

        } else if (menu == 3) {

        }
        return "member/mypage";
    }

    @PostMapping(value = "/mypage")
    public String mypagePOST(@RequestParam(name = "menu") int menu,
            @ModelAttribute Member member) {

        if (menu == 1) {
            int ret = memberDB.updateMember(member);
            if (ret == 1) {
                httpSession.setAttribute("USERNAME", member.getName());
                return "redirect:/member/mypage?menu=1";
            }
            return "redirect:/member/mypage?menu=1";
        } else if (menu == 2) {
            System.out.println(member.toString());
            String userid = (String) httpSession.getAttribute("USERID");
            member.setId(userid);

            Long ret = memberDB.updateMemberPassword(member);
            if (ret == 1L) {
                return "redirect:/member/mypage?menu=2";
            }
            return "redirect:/member/mypage?menu=2";
        } else if (menu == 3) {
            String userid = (String) httpSession.getAttribute("USERID");
            int ret = memberDB.deleteMember(userid);
            if (ret == 1L) {
                return "redirect:/member/mypage?menu=3";
            }
            return "redirect:/member/mypage?menu=3";
        }
        return "redirect:/home";
    }

    // 127.0.0.1:8080/member/delete?id=1
    @GetMapping(value = "/delete")
    public String deleteGET(@RequestParam(name = "id") String id) {
        int ret = memberDB.deleteMember(id);
        if (ret == 1) {
            return "redirect:/member/selectlist";
        }
        return "redirect:/member/selectlist";
    }

    // 127.0.0.1:8080/member/selectlist
    @GetMapping(value = "/selectlist")
    public String selectlistGET(Model model,
            @RequestParam(name = "page", defaultValue = "1") int page,
            @RequestParam(name = "text", defaultValue = "") String text) {

        if (page == 0) {
            return "redirect:/member/selectlist?page=1";
        }

        // 1. DB에서 목록 받아오기
        List<Member> list = memberDB.selectListPageSearchMember(page, text);

        long pages = memberDB.CountSearchMember(text);

        // 2. jsp로 전달하기(jsp에서의 변수명, 실제 전송하는 값)
        model.addAttribute("list", list);
        model.addAttribute("pages", (pages - 1) / 10 + 1);

        // 3. member폴더의 select.jsp를 표시하라
        return "member/select";
    }

    @GetMapping(value = "/update")
    public String updateGET(Model model, @RequestParam(name = "id") String id) {

        Member member = memberDB.selectOneMember(id);

        model.addAttribute("member", member);
        return "member/update"; // 표시할 jsp 파일명. 확장자X
    }

    @PostMapping(value = "/update")
    public String updatePOST(@ModelAttribute Member member) {
        System.out.println(member.toString());

        int ret = memberDB.updateMember(member);
        if (ret == 1) {
            return "redirect:/member/selectlist";
        }
        // post에서는 jsp표시 X
        // redirect를 이용하여 주소 변경
        return "redirect:/member/update?id=" + member.getId();
    }

    // 127.0.0.1:8080/member/insert
    @GetMapping(value = "/insert")
    public String insertGET() {
        return "member/insert";
    }

    // post는 사용자가 입력한 내용이 전달되고 DB작업을 위해 필요한 시점
    // jsp를 표시하는게 아니라 주소창에 입력 후 엔터를 침
    @PostMapping(value = "/insert")
    public String insertPOST(@ModelAttribute Member mem) {
        System.out.println(mem.toString());
        memberDB.insertMember(mem);

        // 주소창에 /member/insert를 입력 후 엔터 누르는 것과 같음
        return "redirect:/member/insert";
    }
}

0개의 댓글