스크립팅 3원소

<%! %>

선언은 클래스의 내부에 삽입된다.

따라서 여기에서 선언하는 변수는 멤버 변수가 되고 여기에서 메소드를 정의할 수 있다.

아래 코드는 jsp 파일에 작성된 선언 부분

컴파일 된 후 해당 자바 파일을 열어보게 되면


컴파일 하면서 자동으로 생성된 서블릿 클래스에 선언부에 작성된 부분이 

삽입되어 있는 것을 확인 할 수 있다.

<% %>

스크립트릿은 자동 생성되는 서블릿 클래스의 서비스 메소드에 삽입된다.

위 코드는 jsp 파일에 작성된 스크립틀릿이다. 생성된 java 파일의 서비스 메소드 안을 보게 되면


-이런 이름으로 서비스 메소드가 정의되어 있다. 크게 해서 보시기 바람.-

 

이렇게 서비스 메소드에 삽입되어 있다. 

자바에서도 배웠지만 멤버 변수와 지역 변수는 다르다.

해당 scope내에서만 살아있는 것이 지역변수이고 객체 내부에서 살아있는 것이 멤버 변수 이므로

본문 제일 처음에 선언했던 "JSP"라는 문자열이 저장된str은 멤버변수이고 

바로 위 스크립틀릿에서 선언한 "이거 실행됨?"이라는 문자열이 저장된 str은 서비스 메소드 안에서만 살아있는 지역 변수이다.

서로 다른 존재이다. 

out.println("

str의 값: " + str+"

"); out.println("

str의 값: " + this.str+"

");

스크립틀릿에 위와 같은 코드를 작성하고 실행해보면 차이를 알 수 있다.

결과)



식은 출력에 대한 용도로만 사용된다.

out이라는 브라우져 출력용 기본객체를 통해 출력 가능하다.

우리가 기존에 response 객체를 통해 getwriter를 해서 얻었던 놈과 비슷한 놈인거 같다. 하지만 실제 자동 생성된 서블릿 클래스 내부에서는 꽤나 다른 방식으로 이 객체를 얻고 있으므로 이 부분은 나중에 알아보고 추가할 예정


multTwo(int) 메소드는 본문 가장 위에 선언부에 작성된 메소드.

파라미터로 넘어온 정수값을 2배 해서 돌려준다.

결과)


<%= 출력할 데이터 %> = out.print(출력할 데이터);과 같다.

서블릿 클래스에는 이런 식으로 생성되어 삽입되어 있다.


댓글