본문 바로가기

Spring Framework/JSP

JSP 기본 객체와 영역

반응형

JSP를 공부 하다보면 한가지 의문이 있다. 

 

"request.getParameter() 처럼 request는 왜 객체 선언을 하지 않아도 사용할 수 있는거지? 똑같은 클래스의 객체 일텐데...."

 

그렇다. JSP에서는 회원가입이나 로그인 같은 로직을 구할때 html 로 전달한 값을 jsp에 받을 경우 request 객체를 사용한다. 자바를 기본적으로 사용하는 jsp인데 클래스 객체를 선언하지 않고 어떻게 사용할 수 있단 말인가?

 

이 의문점에서 출발해서 JSP에서 제공하는 기본 객체와 구체적인 내용들을 정리 해보려고 합니다.

 

  • 기본 객체란?

JSP로 웹 개발을 하기 위해서는 WAS 서버가 필요 합니다. WAS 서버에 대한 자세한 설명은 아래의 링크를 참고해 주세요

 

 

WEB 서버와 WAS의 차이

이번글은 WEB 서버와 WAS에 대한 개념적 이해와 차이점에 대해 정리해 보려고 합니다. WEB 서버 WEB 서버는 클라이언트와 직접적으로 통신하는 역할을 담당한다. 여기서 클라이언트는 웹 브라우저

jminc00.tistory.com

 

여러가지 WAS 서버가 있지만 tomcat 이라는 WAS를 사용한다고 가정해 봅시다. tomcat을 다운로드 받고 tomcat 내부

디렉토리 구조를 확인해 보면 

이런식의 구조를 확인 할 수 있습니다. 여기서 'lib'라는 폴더 안에 다양한 'jar'파일이 존재 합니다.

 

그중에 "servlet-api.jar" 이 JSP 기본객체를 사용할 수 있도록 해줍니다. JSP가 tomcat 서버와 연동 할 때 tomcat 내부 라이브러리를 가져오고 JSP의 서블릿 컨테이너에 의해 서블릿으로 변환 될때 자동적으로 request, response등 JSP 기본 객체들이 생성 되기 때문에 별도의 객체 선언 없이 사용할 수 있는 것입니다. 

 

그럼 위의 의문이 어느 정도 풀린 것 같습니다. WAS의 라이브러리와 JSP의 서블릿 컨테이너의 합작품이었네요

 

그럼 이제 가장 많이 사용하는 기본객체의 종류애 대해 정리 해보겠습니다.

 

 

  • JSP 기본 객체의 종류

JSP 기본 객체중 가장 많이 사용하는 request, response, out, session에 대해 정리해보겠습니다 .

 

기본 객체 실제 타입  설명 
request javax.servlet.http.HttpServletRequest 클라이언트의 정보를 저장한다.
response javax.servlet.http.HttpServletResponse 응답 정보를 저장한다.
out javax.servlet.jsp.JspWriter JSP 페이지가 생성하는 결과를 출력할 때 사용 되는 출력 스트림이다.
session javax.servlet.http.HttpSession HTTP 세션 정보를 저장한다.

 

사실 개발을 하면 그 의미는 자연스럽게 익힐 수 있지만 주요 메서드를 사용 하는게 매우 중요 합니다. 때문에 꼭 알고 넘어가야 하는 기본 객체별 메서드를 정리해 보겠습니다. 

 

  • request 기본 객체 주요 메서드

- 파라미터 읽기 메서드

getParameter(String name) : 이름이 name인 파라미터의 값을 구한다. 없을 경우 null

getParameterValues(String name) : 이름이 name인 모든 파라미터값을 배열로 구한다. 존재 하지 않을 경우 null

getParameterNames() : 웹 브라우저가 전송한 파라미터의 이름을 구한다.

getParameterMap() : 웹 브라우저가 전송한 파라미터의 맵을 구한다. 맵은 <파라미터 이름, 값>

 

- 요청 헤더 정보 읽기 메서드

getHeader(String name) : 지정한 이름의 헤더 값을 구한다.

getHeaders(String name) : 지정한 이름의 헤더 목록을 구한다.

getHeaderNames() : 모든 헤더의 이름을 구한다.

getIntHeader(String name) : 지정한 헤더의 값을 정수 값으로 읽어 온다.

getDateHeader(String name) : 지정한 헤더의 값을 시간 값으로 읽어 온다.

 

  • response 기본 객체 주요 메서드

- 헤더 설정 메서드

 

addDateHeader(String name, long date) : name 헤더에 date를 추가한다.

addHeader(String name, String value) : name 헤더에 value를 값으로 추가

addIntHeader(String name, int value) : name 헤더에 정수값 value를 추가

setDateHeader(String name, long date) : name 헤더의 값을 date로 지정한다.

setHeader(String, String value) : name 헤더의 값을 value로 지정한다.

setIntHeader(String name, int value) : name 헤더의 값을 정수 값 value로 지정한다.

 

 

  • session 기본 객체 주요 메서드

setAttribute(String name, Object value) : 파라미터 이름에 객체를 추가

getAttribute(String name) : 파라미터 이름에 객체를 반환

removeAtrribute(String name) : 파라미터 이름에 따른 객체를 삭제

getID() : 해당 세션의 고유 식별자 정보 반환

setMaxInactiveInterval(int interval) :  세션이 유지되는 유효시간을 설정

getMaxInactiveInterval() : 세션에 설정된 유효시간을 반환

 

  • out 기본 객체 주요 메서드

getBufferSize() : 출력 버퍼의 크기를 바이트 단위로 계산하여 정수 값을 리턴한다.

print() : 출력 스트림으로 문자열을 출력한다.

 

다음으로 알아볼 내용은 

 

  • JSP 기본 객체와 영역

 

JSP에서 기본 객체가 영향을 미치는 영역이 크게 4가지로 분류 할 수 있습니다. 각각의 영역을 분리하는 이유는 각자의 사용의 목적성이 다르기 때문입니다. 하나 하나 살펴 보면서 각각의 영역에 해당되는 역할을 정리해 보겠습니다.

 

1. 웹 어플리케이션 영역 (Web Aplication Scope)

 

먼저 웹 어플리케이션 영역을 알기 전에 "웹 어플리케이션" 이라는 개념을 알아야 할 것 같습니다.

 

웹 어플리케이션과 웹 사이트는 엄연히 다른 개념입니다. 웹 어플리케이션이란 웹 브라우저와 웹 기술을 사용하여 사용자와 대화하는 대화식으로서 인터넷을 이용하는 일종의 컴퓨터 프로그램을 의미하고, 웹 사이트는 기본적으로 웹 페이지의 모음으로 과거의 순수한 html로만 이루어진 뉴스나 블로그 페이지등을 의미했는데 지금의 블로그처럼 댓글이나 좋아요 등을 사용자들이 사용할 수 있게 되면서 웹 어플리케이션과 웹 사이트의 경계가 무너져서 웹 사이트 = 웹 어플리케이션의 형태가 된것 같습니다.

 

암튼 웹 어플리케이션은 이제 그 의미를 알 것 같습니다. 그럼 JSP 에서 웹 어플리케이션 영역은 세션, Request, page 영역에서 바라 볼때 자바에서 Static 같은 느낌으로 1개의 웹 어플리케이션당 하나의 application 기본객체가 생성되고 웹 어플리케이션 하위 영역에서 같은 객체를 공유해서 쓸 수 있습니다.

 

 

2. 세션 영역 (Session Scope)

 

다음 세션 영역인데 세션은 예를 들어 설명하는 편이 더 이해가 잘 됩니다. 

예를 들어 크롬을 열고 www.naver.com  에 접속해 로그인을 했다고 가정 해 봅시다. 하나의 크롬텝을 열고 www.naver.com  에 접속하고 새로고침을 하면 난 로그인을 안했는데 로그인이 됬다고 나옵니다. 

 

세션은 이렇게 하나의 브라우저와 관련된 영역으로 사용 중인 브라우저끼리 데이터를 공유할 수 있는 영역을 의미합니다. 그럼 당연히 세션 밑에 request, page 영역은 session객체를 사용할 수 있겠죠?

 

 

3. Request 영역

 

request 영역은 하나의 HTTP 요청을 처리할 때 사용되는 영역 입니다. HTTP의 Request 요청을 보내는 과정에서 Header나 body의 내용등을 다루기 위한 영역이라고 할 수 있습니다. HTTP에 대한 자세한 내용은 아래의 링클를 참고해 주세요

 

 

HTTP의 개념과 GET / POST 방식의 차이

이전 까지 GET 방식과 POST 방식의 차이점을 설명해 보라는 요청이 있었을 때 나는 다음과 같이 대답했다 "GET은 URL에 정보를 담아 보내고 POST는 body에 정보를 담아 보내는 것입니다!" 물론 아예 틀

jminc00.tistory.com

 

 

4. Page 영역

 

마지막으로 Page 영역은 하나의 JSP 페이지를 처리할 때 사용 되는 영역 입니다. 

HTTP 요청을 받고 특정 jsp 파일을 불러 오려는 경우가 이때에 해당됩니다. 예를 들어 아까 로그인의 상황에서 login.jsp를 불러와야 로그인이 가능하다면 그 login.jsp를 하기 위해 www.naver.com /login/login.jsp 같이 http 요청을 처리하는 영역에 해당 되는 거죠

 

 

이번글은 JSP의 기본객체를 사용할 수 있는 이유와 기본 객체의 종류 및 영역에 대해 정리 했습니다. 틀린 부분이 있다면 댓글에 남겨 주세요!

반응형

'Spring Framework > JSP' 카테고리의 다른 글

<jsp:include>와 include 디렉티브의 차이점  (0) 2022.01.14
JSP 동작 원리와 Servlet  (0) 2022.01.13