## 75. 애노테이션으로 request handler 표시하기
- PageController 인터페이스를 사용하는 대신에 애노테이션으로 호출될 메서드를 표시하는 방법
MemberListController.java
ㄴ @Overide 애노테이션 대신 @Request 애노테이션으로 변경
=>
=>
ㄴ RequestMapping 이라는 이름의 애노테이션 파일 생성하기
=>
RequestMapping.java
ㄴ 애노테이션 정보가 런타임 시에도 유지되도록 @Retention(RetentionPolicy.RUNTIME) 애노테이션 추가하기
MemberListController.java
ㄴ @RequestMapping 애노테이션 추가하기
=>
MemberListController.java
ㄴ 이제 PageController 를 구현할 필요가 없으므로 해당 코드 제거
DispatcherServlet.java
ㄴ PageController 타입 대신 Object 타입으로 설정하기
=>
DispatcherServlet.java
ㄴ request handler 를 찾는 메서드 getRequestHandler 를 추가하도록 함
=>
DispatcherServlet.java
ㄴ pageController 객체에서 @RequestMapping 어노테이션이 부여된 메서드를 찾아서 해당 메서드를 반환하는 메소드
ㄴ Java Reflection을 사용하여 클래스의 메서드를 조사하고 @RequestMapping 어노테이션이 부여된 메서드를 찾아냄
=>
DispatcherServlet.java
ㄴ 요청을 처리할 핸들러가 없을 경우 해당 에러 메시지 출력하도록 설정하기
=>
DispatcherServlet.java
ㄴ pageController.execute 대신 requestHandler.invoke 이용하고, 파라미터 값으로 pageController 넘겨주기
=>
ㄴ PageController.java 파일 삭제
BoardAddController.java
ㄴ 이제 PageController 를 구현할 필요 없으므로 해당 코드 제거
=>
BoardAddController.java
ㄴ @Override 애노테이션 대신 @RequestMapping 애노테이션 이용하도록 함
BoardDeleteController.java
ㄴ 이제 PageController 를 구현할 필요 없으므로 해당 코드 제거
=>
BoardDeleteController.java
ㄴ @Override 애노테이션 대신 @RequestMapping 애노테이션 이용하도록 함
BoardDetailController.java
ㄴ 이제 PageController 를 구현할 필요 없으므로 해당 코드 제거
=>
BoardDetailController.java
ㄴ @Override 애노테이션 대신 @RequestMapping 애노테이션 이용하도록 함
BoardFileDeleteController.java
ㄴ 이제 PageController 를 구현할 필요 없으므로 해당 코드 제거
=>
BoardFileDeleteController.java
ㄴ @Override 애노테이션 대신 @RequestMapping 애노테이션 이용하도록 함
BoardListController.java
ㄴ 이제 PageController 를 구현할 필요 없으므로 해당 코드 제거
=>
BoardListController.java
ㄴ @Override 애노테이션 대신 @RequestMapping 애노테이션 이용하도록 함
BoardUpdateController.java
ㄴ 이제 PageController 를 구현할 필요 없으므로 해당 코드 제거
=>
BoardUpdateController.java
ㄴ @Override 애노테이션 대신 @RequestMapping 애노테이션 이용하도록 함
HomeController.java
ㄴ 이제 PageController 를 구현할 필요 없으므로 해당 코드 제거
=>
HomeController.java
ㄴ @Override 애노테이션 대신 @RequestMapping 애노테이션 이용하도록 함
LoginController.java
ㄴ 이제 PageController 를 구현할 필요 없으므로 해당 코드 제거
=>
LoginController.java
ㄴ @Override 애노테이션 대신 @RequestMapping 애노테이션 이용하도록 함
LogoutController.java
ㄴ 이제 PageController 를 구현할 필요 없으므로 해당 코드 제거
=>
LogoutController.java
ㄴ @Override 애노테이션 대신 @RequestMapping 애노테이션 이용하도록 함
MemberAddController.java
ㄴ 이제 PageController 를 구현할 필요 없으므로 해당 코드 제거
=>
MemberAddController.java
ㄴ @Override 애노테이션 대신 @RequestMapping 애노테이션 이용하도록 함
MemberDeleteController.java
ㄴ 이제 PageController 를 구현할 필요 없으므로 해당 코드 제거
=>
MemberDeleteController.java
ㄴ @Override 애노테이션 대신 @RequestMapping 애노테이션 이용하도록 함
MemberDetailController.java
ㄴ 이제 PageController 를 구현할 필요 없으므로 해당 코드 제거
=>
MemberDetailController.java
ㄴ @Override 애노테이션 대신 @RequestMapping 애노테이션 이용하도록 함
MemberUpdateController.java
ㄴ 이제 PageController 를 구현할 필요 없으므로 해당 코드 제거
=>
MemberUpdateController.java
ㄴ @Override 애노테이션 대신 @RequestMapping 애노테이션 이용하도록 함
=>
ㄴ App 실행
=>
=>
ㄴ 로그인 정보 입력 후 [로그인] 선택
=>
ㄴ 로그인이 정상적으로 처리됨을 확인
=>
ㄴ 게시글 목록이 정상적으로 출력됨을 확인
=>
ㄴ 게시글 내용 입력 후 [등록] 선택
=>
ㄴ 게시글이 정상적으로 등록됨을 확인
=>
ㄴ 게시글 상세보기 정상적으로 출력됨
=>
ㄴ 내용 변경 후 [변경] 선택
=>
ㄴ 게시글 정상적으로 변경됨을 확인
ㄴ 첨부파일 [삭제] 선택
=>
ㄴ 첨부파일이 정상적으로 삭제됨을 확인
ㄴ 게시글 [삭제] 선택
=>
ㄴ 39번 게시글이 정상적으로 삭제됨을 확인
=>