JSP동작 원리
클라이언트가 웹브라우저로 helloWorld.jsp를 요청하게 되면 JSP컨테이너가 JSP파일(.jsp)로 변환한다.
Servlet파일(.java)은 컴파일 된 후 클래스 파일(.class)로 변환되고 요청한 클라이언트한테 html파일 형태로 응답된다.
웹브라우저 요청 -> JSP >> Servlet(helloWorld.js >> helloWorld_jsp.java) -> Servlet >> class(helloWorld_jsp.java >> helloWorld_jsp.class)
-> 웹브라우저 응답(HTML형태로 응답)
==============================================================
JSP 내부 객체
개발자가 객체를 생성하지 않고 바로 사용할 수 있는 객체가 내부객체이다.
JSP에서 제공되는 내부객체는 JSP컨테이너에 의해 Servlet으로 변환될 때 자동으로 객체가 생성된다.
내부객체 종류
- 입출력 객체 : request, response, out
- 서블릿 객체 : page, config
- 세션 객체 : session
- 예외 객체 : exception
================================================================
스크립트릿(scriptlet) : <% java코드 기술 %>
JSP페이지에서 JAVA언어를 사용하기 위한 요소 중 가장 많이 사용되는 요소이다.
선언(declaration) : <%! java코드 기술 %>
JSP페이지 내에서 사용되는 변수 또는 메소드를 선언할 때 사용.
선언된 변수 및 메소드는 전역의 의미로 사용
표현식(expression) : <%= java코드 기술 %>
JSP페이지 내에서 사용되는 변수의 값 또는 메소드 호출 결과값을 출력하기 위해 사용된다.
결과값은 String타입이며, ';'를 사용할 수 없다.
지시자
JSP페이지의 전체적인 속성을 지정할 때 사용한다.
page, include, taglib가 있으며, <%@ 속성 %> 형태로 사용된다.
page : 해당 페이지의 전체적인 속성 지정
include : 별도의 페이지를 현재 페이지에 삽입
taglib : 태그라이브러리의 태그 사용
page 지시자 : 페이지의 속성을 지정할 때 사용한다. 주로 사용되는 언어 지정 및 import문을 많이 사용한다.(ex. <%@ page import="java.util.Arrays" %>
include 지시자 : 현재 페이지내에 다른 페이지를 삽입할 때 사용된다. file속성을 이용 한다.(ex. <%@ include file='test.jsp' %>
taglib 지시자 : 사용자가 만든 tag들을 태그라이브러리라고 한다. 태그라이브러리를 사용하기 위해 taglib지시자를 사용한다.
uri 및 prefix 속성이 있으며, uri는 태그라이브러리의 위치 값을 가지며, prefix는 태그를 가리키는 이름 값을 가진다.
=======================================================================
request객체의 이해
웹브라우저를 통해 서버에 어떤 정보를 요청하는 것을 request라고 한다.
웹브라우저(클라이언트) --> request --> 서버 --> response --> 웹브라우저(클라이언트)
Request객체 관련 메소드
- getContextPath() : 웹어플리케이션의 컨텍스트 패스를 얻는다.
- getMethod() : get방식과 post방식을 구분할 수 있다.
- getSession() : 세션 객체를 얻는다.
- getProtocol() : 해당 프로토콜을 얻는다.
- getRequestURL() : 요청 URL을 얻는다.
- getRequestURI() : 요청 URI를 얻는다.
- getQueryString() : 쿼리스트링을 얻는다.
Parameter 메소드
- 실제 많이 쓰이는 메소드는 parameter와 관련된 메소드이다.
- JSP페이지를 제작하는 목적이 데이터 값을 전송하기 위해서 이므로, parameter 관련 메소드는 중요
getParameter(String name) : name에 해당하는 파라미터 값을 구함.
getParameterNames() : 모든 파라미터 이름을 구함.
getParameterValues(String name) : name에 해당하는 파라미터값들을 구함.
response객체의 이해
웹브라우저의 요청에 응답하는 것을 response라고 하며, 이러한 응답(response)의 정보를 가지고 있는 객체를 response객체라고 한다.
웹브라우저(클라이언트) --> request --> 서버 --> response
getCharacterEncoding() : 응답할때 문자의 인코딩 형태를 구한다.
addCookie(cookie) : 쿠키를 지정한다.
sendRedirect(URL) : 지정한 URL로 이동한다.
그림.
requestex.html --> request_send.jsp --> sendRedirect() --> pass.jsp
--> ng.jsp
==========================================================================
액션태그란?
JSP페이지 내에서 어떤 동작을 하도록 지시하는 태그. (페이지 이동, 페이지 include등등..)
forward, include, param태그
forward : 현재의 페이지에서 다른 특정페이지로 전환할 때 사용한다.
(ex. <jsp:forward page="sub.jsp" />
include : 현재 페이지에 다른 페이지를 삽입할 때 사용한다.
(ex. <jsp:include page="include02.jsp" flush="true" />
param : forward 및 include 태그에 데이터 전달을 목적으로 사용되는 태그이다. 이름과 값으로 이루어져 있다.
(ex. <jsp:forward page="forward_param.jsp">
<jsp:param name="id" value="abcdef" />
<jsp:param name="pw" value="1234" />
</jsp:forward>
==============================================================================
쿠키란
- 웹브라우저에서 서버로 어떤 데이터를 요청하면, 서버측에서 알맞은 로직을 수행한 후 데이터를 웹브라우저에
응답한다. 그리고 서버는 웹브라우저와의 관계를 종료한다.
- 웹브라우저에 응답 후 관계를 끊는 것은 http프로토콜의 특징이다.
- 연결이 끊겼을 때 어떤 정보를 지속적으로 유지하기 위한 수단으로 쿠키라는 방식을 사용한다.
- 쿠키는 서버에서 생성하여, 서버가 아닌 클라이언트측에 특정 정보를 저장한다.
- 서버에 요청 할 때 마다 쿠키의 속성값을 참조 또는 변경 할 수 있다.
- 쿠키는 4kb로 용량이 제한적이며, 300개까지 데이터 정보를 가질 수 있다.
쿠키 문법
- 쿠키는 서버에서 생성되고, 클라이언트측에 전송되어 저장된다고 한다.
그림.
쿠키 생성(쿠키 클래스를 이용한다.) --> 속성 설정(setter를 이용한다.) --> response객체에 쿠키 탑재(response.addCookie()를 이용한다.)
쿠키 관련 메소드
- setMaxAge() : 쿠키 유효기간을 설정한다.
- setpath() : 쿠키사용의 유효 디렉토리를 설정한다.
- setValue() : 쿠키의 값을 설정한다.
- setVersion() : 쿠키 버전을 설정한다.
- getMagAge() : 쿠키 유효기간 정보를 얻는다.
- getName() : 쿠키 이름을 얻는다.
- getPath() : 쿠키사용의 유효 디렉토리 정보를 얻는다.
- getValue() : 쿠키의 값을 얻는다.
- getVersion() : 쿠키 버전을 얻는다.
=================================================================================
세션이란
- 서버와의 관계를 유지하기 위한 수단
- 쿠키와 달리 클라이언트의 특정 위치에 저장되는 것이 아니라, 서버상에 객체로 존재한다.
- 세션은 서버에서만 접근이 가능하여 보안이 좋고, 저장할 수 있는 데이터에 한계가 없다.
세션 문법
- 세션은 클라이언트의 요청이 발생하면 자동생성된다.
- session이라는 내부 객체를 지원하여 세션의 속성을 설정 할 수 있다.
그림.
클라이언트 요청(웹브라우저) --> session 자동 생성 --> session속성 설정(session 내부 객체의 메소드 이용)
세션 관련 메소드
- setAttribute() : 세션에 데이터를 저장한다.
- getAttribute() : 세션에서 데이터를 얻는다.(반환값은 object이다)
- getAttributeNames() : 세션에 저장되어 있는 모든 데이터의 이름(유니크한 키값)을 얻는다.
- getId() : 자동 생성된 세션의 유니크한 값을 얻는다.
- isNew() : 세션이 최초 생성되었는지, 이전에 생성된 세션인지를 구분한다.
- getMaxInactiveInterval() : 세션의 유효시간을 얻는다. 가장 최근 요청시점을 기준으로 카운트 된다.
- removeAttribute() : 세션에서 특정 데이터 제거한다.
- Invalidate() : 세션의 모든 데이터를 삭제한다.
'Programing > JSP' 카테고리의 다른 글
JSP_02 (0) | 2022.04.21 |
---|---|
JSP_01 (0) | 2022.04.21 |