심내
50
2018-03-13 21:46:54 작성 2018-03-13 21:55:36 수정됨
3
452

[자바]회원관리 프로그램을 만들려고 하는 학생입니다.


안녕하세요 현재 국비지원을 받아 학원을 다니고 있는 30살 늦깎이 학생입니다.


현제 자바와 오라클만 배운 상태입니다.


"

MVC패턴에서 메인->컨트롤러로 넘어 갈 때 사용자가 로그인을 하여 차후 회원정보 수정 등을 하기 위해 필요한 로그인을 한 사람의 개인정보를 어떻게 넘겨야 할 지 모르겠어서 이렇게 질문 드립니다.

"

최근에 학원에서 자바 세미프로젝트로 MVC 패턴을 이용한 회원관리 프로그램을 만들었습니다.


여러 사람이 함께 하는 프로젝트라 인터페이스를 사용했는데 메인->컨트롤러, 컨트롤러->모델로 넘어 갈 때  인터페이스를 사용했습니다.


제가 만든 프로그램은 컨트롤러로 넘어갈 때, 모델로 넘어갈 때 메서드에 직접 DTO를 넣어주는 방식으로 회원정보를 넘겼는데 이렇게 만들면 Override한 인터페이스가 쓸모가 없어집니다.


그래서 DTO를 저장하는 클래스를 따로 만들어 public으로 저장을 해볼까 생각해봤는데 이건 보안상 문제가 많을 것 같습니다.


때문에 보통 어떤 방법을 이용해서 회원정보를 넘기는지 궁금해서 이렇게 물어봅니다.


아래 코드에서 노란부분을 해결하는 방법을 알고 싶습니다.



코드부

//인터페이스

public interface SelectMenuInterface {

public void selectMenu();

}


메인에서 컨트롤러로 넘어가는 부분

public class LoginController implements SelectMenuInterface {

MemberDTO userDTO = memLoginService.process(login);

MemManageController memManageController = new MemManageController();

memManageController.selectMenu(userDTO);

}

                            ↓

//제가 만든 메서드

public void selectMenu(MemberDTO userDTO){}

//위의 메서드 때문에 동일 클래스 내 남는 메서드

@Override

public void selectMenu(){}


0
0
  • 답변 3

  • narise
    2k
    2018-03-13 21:56:59 작성 2018-03-13 22:00:01 수정됨

    ThreadSafe를 고려한것인가요?


    단순히 각 서블릿(컨트롤러단에서) HttpSession에서 로그인정보를 가져오는 형식입니다만....

    참고로 아래와같은 코딩은 절대 절대 안됩니다.


    public class BController{

    private HttpSession httpSession;

    ....

    }

    public class BController{

    private UserDto loginUser;

    ....

    }

    0
  • Snorlax
    183
    2018-03-14 00:40:58

    인터페이스의 개념을 이해못하신것 같은데요..

    오버로딩을 하고계시니 남겠죠

    0
  • dokky
    114
    2018-03-14 10:14:19

    직접 만드신 메소드말고 만들어놓은 인터페이스를 활용하여 하셔야할것같은데요


    public void selectMenu(MemberDTO userDTO){}


    이부분처럼 memberDTO라는 object를 받으셔야한다면 인터페이스 쪽도


    public interface SelectMenuInterface {

    public void selectMenu(memberDTO userDTO);

    }


    설정해주신후

    @Override

    public void selectMenu(memberDTO userDTO){}


    위 코드처럼 오버라이드 해서 사용하시는게 맞는것 같습니다.


    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.