JSP (Java Server Page)
- 웹 컨테이너
- JSP 컨테이너, Servlet 컨테이너
- .jsp 파일을 java파일(서블릿 파일)로 변환해주는 역할
- JSP의 변환과 동작 방식
- .jsp는 JSP 컨테이너에 의해 Servlet파일(.java)로 변환됨
- 변환된 Servlet파일은 서블릿 컨테이너에 의해 관리됨
- 해당 jsp에 대한 요청 수신 시, 응답으로 out.write()를 통해 문자열(HTML문서)을 클라이언트에게 반환
1. 지시자 (Directive)
<%@ page %>
- 페이지에 대한 정보 지정
- import
- session
<%@ include file =".jsp파일명" %>
- 메뉴바, footer등 모든 페이지에서 중복 사용되는 것들을 모듈별로 관리할 수 있음
2. 선언 (Declaration)
<%! 멤버변수, 메소드 선언 %>
- .java로 변경 시, 멤버변수, 메소드 선언 영역으로 옮겨짐
3. 스크립틀릿 (scriptlet)
<% service()에서 실행될 코드 %>
- .java로 변경시, service()메소드 내부로 옮겨짐
4. 표현식 (expression)
<%= 출력될 값 %> =>자바코드에서의 값
- HTML 문서로 만들어질 값을 넣어줌
- .java로 변경 시, out.print("출력될 값")
5. 주석
<%-- 주석구문 --%>
- .java파일로 변경 시 사라짐
=> jsp주석은 클라이언트에게 전달하지 않음(코드에서 제외됨)
(사라지는 시점은. jsp 컨테이너가 servlet파일로 바꿀 때)
내장객체
-
.jsp파일에서 사용가능 객체
1. application
- ServletContext 객체
- 프로젝트마다 하나씩 생성되는 객체
- 서버에 대한 정보 등을 확인하거나, 서버 단위로 상태 유지가 필요한 경우
2. session 객체
- HttpSesstion 객체
- 클라이언트(브라우저)마다 하나씩 생성
- 클라이언트 단위로 상태유지 필요한 경우 사용
3. Request, Response
- HttpServletRequest, HttpServletResponse 객체
- 요청을 받을 때마다 생성되고 사라짐
4. PageContext
- JSP 페이지당 하나씩 생성되는 객체
- HttpServleetRequest 객체를 반환해주는 용도로 주로 사용 예쩡
- Ex)
PageContext.getRequest()를 통해
페이지 요청 응답 방식
forward 방식
- 요청을 받은 서블릿 | jsp가 => 다른 내부의 서블릿 | jsp로 요청을 전가하는 방식
- HttpServeletRequest, HttpServletResponse 객체를 함께 넘김(=>정보전달)
- HttpServletRequest에 필요한 정보를 담아 넘길 수 있음
- 경로의 기준
- 프로젝트의 context-path를 root 경로로 잡음
/ : 현재 프로젝트의 경로 내에서만 forwarding 할 수 있다.
redirect 방식
- 요청을 받은 서블릿 | jsp가 클라이언트(브라우저)에게 재요청할 url을 응답으로 줌
- 클라이언트(브라우저)는 받은 url로 다시 서버에 요청(request, response 객체 새로이=>값 없음)
- 현재 서버가 아닌 외부의 다른 서버(페이지)로도 요청 가능
- response.sendRedirect("url")
- url에는 외부 경로도 가능
redirect 방식을 사용해야 하는 경우들
- 외부 다른 페이지로 이동해야 할 때
- 클라이언트(브라우저)의 주소 표시줄에 새로운 URL이 표시되어야 할 때