웹/Backend

JSP 정리

또도닝 2021. 4. 4. 23:24

JSP(Java Server Page)

- JSP는 HTML 내에 자바 코드를 삽입하여 웹 서버에서 동적으로 엡 페이지를 생성하여 웹 브라우저에 돌려주는 언어이다. Java EE 스펙 중 일부로, 웹 애플리케이션 서버에서 동작한다.

 

 JSP는 실행시에는 자바 서블릿으로 변환된 후 실행되므로 서블릿과 거의 유사하다고 볼 수 있다.

하지만 서블릿과는 달리, HTML 표준에 따라 작성되므로 웹 디자인하기에 편리하다. 아파치 스트럿츠나 자카르다 프로젝트의 JSTL 등의 JSP 태그 라이브러리를 사용하는 경우에는 자바 코딩없이 태그만으로 간략히 기술이 가능하므로 생산성을 높일 수 있다.

 

JSP는 이런식으로 흘러간다.

 

JSP의 특징

jsp는 

1. 선언

- 멤버변수나 메소드 선언시에는  <%! 이부분 %> 에 자바코드와 동일하게 선언해준다.

2. 스크립트릿

- 스크립트릿은 클라이언트 요청 시 매번 호출되는 영역으로, Servlet으로 변환 시 service() method에 해당되는 영역이다.  <% 이부분 > 에 request와 response에 관려노딘 코드들을 구현한다. 

3. 표현식

- <%= 문자열 %> 이 부분에 브라우저에 출력할 데이터를 넣는다. 이 때, 문자열 뒤 세미콜론은 작성하지 않는다.

4. 주석

<%-- --%> html과 비슷한 주석처리 모양을 갖고 있다. 

 

지시자

1. page Directive

<%@ page attr1="val1" attr2 = "val2" %> 등을 이용해 컨테이너에게 현재 JSP를 어떻게 처리할 것인가에 대한 정보를 제공한다.

2. include Directive

<%@ include file="/template/header.jsp" %> include를 사용해 반복되는 코드들을 따로 저장해 놓은 뒤, 불러서 사용할 수 있다. 코드와 코드의 결합 느낌?

3. taglib Directive

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 

JSTL 또는 사용자에 의해 만든 커스텀 태그를 이용할 때 사용 된다. 이 태그를 이용해 조건문, 반복문 등을 만들 수 있기 때문에 JSP 페이지 내에 불필요한 자바 코드를 줄일 수 있다. 

 

JSP 기본 객체 9가지

1. request

- 브라우저에서 보낸 요청으로, HTML 폼 요소의 선택 값 등 사용자 입력 정보를 읽어올 때 사용한다.

2. response

- 사용자의 요청에 대한 응답을 처리하기 위해 사용된다. 필요한 로직들을 처리한 뒤, 브라우저로 반환된다.

3. pageContext

- 각종 기본 객체를 얻거나 forward 및 include 기능을 활용할 때 사용된다. 한 페이지 내에서만 사용할 수 있는 attribute 박스 같은 것? 이라고 생각하면 편리하다. 

4. session 

- 클라이언트에 대한 세션 정보를 처리하기 위해 사용된다. 요청하고 응답하고 처리하는 도중에 계속해서 공유되는 영역이다. 브라우저 당 하나씩 존재하며, 브라우저가 꺼질 때 까지 유효하다. 로그인을 한번 하면 로그인 페이지를 벗어나도 그 사이트 모든 곳에서 로그인이 되어 있는 기능 등을 구현할 때 사용된다.

5. application

- 웹 서버의 애플리케이션 처리와 관련된 정보를 레퍼런스 하기 위해 사용된다. 세션보다 하나 더 큰 개념으로, 모든 브라우저를 합친 것이라고 생각하면 된다. 사용자 A가 담아 놓은 자원을 사용자 B도 쓸 수 있다. 

6. out

- 사용자에게 전달하기 위한 output 스트림을 처리할 때 사용된다. 

7. config

- 현재 JSP에 대한 초기화 환경을 처리하기 위해 사용된다.

8. page

- 현재 JSP 페이지에 대한 참조 변수에 해당된다.

9. exception

- Error를 처리하는 JSP에서 isErrorPage 속성을 true로 설정하면 exception 내장 객체를 사용할 수 있고, 기본은 false로 설정되어 있다. 전달된 오류 정보를 담고 있는 내장 객체이다.