*JSP
-Java Server Page
-HTML 태그에 자바로 프로그래밍하여 브라우저에 보여주는 특별한 페이지
-톰캣 서버가 번역하여 화면에 html 형태로 출력 cf) html은 웹 브라우저내의 번역기가 알아서 번역
-과정
사용자가 브라우저 주소 입력란에 웹 서버에게 jsp 페이지 요청 -> 웹 서버는 jsp 페이지를 찾아 html 형태로 사용자에게 전송
-<%@ page 환경 설정 구현 %> : 이 파일이 jsp 파일임을 알리는 지시자임 (필수)
-<% %> : 스크립트릿, 자바 코드가 담긴 파일, html 코드 안에 들어가도 상관 X,
서블릿 컨테이너는 이 부분을 알아서 자바 코드로 인식함
-<%= > : 표현식
*Servlet 대신 JSP를 사용하는 이유
-Servlet은 자바 코드 안에 html 코드가 들어가는 구조 -> 원래는 이렇게 개발했었음
-JSP는 html 안에 자바 코드가 들어가는 구조 -> 디자이너들에게 유리하게 발전
-하지만, 서블릿 컨테이너는 jsp를 있는 그대로 받아들이지 못하고 이를 jsp->서블릿 코드로 변환 후
동작하기 때문에 서블릿 내부 과정은 꼭 알아둬야함
*JSP가 서블릿 컨테이너에 동작하는 순서
1) 브라우저에서 jsp 페이지를 웹 서버에 요청
2) 웹 서버는 jsp에 대한 요청을 서블릿 컨테이너에 전달
3) 서블릿 컨테이너가 해당 jsp를 찾아서 서블릿 파일(.java) 생성
4) 서블릿 파일은 컴파일되어 서블릿 클래스 파일(.class) 생성
5) 서블릿 클래스 파일을 웹 서버로 보냄
6) 웹 서버는 html 형태로 응답 결과를 브라우저로 내보내줌
*컨택스트 패스
-보통 프로젝트명과 일치하지만 패스명을 바꿔줄 수 있음
-어떻게? 프로젝트 생성 시에, Context root 칸에서 변경 가능
-후에, server.xml의 <context path=” ”> 속성에서 확인 가능
-소스가 있는 경로라고 할 수 있음
-왜 쓰는가? 웹 어플리케이션을 구분하기 위한 패스 (프로젝트가 여러 개일 경우)
*내장객체
-객체가 이미 생성된 상태로 제공되어 객체 생성 없이 바로 사용 가능한 객체
-out 내장객체
서블릿의 response.getWriter() 메서드로 얻어낸 out 객체와 동일
서블릿에서는 객체 생성 후 사용되지만 jsp에서는 내장 객체로 제공됨
-jsp에서는 출력할 때 out.print(“출력합니다"); 이와 같이 출력
*JSP 스크립트 요소 : 스크립트릿 <% %>
-웹 서버에서 실행되는 자바 코드 기술
-기술된 코드는 서블릿의 _jspService() 메서드 안으로 들어감
-일반 변수나 for문 if문과 같은 것이 기술
-html 태그 사용 가능(서블릿처럼 “<h3></h3>” “<br>” 이런식으로 기술해야함)
-이 안에 기술되는 변수는 서블릿으로 변환 시, 서블릿의 메서드로 들어가지기 때문에 지역변수
*JSP 스크립트 요소 : 선언문 <%! %>
-변수 선언, 메서드 선언
-<% %>랑 다른 점은?
스크립트릿은 서블릿에서 메서드 안으로 들어가는데 만약에, 새로운 메서드 정의나 static 변수가 필요할
경우에 메서드나 static 변수는 클래스 영역에 선언해야하므로 이럴 때 이 태그를 사용
-이 안에 기술되는 변수는 서블릿으로 변환 시, 서블릿 클래스에 선언되는 필드
*JSP 스크립트 요소 : 표현식 <%= %>
-서블릿 컨테이너는 이 태그를 만나면 out.print()로 변환
ex) <%= a %> → out.print(a);
*JSP 스크립트 요소 : 주석문
// or /* ….. */ or <%-- --%>
cf) html 주석 <!-- 여기에 입력 -->
*JSP 스크립트 요소 : 지시자 <%@ %>
-페이지에 대한 전체 속성
-에러가 발생하였을 때 보여줄 에러 페이지
<%@ page errorPage=”error.jsp” %>
-현재 페이지에 다른 html, jsp 페이지의 내용을 삽입할 때 (공통적인 부분)
<%@ include file=”footer.jsp” %>