본문 바로가기
프로젝트/자바 리플렉션

[자바 리플렉션] 3. 리플렉션한 함수에 파라메터 분석하기

by dantriss 2023. 8. 12.

본격 자기계발 레벨업 프로젝트! 유튜브 메타코딩 영상을 보면서 공부 했던것을 정리하고자 합니다.

IDE : STS4

언어 : Java 8

스프링부트 버전 : 2.7.13

DB : MySQL

빌드관리 도구 : Maven

OS : iOS

참고유튜브 : 메타코딩


로그인, 회원가입등 기능을 작성하기 위해선 MVC패턴에서 Model 을 작성해서 어떠한 것들을 받아서 어떻게 활용할 건지 만들기 위해서

model 패키지를 작성 후 user 클래스를 만들어준다.

 

 

user 클래스에는 사용자들별 고유 id, 사용자의 아이디, 비밀번호, 이메일만 작성해서 테스트하기로 한다.

변수를 작성 해준 후 getter / setter 와 toString를 만들어준다.

 

하지만 생각해볼 때 회원가입을 할 땐 아이디/비밀번호/이메일을 다 사용한다지만, 로그인을 할 때는 아이디/비밀번호만 있어도 된다.

그런데 user 하나로만 관리하기엔 관리하기 신경이 쓰이는게 많다.

그렇기 때문에 DTO(data transfer Object : 데이터 전송 객체)를 만들어서 관리해준다.

dto 패키지 생성 후 JoinDto와 LoginDto 생성

 

joinDto에는 유저아이디/비밀번호/이메일을 작성 후 getter/setter/toString을 추가해준다.

같은 방법으로 loginDto에는 유저아이디/비밀번호를 작성후 getter/setter/toString을 추가

 

userController에서 파라메터로 join과 login에 각각 dto를 넣어준다.

 

dispatcher 로 이동해서 파라메터를 받아서 컨트롤러로 넘길 때 해당 파라메터들을 넘길 때 어떤 타입의 파라메터들이 넘어오는지 

해당 파라메터의 이름은 무엇인지 출력해보자.

if (parameters.length !=0) {
						
    System.out.println("parameters[0] : "+parameters[0]);
    System.out.println("parameters[0].getName() : "+parameters[0].getName());
    System.out.println("parameters[0].getType() : "+parameters[0].getType());

    Object dtoInstance = parameters[0].getType().newInstance();		

    path = "/";
} else {
    path = (String)method.invoke(userController);
}

 

서버를 실행해서 확인해보면 결과를 알아볼 수 있다.

 

그럼 파라메터들을 받아서 객체를 생성 후에 값들을 잘 넘겨 줄 수 있는지 확인해보기 위해서

request에서 오는 파라메터들을 출력해보자 

String username =req.getParameter("username");  
String password =req.getParameter("password");  
						
System.out.println("username : "+username);
System.out.println("password : "+password);

 

포스트맨에서 키값에 해당 파라메터들 로 넣고 값을 넘겨주면

 

해당 값들이 잘 넘어오는 것을 확인 할 수 있다.

이제 해당 넘겨받은 파라메터들을 컨트롤러쪽으로 넘겨서 해당 함수들을 사용할 수 있게 작성해주면 될 것이다.

댓글