원격 프로그램 실행

  • 브라우저와 WAS 가 있어야 프로그램을 실행할 수 있다

프로그램을 실행하기 위해서는 프로그램을 등록하고 URL과 프로그램을 연결해야한다

  1. @Controller 애노테이션을 이용하여 클래스 파일을 프로그램으로 등록
  2. @RequestMapping 애노테이션을 이용하여 URL과 연결(맵핑)
    @RequestMapping("/hello")
  • 브라우저에서 지정한 URL을 입력하면 메서드가 실행된다

main 메서드

  • 웹에서 호출 시 동작할 main메서드를 static이 아닌 인스턴드 메서드로 선언한다

    그 이유는 satatic 메서드는 cv만 사용 가능하고 인스턴스 메서드는 iv와 cv 모두 사용 가능하다

    • 그동안은 대부분 클래스 안에 인스턴스 메서드를 정의하여 사용하지 않았기 때문에 괜찮았다
  • private void main()으로 해도 된다

    그 이유는 URL을 맵핑했다는 것은 외부에서 부를 수 있게 하겠다는 의미로 접근 제어자 상관 없이 호출할 수 있게 한다.

    • 내부(다른 클래스 등)에서는 private이고 외부(웹)에서만 호출 가능
      = reflection api 사용하기 때문

reflection api

  1. 가져오고자 하는 클래스의 클래스 객체(클래스의 정보를 담고 있는 객체)를 얻어온다
    Class helloClass = Class.forName(". . Hello");

  2. 설계도가 있는 것이기 때문에 객체를 만들 수 있다
    Hello hello = (Hello)helloClass.newInstance();
    반환타입이 Object 이기 때문에 형 변환 해줘야함

  3. 메서드도 가져온다
    Method main = helloClass.getDeclaredMethod("main");
    main.setAccessible(true);
    private인 main을 접근이 가능하게 설정

  4. 메서드를 호출
    main.invoke(hello);
    hello.main()과 같은 역할

profile
안녕하세요. Chat JooPT입니다.

0개의 댓글