JSP 라이프 사이클
JSP의 구동원리
JSP를 요청하면 서블릿으로 변환되어 메모리에 로드된 후 처리된다.
=> 요청이 들어왔을 때 jsp servlet가 없으면 jsp를 파싱해주고 만들어준다음에 로드하고 응답해준다.
초기화 메소드가 들어오며 jspInit()해준다.
jspService에서 우리가 <%%>안에 작성한 코드가 실행되고
jspDestory에서 로드된다.
이런 코드가 있을 때 실행한다면 jsp 초기화 코드 호출 init만 출력된다.
그러나 out.println()을 또 다시 작성한다면
jsp 초기화코드호출init 와 jsp 초기화 코드종료 destory가 출력된다. 이유는
코드가 서로 다르기 때문에 서블릿이 바뀌어 리로드가 되기 때문에 destory가 실행되는 것이다.
전역변수 표현
JSP 내 스크립틀릿 코드는 모드 doGet()/doPost()내의 지역변수이다.
전역변수는 JSP 선언부에서 기술해야한다<%! %>
int count는 지역변수이고 mycnt는 전역변수이다. 따라서 이걸 출력하면
1/2이고 새로고침을 누르면 1/4, 1.5등으로 까지 늘어난다.
이 전역변수를 다시 초기화하기 위해서는 코드르 바꿔주면 된다.
그 이유는 코드가 바뀌면서 서블릿이 리로드되기 때문이다.
즉 jpsDestory()가 호출되기 전가지는 데이터를 유지하고 있다.
JSP페이지 내 초기화 파라미터 처리
application딴에서 jspApp이라는 이름의 파라미터 값을 가져와라라고 실행하면
=>Hello JSP가 출력된다.
🔥application은 내장객체중 전체를 아우른다.
이제 특정 jsp 파일에서만 초기화 파라미터를 넘기기 위해서는
web.xml에 servlet을 이렇게 작성해준다.
그리고 선언부에 메소드를 선언해준다. 여기서 config는 초기화해서 구한다.
config가 web.xml에서 initParam을 가지고 온다.
그리고 servletContext의 getAttribute를 해주면 그 servlet의 파리미터 값을 가져올 수 있다.
=>Hello JSP->myjsp!