2-1 원격 프로그램

서현우·2022년 5월 22일
0

복습

목록 보기
1/34

WAS - 원격 프로그램

브라우저에서 ip주소(URL)를 입력해서 WAS를 호출

  1. 프로그램 등록
  2. URL과 프로그램을 연결

클래스앞에 @Controller

호출하려는 메서드앞에 @RequestMapping("/hello") //URL과 main()메서드를 연결

context root = project root(ch2)

@RequestMapping으로 연결된 메서드 이름은 중요하지 않다.

연결된 메서드가 인스턴스메서드이던, static메서드이던 중요하지 않다.
톰캣에서 객체를 자동으로 생성 해주기 때문에.
static메서드는 iv사용 못하므로 iv, cv 둘 다 사용 가능한 인스턴스메서드가 유리하다.

브라우저에서 호출이오면 톰캣이 객체를 생성하고,
원격프로그램으로 등록된 클래스의
맵핑(url연결된)된 메서드를 호출함.

맵핑된 메서드의 접근제어자를 public이 아니라 private로 해도 상관없음.
외부에서 접근제어자 상관없이 호출 가능.
reflection api를 사용해서 접근 가능.

public class Main {
	public static void main(String[] args) throws Exception {
		Hello hello = new Hello();
//		hello.main(); //private이라서 외부 호출 불가
		//Reflection API를 사용해서 외부호출 가능(클래스 정보를 얻고 다룰 수 있는 강력한 기능제공)
		//java.lang.reflect패키지를 제공
		
		//Hello클래스의 Class객체(클래스의 정보를 담고 있는 객체)를 얻어온다. 
        //Class객체는 class가 저장되면 메모리에 자동으로 올라감.
		Class helloClass = Class.forName("com.fastcampus.ch2.Hello"); //"패키지명.클래스명"
		Hello hello1 = (Hello)helloClass.newInstance(); //Class객체가 가진 정보로 Hello객체 생성.
		Method main = helloClass.getDeclaredMethod("main"); //main이란 메서드의 정보를 가져와서 Method main으로 참조.
		main.setAccessible(true); //private인 main()을 호출 가능하게 한다. 접근가능하게 함.
		
		main.invoke(hello); //hello.main()과 같다.	메서드 호출.
	}
}
profile
안녕하세요!!

0개의 댓글