public class Main{
public static void main(String[] args){
Ststem.println("Hello");
}
}
✔ 이 프로그램을 보통 IDE(Integrated Development Enviornment)에서 실행을 하지만 cmd 창에서 실행하는 방법은?
- 로컬 컴퓨터 cmd창을 열고
- java Main
여기에서 java는 java.exe(자바인터프리터)가 main()을 호출
(static이라 객체 생성하지 않아도 돼서 호출 가능)- Hello_ 라고 찍히게 된다
✔ 필요한 것
브라우저와 WAS
📌원격 프로그램 실행 방법
package com.fastcampus.ch2;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller //1. 프로그램 등록
public class Hello{
@RequestMapping("/hello") //2. URL과 프로그램을 연결
public void main(){ //public static void를 하지 않아도 되는 이유는
//호출이 오면 Tomcat 내부에서 객체를 생성해주고
//그래서 인스턴스 메서드임에도 메서드를 호출이 되기 때문에
//static을 붙이지 않아도 된다
System.out.println("Hello")
}
}
✔ 저렇게 코드를 작성해주면
http://111.222.333.444:8080/ch2/hello -> ch2 = context root(=project root)
이 url로 호출하면 작성한 controller을 탄다
📌@RequestMapping의 접근제어자
package com.fastcampus.ch2;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller //1. 프로그램 등록
public class Hello{
@RequestMapping("/hello")
private void main(){ //public -> private 수정
System.out.println("Hello")
}
}
package com.fastcampus.ch2;
import java.lang.reflect.Method;
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 helloClass = Class.forName("com.fastcampus.ch2.Hello");
Hello hello = (Hello)helloClass.newInstance(); // Class 객체가 가진 정보로 객체 생성
Method main = helloClass.getDeclaredMethod("main");
main.setAccessible(true); // private인 main()을 호출가능하게 한다
main.invoke(hello); // hello.main()
}
}
✔ 우선 만든 프로그램을 Export 해줘야한다
프로젝트 파일을 우클릭 > Export > WAR file > Next > 이름 작성 > destination에 끝에 war가 붙어있는지 확인 후 Finish
❗ AWS를 계속 쓰지 않을때는 인스턴스 상태를 중지로 해놓는 게 좋다 사용시간이 계속 나가기 때문에
(사용할때 다시 실행하게 되면 IP가 바뀌기 때문에 원격 데스크탑 파일을 다시 다운 받아야한다..^^)