JSP
서버측 스크립트언어
HTMl안에 자바코드를 포함 시킬 수있음
서블릿 코드를 작성하는 편리한 방법을 제공
JSP언어의 확장 메커니즘
표현언어 EL의 사용
- 서버측 객체나 데이터를 쉽게 사용하고 표현할 수 있음
JSTL과 같은 태그 라이브러리의 사용
JSP문서의 구성
탬플릿 데이터
-정적데이터로 HTML이나 XML형식의 텍스트
-응답결과를 만들때 그대로 출력되는 텍스트
JSP요소- 동적인 데이터의 추가
-JSP태그로 표현되는 프로그래밍적 요소
-적절한 Java코드로 번역되어 동적 컨텐츠가 만들어짐
JSP페이지의 구성 요소
스크립트요소
지시어
액션태그
내장객체
표현언어
JSTL과 사용자 정의 태그
주석 <%-- 설명 --%>
스크립트요소의 종류 !!
스크립트릿 : JSP페이지에 삽입되는 자바코드 조각
서블릿클래스의 서비스 메서드를 작성할때 반영됨
<% ... %>

표현식:
변수나 수식의 값을 출력할때 JSP페이지에 삽입하는 식
스크립트릿을 사용하지않고 변수나 수식의 값을 JSP페이지 실행 결과에 포함시키기 위한 것.
세미콜론이 없음
수식의 결과는 String으로 변환됨
<%= ... %>

선언 : JSP코드에서 사용될 변수 또는 메서드의 선언문
-스크립트릿이나 표현식에서 사용되는 서블릿클래스의 메서드나 멤버변수를 선언하기 위한것
-메서드나 변수는 사용전에 미리 선언되어야함


지시어!!!
JSp페이지에 대한 설정정보를 웹 컨테이너에 지시
jsp페이지의 번역과 실행과정에 사용되는 정보

지시어의 종류
include지시어
-jsp페이지의 특정 영역에 다른 문서를 포함
-번역 과정에서 복사하여 삽입시킬 텍스트나 코드를 지정

page지시어
- jsp 페이지에 대한 정보를 지정 (웹컨테이너에 알려주는거)
-사용할 스크립트언어, 상속받을 클래스, import할 클래스, JSP가 생성하는 문서의 타입, 출력버퍼관련 속성, 사용할 에러페이지등의 속성을 지정



버퍼란?
출력결과를 만드는 즉시 클라이언트에 보내지 않고, 결과를 버퍼에 저장해서 한꺼번에 응답을 보냄
결과가 다 만들어지기도 전에 버퍼의 용량이 차버리면 자동으로 버퍼를 비워 버퍼의내용을 클라이언트로 보냄

taglib지시어
- jsp 페이지에서 사용할 태그 라이브러리를 선언함
- 태그라이브러리의 위치와 접두어를 지정
표준태그가아닌 사용자정의태그를 사용할떄는 uri에 어느위치에있는 태그라이브러리인지 적고
다른 태그라이브러리와 구별하기위해 접두어 prefix를 사용

내장객체!
자주 사용되는 기능을 JSP컨테이너가 객체형태로 제공한것
-묵시적으로 이미 정의되어 있는 변수(자바 객체)
@내장객체의 사용
별도의 선언이나 초기화 없이 사용가능
요청파라미터읽어오기, 응답결과전송하기,세션처리하기,웹어플리케이션 정보읽어오기 등
ex) request,response,session,application,out,page
request내장객체
클라이언트의 요청을 표현하는 JSP내장객체
HttpServletRequest유형
클라이언트와 서버관련 정보읽기
클라이언트가 전송한 데이터(파라미터)읽기
클라이언트가 전송한 헤더, 쿠키정보 읽기
속성의 처리(데이터 공유)








response 내장객체


응답 캐시의 사용
서버에 요청을 하지않고 캐시에 있는 데이터를 사용하여 응답하는 것
-빠른 응답이 가능
-서버로드와 네트워크 사용의 감소
-내용변경이 없는 페이지는 캐시를 통해 빠른 응답을 제공 될 수 있음
내용 변경이 빈번한 사이트의 경우 캐시가 적용되면 잘못된 결과를 응답으로 제공할 수 있음

no-store : 응답결과를 저장하지 말라
response.sendRedirect(String location)
다른페이지로 강제 이동
클라이언트가 서버에게 a.jsp를 처리하는데 처리하다가 다른페이지로 이동하라는거 a.jsp에서 수행된 내용을 버림
출력버퍼를 clear 하고 다른 페이지로 이동됨.
요청에 대한 임시응답이 클라이언트한테 일단 가고 브라우저가 재차 URL을 요청하게 됨
브라우저가 어떻게 아느냐? 상태코드 302, 응답헤더에 Location에 이동될URL이 들어있음
<jsp:forward> 와는 차이가 있음
한가지 주의할것은
이동할 location 을 주는데 요청데이터에 특수문자나 한글이 있으면 인코딩이 필요함

response.sendRedirect(URL)에 관한 설명으로 잘못된 설명은?
결과적으로 웹 서버가 브라우저에게 다른 페이지로 이동하라고 지시하는 것이다.
sendRedirect()를 수행하기 전에 이미 응답이 클라이언트로 전송되었다면 예외가 발생한다.
액션 태그 <jsp:forward>와 기능적으로 정확히 일치한다.
sendRedirect()를 수행하면 일단 클라이언트로 응답이 가고, 브라우저가 지정된 URL로 다시 요청을 한다.
<jsp:forward>는 교재 7장에 나오며 동일한 요청으로 처리된다. 따라서 sendRedirect()와 다르게 페이지 이동이 있었는지를 클라이언트가 알지 못한다.
액션태그
클라이언트 요청을 처리할떄 특별한 기능을 수행하도록 미리 정해져있는 것
형식은 xml태그와 같은 모양
시작태그(접두어와 액션이름,속성과값),몸체 마감 태그
표준액션태그는 접두어로 jsp 를 사용


동적 include
3-3.jsp의 결과가 만들어져서 삽입이 됨
표현언어
데이터를 쉽게 다루기위한 간단한 스크립트 언어
형태는 ${exprt}이며 값을 표현
-스크립트요소(표현식)보다 사용하기 쉬움
스크립트 요소 밖에서 사용
- 액션 태그의 속성값을 설정하거나 템프릿 데이터 내부에서 값을 출력할때 사용
-표현 언어의 내장객체나 JSTL과 함께 사용할 수 있음
JSTL(JSP standard Tag Library)
자주사용되는 기능을 태그로 만들어놓은거
유용한 사용자 정의 태그들을 모아 표준화한 태그모음
조건문,반복문과 같은 프로그래밍적 요소를 태그형태로 사용할수 있게함
@사용자정의태그
사용자가 정의한 커스텀태그
JSP표준태그를 확장하기 위한 것
스크립트릿을 사용하지 않고 변수나 수식의 값을 출력하고자 할 때 사용되는 JSP 요소는 무엇인가?
표현식
표현 언어
태그 속성
템플릿 데이터
표현식의 형태는 <%=expr %>이며 JSP 컨테이너는 변환 과정에서 표현식을 ‘수식(expr)을 출력하는 문장’으로 변환시킨다.
'수업 > JSP' 카테고리의 다른 글
7.모듈화된 jsp , 액션태그 (1) | 2024.10.05 |
---|---|
6. 내장객체, scope (1) | 2024.10.03 |
4.JSP동작원리 5.요청과 응답 (1) | 2024.10.02 |
2강 eclipse개발환경 (0) | 2024.10.01 |
1강 웹과 자바 (1) | 2024.10.01 |