JSP에 대하여.


오늘은 JSP를 공부하면서 간단히 정리한 것에 대해 올리겠습니다.
가끔은 제가 직접 한페이지를 모두 써서 채우기도 하네요. ㅎㅎ;;;

1. 선언부
- 형식 :
<%!
// 변수 또는 메소드를 선언하는 문장들
%>

2. 표현식
- 형식 :
<%=
// 변수, 메소드, 특정 객체, 수식 등
%>

3. 스크립트릿
- 형식 :
<%
// 선언부와 표현식을 제외한 모든 자바 코드
%>

4. 주석
- 형식 :
<!-- 내용 주석 -->
<%-- JSP 주석 --> :: 웹 브라우저에서는 보이지 않고 JSP 소스를 열어야 보임

5. JSP의 작동 원리
- 사용자가 서버에 JSP 페이지를 요청
- 해당 페이지에 대한 서블릿이 있는지 검사
- 서블릿이 존재할 경우 메모리에 로드시켜 해당 페이지에 대한 응답 객체 생성
- 서블릿이 없을 경우 해당 페이지에 대한 서블릿을 생성
- 특정 폴더에 서블릿을 저장
- 이후 같은 페이지 요청시 메모리내의 서블릿을 실행시켜 응답 객체를 생성

6. 디렉티브
- 해당 JSP 페이지와 관련된 정보를 나타낼 때 쓰는 태그
- 형식
<%@ 디렉티브 속성1="값1" 속성2="값2" ... %>
- 종류 :
:: page - 해당 페이지의 전체적인 특성을 나타냄
:: include - 다른 페이지를 포함하고자 할 때 사용
:: taglib - 기능확장을 위해 사용할 커스텀 태그의 경로를 지정할 때 사용

7. 동기화
Object syncObj = new Object
synchronized(syncObj)
{
// 코드
}

8. inlcude 디렉티브
- 다른 페이지의 내용을 포함하고자 할 때
- 형식 :
<%@ include file="포함할 페이지의 로컬 URL" %>
- 포함하는 페이지의 소스를 불러와서 혼합된 소스의 상태에서 서블릿으로 변환

9. taglib 디렉티브
- JSP 페이지에서 사용할 태그 라이브러리를 지정할 때 사용

10. request 기본 객체
- 한 번의 요청에 대하여 유용한 객체
- 자신의 페이지로의 요청에 대한 URL, 헤더내용, 쿠키, 요청과 관련된 파라미터의 정보에 접근할 수 있는 메소드 제공

11. response 기본 객체
- JSP 페이지를 처리한 결과를 사용자에게 보낼 때 사용되는 응답 객체
- 헤더, 쿠키, 응답과 관련된 정보를 설정할 수 있는 메소드 제공
- 응답을 통해서 전송되는 내용의 형식을 지정하는 메소드 제공

12. out 기본 객체
- 요청받은 jsp 페이지가 브라우저에 결과를 보낼 때 출력을 담당하는 객체
- javax.servlet.jsp.JspWriter 클래스의 인스턴스

13. page 기본 객체
- 해당 jsp 페이지가 변환된 서블릿 그 자체를 나타내는 객체
- 페이지의 정보를 나타내는 getServletInfo() 메소드 제공

14. config 기본 객체
- jsp 페이지를 초기화할 때 사용되는 초기화 파라미터를 저장
- 서블릿을 변환할 때 처리하는 서블릿의 이름은 JSP임

15. session 기본 객체
- 사이트에 접속한 클라이언트가 계속 유지할 수 있는 정보를 담는 객체
- javax.servlet.http.HttpSession 인터페이스의 인스턴스

16. application 기본 객체
- 해당 application 전체에서 사용할 수 있는 정보를 저장하는 객체
- 서블릿 콘텍스트와 같은 개념이며 전체 사이트의 정보를 저장함
- javax.servlet.ServletContext 인터페이스의 인스턴스

17. pageContext 기본 객체
- 현재 jsp 페이지의 콘텍스트를 나타냄
- 다른 기본 객체에 접근할 수 있는 메소드를 제공
- 제어를 이동하거나 포함할 수 있는 메소드 제공

18. exception 기본 객체
- JSP에서 발생하는 예외를 나타냄
- 디렉티브의 isErrorPage 속성이 true인 페이지에서 접근 가능
<%@ page isErrorPage="true" %>
- Java.lang.Throwable 클래스를 상속받은 클래스의 인스턴스

19. 빈 관련 태그
- <jsp:useBean> : jsp 페이지에서 자바의 빈을 사용하고자 할 때 사용
- <jsp:setProperty> : 빈에 정의된 property의 값을 설정할 때 사용
- <jsp:getProperty> : 빈에 정의된 property의 값을 불러올 때 사용

20. <jsp:include> 액션 태그
- 다른 문서의 출력결과를 현재 페이지에 포함하고자 할 때 사용
- include 디렉티브와는 달리 포함되는 페이지도 또 하나의 페이지로 해석되어 존재
- 포함하는 페이지와 포함되는 페이지는 서로 다른 pageContext 객체를 가짐
- 두 페이지는 서로 다른 request 객체를 가지지만 서로 같은 값을 가짐

21. <jsp:forward> 액션 태그
- 현재 페이지에서 다른 페이지로 제어권을 이동할 때 사용
- 서로 다른 pageContext 객체를 사용
- 서로 다른 request 기본 객체를 할당 받지만 같은 값을 가짐
- <jsp:param> 태그를 사용하여 새로운 파라미터를 넘겨줄 수 있음

22. <jsp:plugin> 액션 태그
- 자바 플러그인을 사용하여 자바 애플릿을 실행하고자 할 때 사용

23. 빈의 기초
- 빈의 정의: 특정 기능을 수행하도록 미리 정의되어진 클래스
- 빈의 특징:
-> 모듈화되어 있고 재사용 가능
-> 내부의 데이터와 로직이 캡슐화 되어 있음
-> 사용법에 대한 인터페이스만 알면 누구나 사용 가능
-> 프로그램 개발시 표준화된 인터페이스를 통해 접근 가능하므로 현저한 시간 단축

24. Property
- 정의: 빈이 가지고 있는 데이터의 값을 설정하거나 읽어들이는 기능을 수행하는 자바빈의 속성
- 종류:
-> Setter : 빈의 속성값을 설정하기 위한 메소드
-> Getter : 빈의 속성값을 읽어들이기 위한 메소드
- 규약:
-> 시작은 소문자, 단어가 바뀔때마다 대문자
-> 외부에서 접근 가능해야 하므로 접근속성은 public
-> get 또는 set 다음에 데이터의 멤버의 이름이 와야함
-> 특정 객체를 property의 인수로 전달 가능

25. 빈 컴포넌트의 영역(scope)
- page 영역
-> 페이지의 요청과 동시에 생성되며 페이지의 소멸과 함께 빈 객체도 소멸
-> scope 속성의 값을 생략할 경우 이 값으로 설정
- request 영역
-> 브라우저의 한번 요청이 완료될 때까지 존재
-> 하나의 jsp 페이지로 구성된 경우 page 영역과 request 영역은 동일한 효과를 가짐
-> 포함되는 페이지에서 빈 객체를 사용하기 위해서는 반드시 빈 객체가 먼저 생성되어 있어야 함
- session 영역
-> 세션의 생성과 함께 빈 객체가 생성되며 session 객체가 소멸되면서 함께 소멸
-> 사용자의 중요한 정보는 데이터 베이스 또는 다른 저장 장치를 이용하는 것이 일반적
- application 영역
-> jsp 컨테이너를 종료하기 이전까지 서버에 존재
-> 서버의 모든 사용자들에게 공통적으로 사용되므로 사용자 개인의 정보는 session 객체에 저장하는 것이 일반적
-> 웹 사이트의 카운터 등 공통적으로 사용되는 빈 객체의 영역으로 사용

26. 스크립트와 빈 태그의 혼합
- 빈 태그만을 이용한 경우
-> <jsp:useBean id="test" class="pastday.bean.TestBean"/>
   <jsp:getProperty name="test" property="testProperty">
- 스크립트를 이용한 경유
-> <jsp:useBean id="test" class="pastday.bean.TestBean"/>
   <%= test.getProperty() %>