jsp

jsp 필수 디렉티브,스크립트릿,기본객체-1

기발개발 2021. 10. 5. 21:01

디렉티브는 page, include, taglib가 있다.  include와 taglib는 나중에 다루도록 한다.

 

page 디렉티브

  • jsp 페이지에 대한 설정 정보를 지정할 때 사용한다.
  • jsp 페이지가 어떤 문서를 생성하는지, 어떤 자바 클래스를 사용하는지,
    세션 참여여부,출력 버퍼의 존재 여부와 같은 실행에 필요한 정보를 입력한다.
속성 설명 기본값
contentType  JSP페이지가  생성할  문서의  타입을  지정. 생성할  응답  문서의  MIME  타입을  입력한다. “text/html”,  “text/xml”,  
“text/plain”  등.
text/html
import JSP  페이지에서  사용할  자바  클래스를  지정.  
trimDirectiveWhitespace 출력  결과에서  템플릿  텍스트의  공백  문자를  제거할지의 여부를  지정한다. false
pageEncoding JSP  페이지  자체의  캐릭터  인코딩을  지정한다  

 

 

 

 

request  기본  객체

  •  JSP  페이지에서  가장  많이  사용되는  기본  객체로서  웹  브라우저의  요청과  관련이  있다.
  •  클라이언트가  전송한  요청  정보를  제공하는  것이  바로  request  기본  객체이다.

 

 request  기본  객체가  제공하는  기능

  • 클라이언트(웹  브라우저)와  관련된  정보  읽기  기능
  • 서버와 관련된 정보 읽기 가능
  • 클라이언트가  전송한  요청  파라미터  읽기  기능
  • 클라이언트가  전송한  요청  헤더  읽기  기능
  • 클라이언트가  전송한  쿠키  읽기  기능
  • 속성  처리  기능

 

 

1. 클라이언트 정보 및 서버 정보 읽기

 

 

2. 요청 파라미터 처리

* HTML 폼과 요청 파라미터

* 요청 파라미터 관련 메소드

 

 

 

 

 

 

 

3. 요청 헤더 정보의 처리

메소드  리턴 타입  설명 
 getHeader ( String name)   String  지정한 이름의 헤더 값을 구한다. 
 getHeaders( String name)   java.util.Enumeration  지정한 이름의 헤더 목록을 구한다. 
 getHeaderNames()  java.util.Enumeration  모든 헤더의 이름을 구한다. 
getIntHeader(String name )  int  지정한 헤더의 값을 정수 값으로 읽어온다. 
getDateHeader(String name)  long  지정한 헤더의 값을 시간 값으로 읽어온다.
이때 시간은 1970년 1월 1일 이후로 흘러간 1/1000초 단위의 값을 가진다. 

 

 

 

4.쿠키 및 속성정보 

쿠키와 속성에 관한 내용은 해당 글에서 다룰 예정

 

 

 

 

 

 

 

response 기본 객체

1.웹 브라우저에 헤더 정보 전송하기

request기본 객체는 요청 정보에서 헤더를 읽어오는 기능을 제공하는데, 

response 기본 객체는 반대로 응답 정보에 헤더를 추가하는 기능을 제공.

 

 

 

 

2.캐시 제어를 위한 응답 헤더 입력

새로운 DB를 추가했는데도 웹 브라우저가 출력하지 않는 이유는,

브라우저가 서버가 생성한 결과를 출력하지 않고 캐시에 저장된 데이터를 출력하기 때문이다.

내용이 자주 바뀌는 사이트는 웹 브라우저  캐시가 적용되면

사용자는 변경된 내용을 확인할 수 없게 된다.

이런때에 응답 헤더를 직접 설정해야 한다. 

  응답 헤더  설명 
 Cache-Control  Http 1.1 버전에서 지원하는 헤더. 이 헤더의 값을 "no-cache"로 지정하면 웹 브라우저는 응답 결과를 캐시하지 않는다.
 "no-cache"로 설정하더라도 응답 내용을 캐시 저장소에 보관할 수 있다. 예를 들면, "no-cache"를 설정하더라도, 웹 브라 우저에 따라 뒤로가기 버튼을 클릭하면 캐시 저장소에 보관된 응답 내용을 사용하기도 한다. 응답 결과가 캐시 저장소 자 체에 보관되지 않도록 하려면, 이 헤더에 "no-cache"를 추가한다.
 pragma   HTTP 1.0 버전에서 지원하는 헤더. 이 헤더의 값을 "no-cache"로 지정하면 웹 브라우저는 응답 결과를 캐시에 저장하지 않는다. 
  Expires  HTTP 1.0 버전에서 지원하는 헤더. 응답 결과의 만료일을 지정한다. 만료일을 현재 시간보다 이전으로 설정함으로써 캐시에 보관되지 않도록 할 수 있다.  

 

 

<%
response.setHeader(“Pragma”,   “no-cache”); 

response.setHeader(“Cache-Control”,   “no-cache”); //  일부  파이어폭스  버그  관련
response.setHeader(“Cache-Control”,   “no-store”); response.setDateHeader(“Expires”,   1L);
%>

 

 

 

 

3. redirect기능

https://brilliantdevelop.tistory.com/32의 Http 요청과 응답에서 

 

브라우저는 요청하고(Http Request) 서버는 응답한다(Http Response). 

응답을 받은 브라우저는 서버로부터 온 응답에 따라 화면을 보여주는 게 기본이다.

하지만 이 응답에 redirect를 추가하면 다음과 같이 동작한다.

 

 

       

 

브라우저는 첫번째 요청을 하고,   서버는 첫번째 요청에 대한  응답에 redirect를 추가하면 

이를 받은 브라우저는 두번째 요청을 하고,   서버는 두번째 요청에 대한 응답을 한다.

그리고 브라우저는 두번째 응답에 대한 화면을 보여주게 된다.

 

 

즉 서버의 첫번째 응답은

'브라우저야, 새 URL로 다시 요청해' 라고 요구하고,

브라우저는 새 URL로 두번째 요청을 하는것이다.

<%

response.sendRedirect("이동할페이지");

%>

 

 

 

 

 

 

 

※ request,response 를 올바르게 이해하기 위해선 HTTP패킷이라는 걸 알아야한다.

https://blog.cordelia273.space/11  를 참고하자.    

 

request든 response든 header에는 많은 정보가 담겨있다. 

https://gmlwjd9405.github.io/2019/01/28/http-header-types.html를 참고하자.

 

패킷이 무슨역할을 하는지 그림으로 쉽게이해하려면

https://hyeonyeee.tistory.com/54를 참고하자