jsp는 서블릿의 확장판이라고 볼 수 있다
자바 기반의 동적 웹 프로그래밍 언어다
JSP 컨테이너가 서블릿 파일 생성과 컴파일을 책임진다.
?JSP는 다시 컴파일하고 프로젝트를 배포할 필요가 없다.
“웹 서버는 정적 웹페이지처럼 *.class의 실행 결과를
웹 브라우저에 응답으로 전달하므로
웹 브라우저는 새로 가공된 HTML 페이지를
동적으로 처리한 결과를 보여줍니다”
웹서버에서 클라이언트의 요청 중 웹 서버
자체적으로 처리할 수 없는 것은
컨테이너처럼 처리할 수 있는 곳으로 넘기기도 함
웹서버만으로 구축된 서버는 정적 페이지만을 생성한다.
톰캣은 웹 컨테이너가 포함된 웹 애플리케이션 서버(WAS)이다. (웹 서버와 웹 컨테이너를 결합한 서버)
- JSP LifeSycle - - - -
- 번역 - TL 참조 태그의 정확성 검증
- 컴파일 - 자바 코드의 구문 검사(번역된)
- init - 클래스 로드, 초기화
- service - request, response
컨테이너가 추가하기 때문에 service는 override 불가 - destroy
jsp 요청 시 jsp 수정 여부를 판단하고 번역 단계를 거침
JSP 태그의 종류
1.스크립트 - 자바 코드를 넣음
2.디렉티브 - 페이지 처리 방식
3.액션 - XML 형태의 태그. 제어와 관련됨
- 스크립트 태그 - - - -
선언문 <%! . . . %> : 변수 메소드 정의
클래스의 멤버로 들어감
사실상 필드에 속하기에 전역에 해당함
스크립틀릿 <% . . . %> : 로직
service 메소드에 포함됨
‘out.println( . . . )로 표현문처럼 사용할 수도 있음
문자열 형태로 HTML 태그를 적용할 수 있음
print 결과가 HTML로 이루어진 정적 웹페이지를 형성’
표현문 <%= . . .%>
: 호출 결과를 문자열 형태로 출력
service 메소드에 포함되어 print 메소드에 인수로 전달
인수로 전달되기에 작성할 때 세미콜론을 생략한다
out.print( . . . )에 그냥 들어감
- 주석 - - - JSP
<%-- . . . --%>
HTML<!-- . . . -->
서블릿으로 변환될 때
html 주석의 경우 name 변수가 없으면 오류 메시지 표시
JSP 주석은 잘 무시함
- 주석 - - - JSP
- 디렉티브 태그 - - - - >페이지 관련 정보를 컨테이너에 지시
개별 HTML 응답에 특별한 영향을 미치지 않는다.
1
<%@ { page, include, taglib } %>
- page - - > 페이지 정보
“현재 JSP 페이지가 ~”
language = java 사용할 프로그래밍 언어
contentType = text/html 생성할 문서의 콘텐츠 유형
pageEncoding = ISO-8859-1 문자 인코딩
import = 사용할 자바 클래스
session = true 세션 사용 여부
buffer = 8KB 출력 버퍼 크기
autoFlush = true 출력 버퍼의 동작 제어
isThreadSafe = true 멀티스레드 허용 여부
info = 페이지에 대한 설명
errorPage = 오류가 발생했을 때 보여줄 오류 페이지
isErrorPage = false 오류 페이지인지 여부
isELignored = false 표현 언어 지원 여부 ${ . . . }
isScriptingEnabled 스크립트 태그 사용 여부
- include - - > 특정 영역에 외부 파일의 내용을 포함함
참조를 적용해 재사용성과 유지보수에 도움
1
<%@ include file=" . . . " %>
- taglib - - > 표현 언어, JSTL, custom tag 등 TL 설정
<%@ taglib uri=”path” prefix=”tag identifier” %>
?아직 필요를 못느끼겠다
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
- 자바빈즈 - - > 로직용 클래스 데이터를 담는 멤버 변수인 프로퍼티와 데이터 처리를 위한 메소드로 구성 Serializable 구현(직렬화), 기본 생성자, private + get-set
- 액션 태그 - - - - > 서/클 특정 행동을 명령
페이지 간의 제어, 자바빈즈 등 XML 형식 <jsp: . . . />
forward : 페이지 이동(흐름 제어) 호출 시 현재 페이지에서의 출력 버퍼를 지우므로 주의
include : 외부 페이지 내용을 포함하거나 페이지 모듈화 *디렉티브는 단순 소스 내용이 텍스트로 포함 주로 조각 코드를 삽입할 때
- 액션은 페이지의 처리 결과를 포함시킴 페이지를 모듈화할 때
useBean : 자바빈즈 설정
1
2
<jsp:useBean id="member" class="com.dto.MemberBean"
scope="page" />
와 같이 작성함 범위에는 page, request, session, application 중 하나의 값 id는 변수명이라 생각해도 됨
setProperty : 자바빈즈의 property set
1
<jsp:setProperty name="bean.id" property="field type" value=""/>
요청 파라미터의 name 일치 여부에따라 value를 생략할 수 있음
getProperty : 자바빈즈의 property get
param : forward, include, plugin에 인자 추가 forward나 include처럼 페이지 제어 관련한 태그와 함께 사용됨 현재 페이지의 데이터를 전달할 수 있음
plugin : 브라우저에서 자바 애플릿 실행, 브라우저별 코드 생성 element : XML 요소 설정 attribute : XML 요소 속성 설정 body : XML 요소 몸체 설정 text : 페이지 및 문서에서 템플릿 텍스트 작성