JSP-선언부와 스크림 릿의 영역의 변수차이

2019년 10월 22일 by Xion

    JSP-선언부와 스크림 릿의 영역의 변수차이 목차
<%@ page contentType="text/html; charset=UTF-8"%>
<%!
	// 느낌표(!)가 붙어있으면 선언부 영역 JSP사용하는 문법적인 영역
	// ->함수 정의 가능 

	//선언부에서 선언한 변수
	int a=0;
	
	//선언부에서 정의한 함수
	int sum(int x)
	{
		int s=0;
		for(int i=0; i<=x; i++)
		{
			s+=i;
		}
		return s;
	}
%>


<%

	// 느낌표가 없으면 스크림릿 영역
	// ->함수 정의 불가능.
	
	//스크림 릿 영역에서 선언한 변수
	int b=0;
	a++;
	b++;
	
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div>

	<h1> JSP 관찰하기</h1>
	<hr>
</div>

<div>
	<h2><%=a %></h2>		<!--  선언부에서 선언한 변수 --> 
	<h2><%=b %></h2>		<!--  스크림 릿에서 선언한 변수 ★ 단,증감 연산 실행이 X ★ -->
	<h2>함수기능확인:<%=sum(100) %></h2>
	
	<!--  ※요청한 페이지의 결과를 확인한 후 새로고침을 반복해 보면 . . .
	a변수(선언부에 선언된 변수) 값만 계속 증가하는 것을 확인할 수 있다.
	a 변수 값만 계쏙 증가하는 이유를 확인하기 위해서는
	서블릿(Servlet) 코드를 분석해 보아야 한다.
	
	즉,Test003.jsp의 서블릿 코드를 분석해야 한다.
	
	-경로
	 C:\WebStudy\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\WebApp0004\org\apache\jsp
	 																						------------
	 																						project
	 
	 -파일
	 Test003_jsp.java
	 -------	 ---- ->서블릿(Servlet)의 확장자 ->컴파일 이전
	 jsp파일명
	 
	 변수 a 는 클래스 (Test003_jsp)의 전역 변수로 선언된 것을 확인 할 수 있다.
	 이는 객체가 소멸되기 전까지는 계쏙 값이 유지된다는 것을 의미한다.
	 변수 b는 메소드(Test003_jsp 클래스의 _jspService())내의 지역 변수로 선언된
	 것을 확인할 수 있다.
	 
	 _jspInit() 메소드와 _jspDestory() 메소드는 서비스가 시작될 때와 끝날 때
	 한 번씩만 실행되는 메소드이다.
	 
	 반면... _jspService() 메소드는 
	 브라우저에 의해 페이지가 요청될 때 마다 매변 실행되는 메소드이다.
	 
	 이로 인해 변수 b는 페이지에 대한 요청이 발생할 때 마다 
	 새롭게 초기화 되는 과정을 거치게 되는 것이다.
	 
	 JSP페이지의 스크림릿 영역에서 선언된 모든 변수는 이
	 _jspService() 메소드의 지역 변수가 된다.
	 
	 또한 JSP 페이지의 선언부 영역에서 선언된 모든 변수는 클래스의 전역 변수
	 (인스턴스 변수)가 된다. ( ★ ★ Static 변수와 1도 상관없음 ★ ★ )
	 
	 JSP 페이지에서 메소드 정의 시 스크림릿 영역 내부에서는 정의할 수 없다.
	 서블릿으로 변환되는 과정에서 메소드 내부에 또 다른 메소드가
	 다시 정의되는 상황이 되어버리기 때문에 문법적으로 잘못된 표현이 된다.
	 
	 선언부는 ...
	 비록 사용 빈도가 낮지만...
	 메소드는 선언부 내부에서만 정의할 수 있는 것이다.
	 -->
	 
</div>
</body>
</html>

'Web(국비) > JSP' 카테고리의 다른 글

JSP 디렉티브 page buffer와autoFlush속성에 대해  (0) 2019.10.23
JSP -로그인을 통한 웹 xml,jsp,java 관찰  (0) 2019.10.22
JSP - 기본 웹서버 관찰  (0) 2019.10.22
JSP -<% %>에대하여  (0) 2019.10.22
JSP  (0) 2019.10.22