본격 자기계발 레벨업 프로젝트! 유튜브 메타코딩 영상을 보면서 공부 했던것을 정리하고자 합니다.
IDE : STS4
언어 : Java 8
스프링부트 버전 : 2.7.13
DB : MySQL
빌드관리 도구 : Maven
OS : iOS
참고유튜브 : 메타코딩
리플렉션을 왜 사용해야할까 ?
그 이유에 대해서 사용하지 않는다면 어떻게 우리가 코드를 작성하는지 한번 알아보자
우선 패키지를 생성 한 후 dispatcher 라는 클래스명으로 클래스를 생성해준다.
dispatcher 클래스를 생성하면 Filter 클래스를 상속받아준다.
그 후 filter 클래스가 가지고 있는 메서드를 오버라이드 해준다.
잘 작동하는지 확인해보기 위해 콘솔에 찍어보면
잘 동작하는걸 확인할 수 있다.
요청받은 주소를 확인해보기 위해 매개변수로 받는 request 를 형 변환 후 req에 담아주고 해당 요청에서
컨텍스트 주소, 식별자 주소, 전체주소를 한번 출력해보자
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
System.out.println("컨텍스트주소 : "+req.getContextPath());
System.out.println("식별자주소 : "+req.getRequestURI());
System.out.println("전체주소 : "+req.getRequestURL());
다시 서버를 재실행해서 확인해보면 서버 주소를 받아와서 아래와 같이 출력되는걸 확인 할 수 있다.
해당 전체 주소에서 user를 파싱해보기위해서 식별자 주소에서 컨텍스트주소를 빈칸으로 변환해주어서 endPoint변수명으로 출력을 해보면
String endPoint = req.getRequestURI().replaceAll(req.getContextPath(),"");
System.out.println("endpoint : "+endPoint);
/user가 파싱이 되는것을 확인할 수 있다.
이제 필터에서 한번 걸러져서 필요한 컨트롤러로 응답해주는 기능을 작성해보기 위해서 controller 패키지 생성 후 userController를 생성해준다.
userController에 join과 login 함수를 작성해주고 각각 출력이 되는지 확인해보자
dispatcher에서 userController를 선언/초기화를 해서 메모리에 올린 후
주소에서 파싱한 글자가 /join이라면 userController에 join 함수를 /login이라면 login함수를 동작시킨다.
서버를 실행시켜 주소창에 /login, /join을 마지막에 넣어서 동작을 시켜보면 각각의 함수들이 동작하는걸 확인할 수 있다.
여기서 새로운 함수를 만들어서 추가를 해줘야하는 상황이라면? 그에 상응하는 부분을 필터에 추가를 해줘야 하기 때문에
상당한 디메리트가 있기 때문에 이를 해결해주기 위해서 리플렉션을 사용해주어야 한다.
'프로젝트 > 자바 리플렉션' 카테고리의 다른 글
[자바 리플렉션] 3. 리플렉션한 함수에 파라메터 분석하기 (0) | 2023.08.12 |
---|---|
[자바 리플렉션] 2. dispatcher 필터로 주소 매핑하기 (0) | 2023.08.11 |
[자바 리플렉션] 0. 환경설정(+ dynamic web project가 안보일때 해결법) (0) | 2023.08.10 |
댓글