- 하루 정리 -
- 세미 팀 회의 날짜 정하기 (뭘 해야 할지 생각해서 알려주자)
- JSP 완벽 복습 및 예제 만들기
- 오늘 공부 내용 -
JSP
- JSP는 웹 문서이지만 WAS에 의해서 서블릿 클래스로 변환되기 때문에 웹 프로그램으로라고도 불린다.
directive
- 지시어(Directive)
- page Directive : JSP 문서(웹프로그램)에 필요한 정보를 제공하도록 지시
- include Directive : JSP 문서에 외부 파일의 코드를 포함하도록 지시
- tagLibrary Directive : JSP 문서에 태그 라이브러리 파일의 Java 태그를 포함하도록 지시
- page Directive : JSP 문서를 요청하여 응답 받을 수 있는 문서(파일)의 유형(MimeType)과 캐릭터셋(CharterSet - Encoding) 을 제공하기 위한 속성 (contentType 과 import가 제일 중요)
- page Directive - import : JSP 문서에서 사용될 클래스 또는 인터페이스를 패키지로 명확하게 표현하기 위한 속성
- page Directive 에서는 동일한 속성에 다른 속성값을 중복 선언한 경우 실행 시 500 에러 발생
- ⇒ import 속성은 여러번 선언 가능
- ⇒ 얘는 이클립스에서 자동 완성해줌 (수동으로 할 필요가 없다..)
- page Directive - errorPage : JSP 실행 시 예외가 발생된 경우 클라이언트에게 에러코드(500) 대신 에러 메시지를 전달하는 JSP 문서를 설정하기 위한 속성 - 클라이언트의 요청 URL주소 미변경
- 사용자에게는 에러코드보다 HTML 문서로 응답해주는것이 좋다 (에러페이지의 이유)
- page Directive - isErrorPage : page Directive에서 isErrorPage 속성값을 [true]를 설정하면 예외 정보가 저장된 exception 내장객체 제공 (기본값 false)
- errorPage 속성은 그리 많이 쓰이지는 않음
- [web.xml] 파일에서 모든 웹프로그램에 대한 요청에러(4xx)와 응답에러(5xx)에 대한 에러페이지 설정 - 클라이언트의 요청 URL 주소 미변경
- WEB.xml 에서의 error-page 엘리먼트 : 서버에서 발생된 에러에 대한 메세지를 제공하기 위한 웹프로그램을 설정하는 부모 엘리먼트
- exception-type : 웹 프로그램 실행 시 발생된 예외에 대한 예외클래스를 설정하는 엘리먼트
- location : 에러 메시지를 제공하기 위한 웹프로그램의 URL 주소를 설정하는 엘리먼트
- error-code: 클라이언트에서 전달되는 상태코드(에러 코드 : 4xx or 5xx)를 설정하는 엘리먼트 ) 야 500이 발생하면 대신 응답해줘라 (location으로)
- web.xml에서는 Exception이 더 우선순위가 높다 (중복 에러 일때는) 일단 400으로 보내자.. 404도 많이 보냄
include - directive
- 서버 컨텍스트로 존재하는 파일의 코드를 현재 JSP문서에 포함하는 지시어 - 정적 포함
- jspf 파일은 다른 jsp에 포함되는 파일 (서블릿으로 변환되지 않음) - 요청에 대한 처리와 응답이 목적이 아닌 다른 JSP 문서에 코드를 제공하기 위해 작성된 파일
- JSPF 파일과 파일을 포함하는 JSP 파일에 선언된 page 지시어(Directive)의 contentType 속성값은 반드시 동일하게 설정
- 헤더와 푸터 부분에 이용하면 될 것 같음 (유지보수에 유용함)
- 그냥 요청하면 텍스트로 받아들여서 글자가 다깨짐 (서블릿으로 바뀌지 않음 요청에 대한 처리가 안됨) 일반 텍스트 파일과 다른 경우는 java코드를 쓸 수 있음
- Header 영역 : 로고, 메뉴 등
- Content 영역 : 요청에 대한 응답 결과
- footer 영역 : 저작권, 약관, 개인정보 보호정책 등 출력
- a 태그 리소스 경로 적을 때 절대경로로 해줘야함. (다른 폴더에 있을 수가 있음)
tagLib - directive
- jsp만 이용한 프로그램은 거의 사용하지 않음.
- 태그 클래스 : JSP 문서에서 커스텀 태그를 사용하여 사용하여 동작되는 클래스
- ⇒ TagSupport 클래스를 상속받아 작성 → 상속받는 이유 : 부모 클래스 메소드를 사용하거나 오버라이드하기 위해서임. WAS가 사용할 수 있게 됨.
- doStartTag() : JSP 문서에서 커스텀 태그의 시작태그 사용 시 자동 호출되는 메소드
- doEndTag() : JSP 문서에서 커스텀 태그의 종료태그 사용 시 자동 호출되는 메소드
- WEb-inf 폴더에 xml 파일로 웹자원으로 등록함 태그 라이브러 디스크립트 파일을 tld 일로 규칙에 맞게 만들자
- uri 엘리먼트는 jsp 웹문서에서 tld 파일을 구분하기 위한 식별자 같은 역할.
- tag-class에 있는 클래스가 객체화 되어 자바 명령이 실행됨. body가 없다 (태그 내용이 없음)
- JSP 문서에 태그 라이브러리 파일(TLD)을 포함하여 커스텀 태그를 제공하는 지시어
- 태그 라이브러리 파일 : 태그 클래스를 커스텀 태그로 등록하는 XML 파일
- 스크립틀릿으로 taglib Directive를 사용하여 태그 라이브러리 파일을 불러와 포함
- prefix 속성 : 커스텀 태그를 사용하기 위한 네임스페이스(namespace)를 속성값으로 표현 (어디에 사는 김씨 대강 알려고) - prefix가 없는 파일로 만든 후 입맛에 맞게 이름 지어서 사용.
- uri 속성 : 태그 라이브러리 파일에 등록된 식별자 (uri 엘리먼트의 태그내용)를 속성값으로 설정 : 자동 완성
JSP 내장 객체
- WAS 프로그램에 의해 JSP 문서에 기본적으로 제공하는 Java 객체(인스턴스)
- page(HttpJspPage) : JSP 문서정보를 저장하여 제공하기 위한 인스턴스(메소드의 this와 유사)
- config(ServletConfig) : WAS 프로그램에 등록된 값을 제공하기 위한 인스턴스
- out(JspWriter) : 클라이언트에게 전달할 응답 문서를 생성하기 위한 인스턴스(출력스트림) - 표현식을 쓰면 내부적으로 out.println이 동작
- request(HttpServletRequest) : 클라이언트의 요청정보를 제공하기 위한 인스턴스
- response(HttpServletResponse) : 클라이언트의 응답정보를 제공하기 위한 인스턴스
- session(HttpSession) : 클라이언트와의 연결 지속성을 제공하기 위한 인스턴스
- application(ServletContext) : 서버의 컨텍스트 정보를 저장하여 제공하기 위한 인스턴스
- pageContext(pageContext) : JSP 문서에 필요한 Java 객체를 제공하기 위한 인스턴스 - (부모) 다 가지고 있음
- Exception(Throwable) : JSP 문서 실행 시 발생되는 예외를 저장하여 제공하기 위한 인스턴스 - page Directive의 isErrorPage 속성값을 [true]로 설정된 경우에만 제공되는 내장객체
- 객체 스코프 중요함
<short-name>c</short-name>
<uri>http://www.itwill.xyz/jsp/custom</uri>
<tag>
<name>display</name>
<tag-class>xyz.itwill.custom.CustomTag</tag-class>
<body-content>empty</body-content>
</tag>
<%@taglib prefix="c" uri="http://www.itwill.xyz/jsp/custom"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP</title>
</head>
<body>
<h1>taglib Directive</h1>
<hr>
<p>JSP 문서에 태그 라이브러리 파일(TLD)을 포함하여 커스텀 태그를 제공하는 지시어</p>
<p>태그 라이브러리 파일 : 태그 클래스를 커스텀 태그로 등록하는 XML 파일</p>
<hr>
<c:display/>
<c:display/>
<c:display/>
</body>
</html>
=> short-name 엘리먼트는 prefix와 같은 식별자 기능을 하는 것으로 확인!
- 세미 팀플 -
> 각 맡은 역할의 테이블 및 컬럼명 확인하기
> 토요일 2~6시 회의 (공부는 자유)
> 참조키 확실히 공부해오기
- 스터디 내용 및 결과 -
> tagLib 쓰는 이유 확인
> 전체적인 jsp 복습 (지시어, 스크립팅요소)
반응형
'레거시' 카테고리의 다른 글
2022.1.14의 기록 (0) | 2022.01.14 |
---|---|
2022.1.13의 기록 (0) | 2022.01.13 |
2022.1.10의 기록 (0) | 2022.01.11 |
2022.1.7의 기록 (0) | 2022.01.07 |
2022.1.6의 기록 (0) | 2022.01.07 |