response 내장 객체
request와 반대. 사용자의 요청을 처리한 결과를 웹브라우저로 전달하는 정보 저장
- 기능
∙ 리다이렉트 하기
∙ 헤더 정보 입력 - 리다이렉트 : 페이지 이동
다른 페이지로 (강제) 이동하도록 response 객체의 리다이렉션 메소드 제공
void sendRedirect(String url)
추후 <jsp.forward..>와 차이 보자
out 내장 객체
- 웹 브라우저에 데이터를 전송하는 출력 스트림 객체
- JSP 컨테이너는 JSP 페이지에 사용되는 모든 표현문 태그와 HTML, 일반 텍스트 등을 out 내장객체를 통해 웹 브라우저에 그대로 전달
- 스크립트릿 태그에서 사용/ <%= %>와 동일한 결과
☑ 메소드
void | print(String str) | 브라우저에 출력 |
void | println(String str) | 브라우저에 출력. 줄바꿈 적용 안됨 |
void | newLine() | 줄바꿈 |
int | getBuffersize() | 출력버퍼 크기 반환 |
void | flush() | 출력버퍼에 저장된 내용 브라우저에 전송하고 비우기 |
application 내장 객체
- 어플리케이션과 관련된 기본 객체
- 특정 웹 어플리케이션에 포함된 모든 jsp페이지는 하나의 application 내부 객체를 공유한다.
- 초기 설정 정보 읽기, 서버 정보 읽기, 웹 어플리케이션이 제공하는 자원 읽기 등
- 웹 어플리케이션 초기화 파라미터 읽기
웹 어플리케이션 전체에 사용할 수 있는 초기화 파라미터는 WEB-INF\web.xml 파일에 <context-param> 태그를 사용하여 추가한다.
☑ 초기화 파라미터 추가하기 (설정정보)
* web.xml<context-param> <description>파라미터 설명(필수아님)</description> <param-name>파라미터이름</para-name> <param-value>파라미터값</para-value> </context-param>
▹웹 어플리케이션을 위한 설정 정보를 담고 있는 파일
▹WEB-INF 폴더 내에 위치해야함
▹web.xml 파일에 초기화 파라미터를 추가하면, JSP는 application 내부객체가 제공하는 메서드를 사용해서 초기화 파라미터를 사용할 수 있다.
❗ xml 파일안에 코드는 되도록 타이핑 치던가, 파일로 띄어놓고 복붙하기(encoding 확인), 외부에서 복사해서 붙여넣으면 코드가 틀리지 않아도 실행 되지 않는 경우가 있기 때문에
❗ xml 파일 수정했으면 무조건 서버 재부팅, 재시작 해야 수정된 것이 반영됨
☑ 초기화 파라미터 읽는 메소드
String getInitParameter(String name) 이름이 name인 웹 어플리케이션 초기화 파라미터값을 읽어옴 Enumeration<String> getIniParameterNames() 초기화 파라미터의 이름 목록 리턴 - 서버 정보 읽어 오기
application 내부 객체는 현재 사용중인 웹 컨테이너에 대한 저오를 읽어오는 메소드 제공
String getServerInfo() 서버 정보 구하기 String getMajorVersion() 서버가 지원하는 서블릿 규약 메이저 버전 정보 (버전 정수 부분) String getMinorVersion() 서버가 지원하는 서블릿 규약 마이너 버전 정보 (버전 소수 부분) - 로그 메세지 기록하기
application 내부객체는 웹 컨테이너가 사용하는 로그 파일에 로그 메세지를 기록하는 메소드 제공
void log(String msg) msg를 로그로 남긴다 void log(String msg, Throwable throwable) msg를 로그로 남긴다. 예외 정보도 함께 로그에 기록
에러페이지 세팅
웹 어플리케이션 실행 도중에 발생할 수 있는 오류에 대비한 예외 처리 코드를 작성하여 비정상적인 종료를 막기 위한 세팅
1. 웹 에러
☑ 프로그래머의 실수로 일어날 수 있는 웹 에러 두개
- 404 : Not Found : 요청 경로 오류. 잘못된 경로
- 500 : Internal Server Error : 요청 페이지의 로직 오류 (자바 문법 오류)
☑ 그 외 HTTP 상태 코드
- [2xx] Success 성공 관련 코드
200 : Ok 성공 : 서버가 요청한 페이지를 잘 처리 제공했다 - [3xx] : Redirection 이동 관련 코드
- [4xx] : Client Error 관련 코드
400 : Bad Request : 요청이 이상함
405 : Method Not Allowed 해당 메소드 안됨 : 허용되지 않음 - [5xx] Server Error 관련 코드
503 : Service Unavailable : 서비스 지원불가
2. 예외 처리 방법
- try/catch/finally를 이용한 예외 처리
- page 디렉티브 태그를 이용한 예외 처리
- web.xml 파일을 이용한 예외 처리
☑ 동시 적용시 예외처리 우선순위
- try/catch/finally
- page 디렉티브태그
- web.xml 예외 유형
- web.xml 오류 코드
- 위 항목에 해당 안되면 웹서버 제공하는 기본 오류 페이지 출력
☑ web.xml 파일을 이용한 예외 처리
<error-page>
<error-code>...</error-code> 또는 <exception-type>...</excepption-type>
<location>...</location>
</error-page>
- error-code : 오류코드 설정하는데 사용
- exception-type : 자바 예외 유형의 정규화된 클래스 이름을 설정할 때 사용
- location : 오류 페이지 url 설정하는데 사용 (오류가 발생했을때 보여줄 페이지)
액션태그
- 서버나 클라이언트에게 어떤 행동을 하도록 명령하는 명령 태그
- 페이지와 페이지사이 제어, 다른 페이지 실행결과를 현재 페이지에 포함, 자바빈즈 등 다양한 기능 제공
- 자바를 태그로 만들어 놓은것
▸페이지의 모듈화, 로직의 모듈화를 구현하기 위해 자바는 자바끼리 스크립트는 스크립트 끼리
▸화면 표현과 로직이 섞여 있으면 재사용하기 어려워 따로 분리시키자
☑ jap 페이지 구성하는 태그 정리
- 디렉티브 태그 : <%@ page / include /taglib ... %>
- 스크립트 태그 : 선언문 <%! %> / 스크립트릿 <% %> / 출력문 <%= %>
- 주석 : <%-- -->
- 액션태그 : <jsp: >
☑ 액션태그 종류
- forward : 다른 페이지로 이동 (흐름제어)
- include : 외부 페이지 내용 포함, 페이지 모듈화
- useBean : 자바 빈즈 설정 (태그로 자바 클래스 객체 생성)
- setProperty : 자바 빈즈의 프로퍼티값 설정
- getProperty : 자바 빈즈의 프로퍼티값 얻어오기
- param : forward, include 등 특정 액션태그에 인자 추가
자주 안쓰이는 태그 - element : 동적 xml 요소 설정
- attribute : 동적 정의된 xml 요소의 속성 설정
- body : 동적 정의된 xml 요소의 몸체 설정
- text : jsp 페이지 및 문서에서 템플릿 텍스트 작성
forward 액션태그
- 다른 페이지로 이동
- jsp 컨테이너는 forward 액션태그를 만나면 그 전까지 출력 버퍼에 저장되어있던 내용 모두 삭제함
<jsp:forward page="파일명" />
<jsp:forward page="파일명"> </jsp:forward>
<!--홑태그, 겉태그 둘다 가능-->
# 파일명 : 이동할 페이지의 파일명 또는 url로 설정
💡 forward vs sendRedirect
∙ sendRedirect : 데이터 없이 단순 이동. 주소창 URL 주소가 도착 페이지 주소임
∙ forward : 데이터 가지고 이동. 일반적으로 많이 사용. 주소가 도착페이지 주소가 아님
include 액션태그
include 디렉티브 택처럼 외부 파일 내용을 포함시키는 태그
<jsp:include page="파일명" flush="false" />
# flush : 외부파일로 제어가 이동할때 현재 jsp 페이지가 지금까지 출력버퍼에 저장한 결과를 처리
기본값 false, true로 설정하면 지금까지 출력 버퍼에 저장된 내용을 웹브라우저에 출력하고 출력버퍼를 비움.
false로 지정하는 것이 좋다.
▹출력할때 헤드 정보도 같이 넘어가기 때문에 충돌이 날 수 있음
💡 include 태그 비교
- include 디렉티브 태그
▸ 단순 코드 복붙
∙ 처리 : 번역시 자원 포함
∙ 기능 : 현재 페이지에 다른페이지 내용 삽입
∙ 데이터 전달 방법 : 페이지내의 변수 선언 후 값 저장
∙ 용도 : 다수의 jsp 페이지에서 공통으로 사용되는 코드나 저작권 같은 문장을 포함하는 경우 사용
ex) a에 b 복사하면 a에서 처리 전부 넘어옴 - include 액션 태그
▸ 외부 파일 실행된 후 현재 jsp 페이지로 제어를 변환 시킴
▸ 외부 파일 처리 결과 내용 포함
∙ 처리 : 요청시 자원 포함
∙ 기능 : 별도의 파일로 요청 처리 흐름을 이동
∙ 데이터 전달 방법 : request 내장객체나 param액션태그를 이용하여 전달
∙ 용도 : 화면 레이아웃 일부분을 모듈화 할때 주로 사용 , 동적페이지에 사용
http 요청 -▹ 01코드 ▹ <jsp:include..> ▹02코드 ▹01코드 ▹http응답
ex) a에 b 복사했는데 처리는 b에서 되고 마지막 실행된 결과만 넘어옴, 처리하는데 필요한 데이터가 있으면 a에서 보내줘야함
param 액션태그
- 다른 페이지에 정보를 전달하는 태그
- 단독 사용 불가, forward, include 태그 내부에서 사용됨
- 전송할 값의 개수만큼 param 태그 사용
☑ 기본구조
<jsp:forward page="파일명">
<jsp:param name="파라미터명" value="전달할값" />
<jsp:param name="파라미터명" value="전달할값" />
...
</jsp:forward>
- param 액션태그는 파라미터를 이용해서 데이터를 추가하기 때문에 데이터 타입 전송/꺼내기 제약이 있다.
▸ 내부 객체의 속성을 이용 - 속성을 공유할 수 있는 유효 범위
내부 객체가 존재하는 동안 사용할 수 있는 속성의 영역
영역 내부객체 유효범위 page pageContext 해당 페이지가 클라이언트에게 서비스를 제공하는 동안 유효 request request 클라이언트 요청이 처리되는 동안 유효 sessoin session 세션이 유지되는 동안 유효 (브라우저 열고 닫기 전까지) application application 웹 어플리케이션이 실행되고 있는 동안 유효 (서버를 끌때까지)
'basic > jsp' 카테고리의 다른 글
[JSP 실습] - 스크립트 요소(스크립트릿, 선언부, 출력문) (0) | 2021.06.04 |
---|---|
JSP[04] - 자바빈즈 / useBean, setProperty , getProperty 액션태그 / JDBC (0) | 2021.06.04 |
JSP[02] - 디렉티브 태그(page, include, teglib), 스크립트 요소, 내장객체(request) (0) | 2021.06.02 |
JSP[01] - 웹과 JSP (0) | 2021.06.01 |
JSP[00] - 세팅 (0) | 2021.06.01 |