2017 - 09 - 20 (수)
기본사항 정리
1 . 디렉티브
디렉티브는 JSP에 대한 설정정보를 저장할 때 사용된다.
<%@ 디렉티브이름 속성:값; 속성:값%>
디렉티브 선언은 위와같은 형식을 가지며, 현재 JSP가 제공하고 있는 디렉티브는 page, taglib, include가 있다.
- page : JSP 페이지에 대한 정보 지정, 문서타입, 출력버퍼의 크기 지
- taglib : JSP페이지에서 사용할 태그 라이브러리를 지정한다.
- include : JSP 페이지의 특정 영역에 다른 문서를 포함시킨다.
<%@ page contentType:"text/html"; charset="UTF-8"%>
<%@ page import = "java.util.*" %>
<%@ page pageEncoding = "UTF-8" %>
<%@ page buffer = "4kb" %>
<%@ page buffer = "none" %>
<%@ page buffer = "1kb" autoflush: "false" %> //autoflush가 true일 경우에는 JSP 페이지 가 생성하는 데이터 크기가 버퍼보다 커지면 출력한다.
위는 page 디렉티브의 몇몇 속성을 사용한 예이다. JSP에서 문서의 내용을 동적으로 생성하기 위해 사용되는 것이 스크립트 요소이다. 이 스크립트 요소를 사용하여 DB에 정보를 저장할 수 있다. 자바가 제공하는 다양한 기능을 사용할 수 있다. 1부터 10까지의 합은 <%=sum %> 입니다. 3 * 4는 <%=multiply(3,4)%> 입니다. 위 코드의 for문 부분의 블록이 스크립트릿에 해당하고 p 태그 안에있는 <%=sum %> 부분이 표현식에 해당한다. 두번째 메소드를 선언한 블록을 선언부라고 한다. 기본객체는 JSP 상에서 따로 객체를 선언하지 않아도 기본적으로 사용할 수 있는 객체이다.
- request
위의 JSP문장은 클라이언트와 서버의 정보를 보여주는 request의 메소드를 사용한것이다. getParameter()메소드는 요청할때 받은 단일 값이다. 회원가입에 비유하자면 아이디, 주민등록번호 같은 값들을 각각 받을때 쓴다. getParameterValue()메소드의 경우 예를들어 어떤 사람이 회원가입을 할 떄 자격증 항목의 경우 배열로 받을 필요가 있다. 이 때 사용하면 될 것 같다. getParameterName()은 "속성 : 값"으로 되어있는 오브젝트가 있다면 속성을 받아오는 메소드이다. getParameterMap()은 "속성 : 값" 을 Map형식으로 받는다. -response 기본객체
addDateHeader(String name, long date) : 헤더에 date를 추가한다. redirect : response 객체가 제공하는 메서드로 두번의 요청을 함. (전날 포스팅한 내용을 참조)
- import : JSP페이지에서 사용할 클래스 임포트
- session : JSP 페이지가 세션을 사용을 사용하는지의 여부를 알기위함. "true"일 경우에은 세션을 사용하고 "false"일 경우에는 세션을 사용하지 않는다.
- buffer : JSP 페이지의 출력 버퍼 크기를 지정한다. "NONE"일 경우 출력 버퍼를 사용하지 않으며 Default 값은 8kb이다.(none으로 설정하면
- autoFlush : 출력 버퍼가 가득 찼을 때 자동으로 버퍼에 있는 데이터를 출력 스트림에 보내고 비울지의 여부를 나타낸다.
- info : JSP 페이지에 대한 설명을 입력한다.
- pageEncoding : JSP 페이지 소스 코드의 캐릭터 인코딩을 지정한다.
2 . 스크립트
스크립트의 요소는 3가지로 나뉠 수 있다.
1) 표현식 : 값을 출력
2) 스크립트릿 : 자바 코드를 실행한다
3) 선언부 : 자바 메서드를 만든다.
<%
sum=0;
for(int i =0; i<10; i ++){
sum+=i;
}
%>
---------------------------------------------위는 스크립트릿 아래는 선언부
<%
public int multiply(int a, int b){
int c = a * b;
return c;
}
%>
3 . 기본객체
- response
- session
- out
- exception
- request 기본객체
request 기본 객체는 웹 브라우저에 웹 사이트의 주소를 입력하면, 웹 브라우저는 해당 웹 서버에 연결한 후 요청 정보를 전송하는데, 이 요청 정보를 제공하는 것이 바로 request 기본 객체이다.
//header 정보 메소드
클라이언트 IP = <%= request.getRemoteAddr() %>
요청정보길이 = <%= request.getContentLength() %>
요청정보 인코딩 = <%= request.getCharacterEncoding() %>
요청정보 컨텐츠타입 = <%= request.getContentType() %>
요청정보 프로토콜 = <%= request.getProtocol() %>
요청정보 방식 = <%= request.getMethod() %>
요청 URL= <%= request.getRequestURI() %>
컨텍스트 경로 = <%= request.getContextPath() %>
서버이름 = <%= request.getServerName() %>
서버포트 = <%= request.getServerPort() %>
//getParameter()메소드
<%=request.getParameter("name")%>
//getParameterValue()메소드
<$
String[] value = request.getParameterValue()
if(value!=null){
for(int i= 0; i <values.length(); i++){
%> <%=value[i]%>
<%
}
}
//getParameterName()메소드
<%
Enumeration paramEnum = request.getParameterNames();
while(paramEnum.hasMoreElement())
{String name = (String)paramEnum.nextElement();}
%>
<%=name%>
//getParameterMap()메소드
<%
Map parameterMap = request.getParameterMap();
String[] nameParam = (String[])parameterMap.get("name");
if(nameParam!=null){
%>
name = <%= nameParam[0]%>
<%
}
%>
request와 반대의 기능을 수행한다. 브라우저에 보내는 response메시지에 대한 정보를 담는다.
response 객체가 제공하는 헤더 추가 메서드
addHeader(String name, String value) : name 헤더에 value 값으로 추가한다.
addintHeader(String name, int value) : name 헤더에 정수 값 value를 추가한다.
containsHeader(String name) : 이름이 name인 헤더를 포함하고 있을 경우 true를, 그렇지 않을 경우 false를 반환한다.
Cache-control : HTTP 1.1버전에서 지원하며 헤더의 값을 no-cache로 지정하면 웹 브라우저는 응답 결과를 캐시하지 않는다. no-cache로 설정하더라도 응답내용을 보관할 수 있다. 응답결과가 캐시에 저장되지 않기 위해서는 헤더에 no-store를 추가해야한다.
<%
response.sendRedirect("이동할 페이지"); //
%>