JSP&Servlet

[JSP]5. Scope

CodeJaram 2023. 6. 26. 08:13

1. Scope: 웹 어플리케이션의 영역(내장 객체 영역, 객체의 유효기간)

→데이터 전송범위 , 데이터 저장 유효기간과 관련

 

 

 

 

2. 내장객체

  • 객체 생성: .setAttribute(name, value), 이름에 값 설정
  • 객체 조회: .getAttribute(name), 설정한 값 조회
  • 객체 삭제: .removeAttribute(name), 설정한 값 제거

 

1)Page: 한 페이지에서 객체 생성, 조회, 다른 페이지에서는 객체 조회 안 됨

-1번 페이지에서 객체를 생성하고 2번에서 1번 객체를 조회하면 null값

 

2)Request: 하나의 요청에 대해 데이터 유지

-1번 페이지의 request와 2번 페이지의 request는 서로 다른 request객체

-2번 페이지 실행 시 1번 페이지의 데이터 유지x

 

 

3)Session: 하나의 브라우저가 실행되는 동안 데이터 유지

-1번 페이지에서 객체 생성 후 2번 페이지에서 객체를 조회해도 데이터 유지

 

 

 

-다른 브라우저에서 실행했을 경우 데이터 유지x

 

4)Application: 서버가 유지되는 한 데이터 유지, 서버를 restart하면 데이터 유지x

 

 

 

-다른 브라우저에서도 데이터 유지

3. Forward vs sendRedirect 방식

  • <Forward> 요청 1번, 응답 1번

 

  • <sendRedirect>요청 2번, 응답 2번

 

구분 Forword 방식(request 방식) SendRedirect 방식(querystring 방식)
요청&응답 횟수 1번(요청한내용을 그대로 다른 페이지로 이동하여 그 페이지에서 응답) 2번(1번 요청 페이지 이동 응답 2번 이동할 페이지 다시 요청→ 페이지 응답)
데이터 유지 같은 요청, 같은 request 객체이므로 데이터 유지 가능 서로 다른 요청, 서로 다른 request 객체이므로 데이터 유지 불가
데이터 전송형태 Oject Text만 가능
실행속도 상대적으로 빠름(네트워크 트래픽 발생x) 상대적으로 느림(네트워크 트래픽 발생)
페이지 이동범위 같은 서버의 페이지만 이동 가능
(같은 request 객체)
다른 서버의 페이지 이동가능
(다른 request 객체)

 

4. Forward

-실행과정: 1번 페이지에서 요청한 내용을 2번 페이지에 전송하여 2번 페이지가 client에 응답

-요청이 들어오면 해당 요청을 그대로 가지고 이동할 페이지로 이동

 

  • 데이터 유지 여부: 요청 1번, 같은 request 객체이기 때문에 데이터 유지 가능

 

 

  • 데이터 전송형태: request 객체에 저장하기 때문에 object 형태의 데이터 전송 가능
  • 실행속도: 요청이 1번이기 때문에 네트워크 트래픽이 발생하지 않음 상대적으로 실행속도 빠름
  • 페이지 이동범위: request 객체가 그대로 이동해야 해서 같은 서버의 페이지로만 이동 가능

 

    -sendRedirect방식: 주소 자체로 이동하기 때문에 네이버로 이동가능

    -forward 방식; request 객체에 네이버가 저장되지 않기 때문에 네이버 이동 불가

 

  • 1번 페이지 실행: 객체가 2번 페이지로 이동하며 1번 페이지의 객체 값이 조회됨

-실행페이지:1번

-보이는 페이지:2번

 

 

  • 2번 페이지 실행: 2번 페이지에 request객체에 값이 없으므로 null값

 

5. sendRedirect(쿼리스트링 방식):

-실행과정: 1번 요청 페이지 이동경로 응답 2번 이동할 페이지 다시 요청

-데이터 유지 여부: 요청 2번, 1번과 2번 요청의 request 객체는 서로 다름 데이터 유지 불가

 

-데이터 전송형태: 쿼리스트링 방식으로 데이터 전송할 수 있음→ text 형태만 가능(객체x)

-실행속도: 요청이 2번이기 때문에 네트워크 트래픽 발생할 수 있음 상대적으로 실행 속도 느림

-페이지 이동범위: 이동할 페이지를 새롭게 요청하기 때문에 다른 서버의 페이지로 이동 가능

 

 

[로그인]

1)request(forward) 방식: loginProgram에 있는 request객체에 담겨 있는 id와 pw가

loginSuccess로 넘어와서 전송된 값이 출력됨

 

예)request.setAttribute("name", name);

moveURL="./loginSuccess.jsp" ;

 

 

 

 

→쿼리 스트링은 URL 주소에 name을 얹어서 전송하고 forward 방식은 request

영역에 name 값이 저장되기 때문에 쿼리 스트링 값이 조회되지 않음

 

2)쿼리 스트링 방식: loginProgram에서URL 주소에 name을 얹어서 전송함

예)moveURL="./loginSuccess.jsp?name="+URLEncoder.encode(name, "UTF-8");

response.sendRedirect(moveURL);

 

-입력한 주소값으로 이동하므로 웹페이지 주소는 요청한 주소값이 됨

-loginSuccess의 request객체는 loginProgram의 request객체와 다른

새로운 객체이기 때문에 id와 pw는 전송되지 않음

 

 

6. EL 표현식

  -표현식<%=%> 업그레이드 버전:  ${변수명}

  -JSP 내장객체에 저장된 값들을 출력할 때 사용

  -연산도 가능

  -JSTL과 연동 가능

 

 

'JSP&Servlet' 카테고리의 다른 글

[JSP]6. Maven&Mybatis  (0) 2023.06.28
[JSP]6. Maven&Mybatis  (0) 2023.06.27
[JSP]4. cookie&session  (0) 2023.06.23
[JSP]3. MVC 패턴으로 JDBC 만들기  (0) 2023.06.22
[JSP]2. 내장객체  (0) 2023.06.21