JSP

JSP 페이지 구성

mukom 2022. 8. 12. 21:56

1. JSP 페이지 구성

 

  1-1. 설정 부분

         이 부분에는 해당 페이지가 생성하는 문서의 타입이 무엇인지, 어떠한 커스텀 태그를 사용할 것인지,

         어떠한 자바 클래스를 사용할 것인지 등에 대한 JSP 페이지 정보를 기입한다.

         

         ✍️ page directive

         '<%@ 디렉티브이름 속성1="값1" 속성2="값2" ... %>'로 표현되며 페이지에 대한 설정 정보를 담고 있다.

         그 중에서도 page directive는 가장 많이 쓰는 디렉티브로 JSP 생성하는 문서의 타입, 출력 버퍼의 크기 등을 나타낼 수 있다.

         주요한 속성으로는 contentType(MIME 타입과 캐릭터 인코딩 지정), import(페이지에서 사용될 자바 클래스 지정) 등이 있다.

 

  1-2. 응답 생성 부분

         여기에는 JSP가 동적으로 사용될 수 있도록 하는 스크립트 등이 포함된다.

   

        ✍️ 스크립트 요소

        스크립트 요소는 스크립트릿(scriplet), 표현식, 선언식 세 가지로 나누어 진다.

        스크립트릿은 자바 코드를 실행할 때 사용하는 코드 블록으로 '<% %>' 블록 안에 작성된다.

        표현식은 원하는 값을 출력하고자 할 때 활용하는 것으로 '<%= 값 %>' 구문으로 사용한다.

        값 위치에는 변수, 문자열, 숫자, 선언부 호출 등 다양한 값을 넣을 수 있다.

        선언부는 자바의 메서드와 역할이 동일하고,

        '<%! public 리턴타입 메서드이름(파라미터) {자바 코드; return 값;} %>' 으로 비슷한 모양새를 가지고 있다.

 

2. 기본 객체

 

  2-1. request 기본 객체

         웹 브라우저에서 웹 서버로 요청되는 정보를 말한다. 

         request 기본 객체는 웹 브라우저가 전송한 정보와 서버 정보를 구할 수 있는 메서드와

        전송한 파라미터를 읽기 위한 메서드, 헤더 관련 메서드를 제공하고 있다. 

        

       ✍️ 데이터 전송 방식

       웹 브라우저에서 웹 서버로 데이터를 전송할 때 그 전송 방식을 <form> 태그의 method 속성값 'get / post' 로 지정할 수 있다.

       - GET 방식 : 웹 브라우저에서 URL을 요청할 때 쿼리 문자열이 함께 붙어서 전달 되는 방식이다.  

                            이 요청은 웹 브라우저에 캐시되어 저장되고, URL에 전송되는 특징으로 인하여 길이 제한이 있다. 

       - POST 방식 : 데이터 영역을 이용하여 파라미터를 전송하는 방식으로 길이 제한이 없다.

                            또한 요청이 웹 브라우저에 남지 않으며, 파라미터 정보가 URL에 드러나지 않기 때문에 

                            GET 방식에 비하여 보안에 더 적합하다. 

 

       ✍️파라미터 인코딩과 디코딩

       웹 브라우저는 파라미터를 웹 서버에 보낼 때 설정된 charset 타입에 맞춰 값을 인코딩한다. 

       이렇게 인코딩 되어 전송된 파라미터는 다시 웹 브라우저에서 사용한 charset에 맞춰 디코딩 시켜준다.

       이때 웹 브라우저에서 사용되는 charset과 웹 서버에서 사용되는 charset이 동일해야 정상적인 파라미터 값을 볼 수 있다.

 

 

  2-2. response 기본 객체

         이 객체는 요청에 따른 응답 결과를 전송하는 데에 사용한다.
         response 기본 객체는 헤더에 값을 추가하거나 새로 지정하는 메서드를 사용할 수 있으며, 

         redirect를 통해 페이지 이동을 웹 브라우저에게 요구할 수 있다. 

 

        ✍️ 웹 브라우저 캐시 제어

        웹 브라우저가 WAS를 통해 실행 요청을 한 뒤 한 번 더 똑같은 행위를 반복하는 경우,

        같은 데이터를 불필요하게 두 번 요청하게 된다. 

        이러한 경우를 대비하여 캐시에 첫 번째 요청을 저장하여 두 번째 요청에는 WAS를 통하지 않고 바로 응답할 수 있다. 

        하지만 데이터가 자주 변하는 페이지의 경우 캐시에 저장된 데이터에 비하여 차이가 발생한다. 

        그래서 실행 결과를 캐시에 저장할 것인지에 대해 설정할 수 있도록 하는 것이다.

 

       ✍️ Redirect 

       웹 브라우저가 요청을 하면 다른 페이지로 이동하라는 요구를 말한다.

       웹 브라우저는 이 요구에 의하여 다시 해당 페이지로 이동하고자 요청을 하게 되고 결국 두 번의 요청이 생긴다.

       sendRedirect(String) 메서드에 URL을 입력해서 요구하며, 파라미터를 작성하기도 한다.

       대신 파라미터는 인코딩 한 값을 넣어줘야 하기 때문에 URIEncoder.encode() 메서드를 활용할 수 있다.