본문 바로가기
레거시

2022. 1 . 11 의 기록

by GroovyArea 2022. 1. 11.

- 하루 정리 - 

  • 세미 팀 회의 날짜 정하기 (뭘 해야 할지 생각해서 알려주자)
  • JSP 완벽 복습 및 예제 만들기

- 오늘 공부 내용 - 

JSP

  • JSP는 웹 문서이지만 WAS에 의해서 서블릿 클래스로 변환되기 때문에 웹 프로그램으로라고도 불린다.

directive

  • 지시어(Directive)
  1. page Directive : JSP 문서(웹프로그램)에 필요한 정보를 제공하도록 지시
  2. include Directive : JSP 문서에 외부 파일의 코드를 포함하도록 지시
  3. tagLibrary Directive : JSP 문서에 태그 라이브러리 파일의 Java 태그를 포함하도록 지시
  4. page Directive : JSP 문서를 요청하여 응답 받을 수 있는 문서(파일)의 유형(MimeType)과 캐릭터셋(CharterSet - Encoding) 을 제공하기 위한 속성 (contentType 과 import가 제일 중요)
  5. page Directive - import : JSP 문서에서 사용될 클래스 또는 인터페이스를 패키지로 명확하게 표현하기 위한 속성
  • page Directive 에서는 동일한 속성에 다른 속성값을 중복 선언한 경우 실행 시 500 에러 발생
  • ⇒ import 속성은 여러번 선언 가능
  • ⇒ 얘는 이클립스에서 자동 완성해줌 (수동으로 할 필요가 없다..)
  1. page Directive - errorPage : JSP 실행 시 예외가 발생된 경우 클라이언트에게 에러코드(500) 대신 에러 메시지를 전달하는 JSP 문서를 설정하기 위한 속성 - 클라이언트의 요청 URL주소 미변경
  • 사용자에게는 에러코드보다 HTML 문서로 응답해주는것이 좋다 (에러페이지의 이유)
  1. page Directive - isErrorPage : page Directive에서 isErrorPage 속성값을 [true]를 설정하면 예외 정보가 저장된 exception 내장객체 제공 (기본값 false)
  • errorPage 속성은 그리 많이 쓰이지는 않음
  • [web.xml] 파일에서 모든 웹프로그램에 대한 요청에러(4xx)와 응답에러(5xx)에 대한 에러페이지 설정 - 클라이언트의 요청 URL 주소 미변경
  1. WEB.xml 에서의 error-page 엘리먼트 : 서버에서 발생된 에러에 대한 메세지를 제공하기 위한 웹프로그램을 설정하는 부모 엘리먼트
  • exception-type : 웹 프로그램 실행 시 발생된 예외에 대한 예외클래스를 설정하는 엘리먼트
  • location : 에러 메시지를 제공하기 위한 웹프로그램의 URL 주소를 설정하는 엘리먼트
  • error-code: 클라이언트에서 전달되는 상태코드(에러 코드 : 4xx or 5xx)를 설정하는 엘리먼트 ) 야 500이 발생하면 대신 응답해줘라 (location으로)
  • web.xml에서는 Exception이 더 우선순위가 높다 (중복 에러 일때는) 일단 400으로 보내자.. 404도 많이 보냄

include - directive

  • 서버 컨텍스트로 존재하는 파일의 코드를 현재 JSP문서에 포함하는 지시어 - 정적 포함
  1. jspf 파일은 다른 jsp에 포함되는 파일 (서블릿으로 변환되지 않음) - 요청에 대한 처리와 응답이 목적이 아닌 다른 JSP 문서에 코드를 제공하기 위해 작성된 파일
  • JSPF 파일과 파일을 포함하는 JSP 파일에 선언된 page 지시어(Directive)의 contentType 속성값은 반드시 동일하게 설정
  • 헤더와 푸터 부분에 이용하면 될 것 같음 (유지보수에 유용함)
  • 그냥 요청하면 텍스트로 받아들여서 글자가 다깨짐 (서블릿으로 바뀌지 않음 요청에 대한 처리가 안됨) 일반 텍스트 파일과 다른 경우는 java코드를 쓸 수 있음
  1. Header 영역 : 로고, 메뉴 등
  2. Content 영역 : 요청에 대한 응답 결과
  3. footer 영역 : 저작권, 약관, 개인정보 보호정책 등 출력
  4. a 태그 리소스 경로 적을 때 절대경로로 해줘야함. (다른 폴더에 있을 수가 있음)

tagLib - directive

  • jsp만 이용한 프로그램은 거의 사용하지 않음.
  1. 태그 클래스 : JSP 문서에서 커스텀 태그를 사용하여 사용하여 동작되는 클래스
  2. ⇒ TagSupport 클래스를 상속받아 작성 → 상속받는 이유 : 부모 클래스 메소드를 사용하거나 오버라이드하기 위해서임. WAS가 사용할 수 있게 됨.
  3. doStartTag() : JSP 문서에서 커스텀 태그의 시작태그 사용 시 자동 호출되는 메소드
  4. doEndTag() : JSP 문서에서 커스텀 태그의 종료태그 사용 시 자동 호출되는 메소드
  5. WEb-inf 폴더에 xml 파일로 웹자원으로 등록함 태그 라이브러 디스크립트 파일을 tld 일로 규칙에 맞게 만들자
  6. uri 엘리먼트는 jsp 웹문서에서 tld 파일을 구분하기 위한 식별자 같은 역할.
  7. tag-class에 있는 클래스가 객체화 되어 자바 명령이 실행됨. body가 없다 (태그 내용이 없음)
  • JSP 문서에 태그 라이브러리 파일(TLD)을 포함하여 커스텀 태그를 제공하는 지시어
  • 태그 라이브러리 파일 : 태그 클래스를 커스텀 태그로 등록하는 XML 파일
  • 스크립틀릿으로 taglib Directive를 사용하여 태그 라이브러리 파일을 불러와 포함
  • prefix 속성 : 커스텀 태그를 사용하기 위한 네임스페이스(namespace)를 속성값으로 표현 (어디에 사는 김씨 대강 알려고) - prefix가 없는 파일로 만든 후 입맛에 맞게 이름 지어서 사용.
  • uri 속성 : 태그 라이브러리 파일에 등록된 식별자 (uri 엘리먼트의 태그내용)를 속성값으로 설정 : 자동 완성

JSP 내장 객체

  • WAS 프로그램에 의해 JSP 문서에 기본적으로 제공하는 Java 객체(인스턴스)
  1. page(HttpJspPage) : JSP 문서정보를 저장하여 제공하기 위한 인스턴스(메소드의 this와 유사)
  2. config(ServletConfig) : WAS 프로그램에 등록된 값을 제공하기 위한 인스턴스
  3. out(JspWriter) : 클라이언트에게 전달할 응답 문서를 생성하기 위한 인스턴스(출력스트림) - 표현식을 쓰면 내부적으로 out.println이 동작
  4. request(HttpServletRequest) : 클라이언트의 요청정보를 제공하기 위한 인스턴스
  5. response(HttpServletResponse) : 클라이언트의 응답정보를 제공하기 위한 인스턴스
  6. session(HttpSession) : 클라이언트와의 연결 지속성을 제공하기 위한 인스턴스
  7. application(ServletContext) : 서버의 컨텍스트 정보를 저장하여 제공하기 위한 인스턴스
  8. pageContext(pageContext) : JSP 문서에 필요한 Java 객체를 제공하기 위한 인스턴스 - (부모) 다 가지고 있음
  9. Exception(Throwable) : JSP 문서 실행 시 발생되는 예외를 저장하여 제공하기 위한 인스턴스 - page Directive의 isErrorPage 속성값을 [true]로 설정된 경우에만 제공되는 내장객체
  10. 객체 스코프 중요함
<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