'JSP/Jsp 내장객체'에 해당되는 글 6건

  1. 2013.08.16 JSP 내장객체의 스코프
  2. 2013.08.16 HTML 문서에서 인자로 사용
  3. 2013.08.16 EL 개요
  4. 2013.07.29 Session
  5. 2013.07.29 Request
  6. 2013.07.29 JSP 개요
2013. 8. 16. 09:54

JSP 페이지의 내부 객체

 : 내부 객체는  JSP 페이지가 사용자의 브라우저에게 요청될 때 자동으로 생성되는 객체로 특정한 자

바 클래스 또는 인터페이스의 형태를 가지고 있다.


기본 객체 (implicit object, 내장 객체)

■ request : 클라이언트의 요청 정보를 담고 있는 객체

⋅스코프  :  request

⋅실제 타입  :  javax.servlet.http.HttpServletRequest 또는  javax.servlet.ServletRequest


■ response : 요청에 대한 응답 정보를 담고 있는 객체

⋅스코프  :  page

⋅실제 타입  :  javax.servlet.http.HttpServletResponse 또는  javax.servlet.ServletResponse


■ out : 페이지 내용을 담고 있는 출력 스트림 객체

⋅스코프  :  page

⋅실제 타입  :  javax.servlet.jsp.JspWriter


■ pageContext : JSP 페이지 실행에 필요한 Context 정보를 담고 있는 객체

⋅스코프  :  page

⋅실제 타입  :  javax.servlet.jsp.PageContext


■ session : 세션 정보를 담고 있는 객체

⋅스코프  :  session

⋅실제 타입  :  javax.servlet.http.HttpSection


■ application : Context의 모든 페이지가 공유할 데이터를 담고 있는 객체

⋅스코프  :  application

⋅실제 타입  :  javax.servlet.ServletContext


■ config : JSP 페이지의 서블릿 설정 데이터 초기화 정보 객체 

⋅스코프  :  page

⋅실제 타입  :  javax.servlet.ServletConfig


■ page : JSP 페이지를 구현한 자바 클래스 객체

⋅스코프  :  page

⋅실제 타입  :  java.lang.Object


■ exception : JSP 페이지의 서블릿 실행 시 처리하지 못한 예외 객체

⋅스코프  :  page

⋅실제 타입  :  java.lang.Throwable




Scope, 스코프

 : 웹 어플리케이션은  page,  request,  session,  application 이라는  4개의 영역을 가지고 있으며 기본

객체의 영역은 객체의 유효기간이라고도 불리며, 객체를 누구와 공유할 것인가를 나타낸다.

■ page 영역

 한 번의 웹브라우저(클라이언트)의 요청에 대해 하나의  JSP 페이지가 호출되며 웹브라우저의 

 요청이 들어오면 이때 단 한 개의 페이지만 대응 된다. 

 생성된 객체는 PageContext 에 저장된다.

 쉽게 말해 service()를 벗어나면 죽는다. 

 servlet → jsp 으앙 주금 //void service()


■ request 영역

 한 번의 웹브라우저(클라이언트)의 요청에 대해 같은 요청을 공유하는 페이지가 대응되며 

 웹브라우저가 한 번의 요청에 단지 한 개의 페이지만 요청될 수 있고, 같은  request 영역이면 

 두개의 페이지가 같은 요청을 공유 한다.  include 액션 태그,  forward 액션 태그를 사용 시 공유가능

 생성된 객체는 HttpServletRequest 에 저장


■ session 영역

 하나의 웹브라우저 당 1 개의 session 객체가 생성된다. 

 같은 웹브라우저 내에서는 요청되는 페이지 들은 같은 객체를 공유한다.

 생성된 객체는 HttpSession 에 저장된다.

 동일한 클라이언트만 사용가능


■ application 영역

 하나의 웹 어플리케이션 당  1개의  application 객체가 생성된다. 같은 웹 어플리케이션에 

 요청되는 페이지들은 같은 객체를 공유한다.

 생성된 객체는 실질적으로는  ServletContext 에 저장된다.




내부 객체의 속성

  : request,  session,  application,  pageContext 내부 객체는 임의 속성(attribute) 값을 저장하고 읽을  

수 있는 다음의 메소드를 제공 한다.

■ 메소드

⋅void setAttribute(String  key, Object  value)

  주어진  key속성의 값을  value로 지정한다.


⋅Enumeration getAttributeNames()

  모든 속성의 이름을 구한다.


⋅Object getAttribute(String  key)

  주어진  key속성의 값을 얻어낸다.


⋅void removeAttribute(String  key)

  주어진  key속성의 값을 제거한다.

'JSP > Jsp 내장객체' 카테고리의 다른 글

HTML 문서에서 인자로 사용  (0) 2013.08.16
EL 개요  (0) 2013.08.16
Session  (0) 2013.07.29
Request  (0) 2013.07.29
JSP 개요  (0) 2013.07.29
Posted by 1+1은?
2013. 8. 16. 09:51

● 3항 연산자 활용 태그 속성바꾸기

 

1
2
3
4
5
<select id="numPerPage" class="selectField" onchange="selectList();">
    <option value="10" ${numperpage="="10"" ?="" "selected="selected" ":""}="">리스트10</option>
    <option value="20" ${numperpage="="20"" ?="" "selected="selected" ":""}="">리스트20</option>
    <option value="30" ${numperpage="="30"" ?="" "selected="selected" ":""}="">리스트30</option>
</select>
  서블릿에서 넘긴 parameter에 따라 다음처럼 html 소스가 바뀐다.
1
2
3
4
5
<select id="numPerPage" class="selectField" onchange="selectList();">
    <option value="10">리스트10</option>
    <option value="20">리스트20</option>
    <option value="30" selected="selected">리스트30</option>
</select>



● 자바스크립트에서 문자열

 

1
2
3
4
5
6
7
8
9
10
<script type="text/javascript">
    function ineedId() {
        if(!"${sessionScope.session.userId}"//따옴표가 없으면 if(!)
        {
            alert("로그인이 필요한 서비스입니다.");
            location.href="<%=cp%>/member/login.action";
            return;
        }
    }
</script>
1
2
3
4
5
6
7
<script type="text/javascript">
    function hi() {
        //var params = "content=" + content + "&boardNum=" + ${dto.boardNum};
        var params = "content=" + content + "&boardNum=${dto.boardNum}";
        //위 둘은 같다. 문자열 내부에서도 EL은 상수로 치환됨
    }
</script>



'JSP > Jsp 내장객체' 카테고리의 다른 글

JSP 내장객체의 스코프  (0) 2013.08.16
EL 개요  (0) 2013.08.16
Session  (0) 2013.07.29
Request  (0) 2013.07.29
JSP 개요  (0) 2013.07.29
Posted by 1+1은?
2013. 8. 16. 09:43

EL, Expression Language


목차

■ 개요
■ 작성규칙
■ 연산자
■ 내장객체


■ 개요

 EL은 JSTL 1.0 스펙에서 소개되었던 것으로 JSP 2.0부터 공식적으로 포함되었으며,  JSP 페이지에 사용되는 자바코드를 대신해서 액션태그 엘리먼트

(예:<jsp:setProperty>)의 속성에 값을 지정하는  역할을 한다. 


${object}


request 객체에 전달한 vo라는 자바빈즈에 getEmail() 메소드가 존재할 때 JSP의 스크립릿으로


<%Test vo = (Test)request.getAttribute("vo");%>

<%= vo.getEmail()%>


라 작성했다면 EL은 다음과 같다 :


${vo.address};


졸라 편하다.



■ 작성규칙

EL은 숫자, 문자열, boolean 값과 null 같은 상수 값(리터럴) 들도 포함할 수 있다.⋅

EL은 $ 와 표현식 그리고 브레이스 { }를 사용해서 표현한다.


- 표현 언어(EL)는 항상 『${』 로 시작해서 『}』로 끝난다.

- JSP 스크립트 내부에서 쓸 수 없다. 즉, <%  %>, <%!  %>, <%=  %> 안에는 사용할 수 없다.

- 표현식 안에 연산식도 작성이 가능 하다. 

   ${num  +  1}

- 프로퍼티 접근 연산자 닷(dot(.)) 은 표현 언어(EL)에게 자바 빈이나 컬렉션 객체에서 다음에 오는 이름과 같은 프로퍼티를 찾게 한다.

   ${article['num']  +  1}  or  ${article["num"]  +  1}

- 브라켓 연산자(bracket([ ]) operator) 를 사용해도 된다. 닷(dot(.)) 과 같다. 즉, 브라켓 연산자의 배열 형태로 객체의 변수에 접근한다.



■ 연산자 

.

 빈의 프로퍼티나  맵(Map)의  엔트리 접근 

[]

 배열이나  리스트(List)  엘리먼트 접근 

()

 괄호. 표현식의  연산 순서를  바꿔서 연산하게 할  때

a ? b : c

 EL의 삼항연산자. a가 true면 b, false면 c 

+    -

*   /

%   !

==   !=

<   >

<=   >=

&&   ||

 자바와 같다.

empty

 빈 변수값 체크. null 혹은 빈문자열, 빈배열, 엔트리가 없는 맵이나 컬렉션이면 true 

func(args)

 함수 호출 



■ EL에서 제공하는 내장객체 

● pageScope, requestScope, sessionScope, applicationScope
 : 각 영역 객체들에 대한 컬렉션
${scope.데이터_명}
예를 들어 session 객체로 전달받은 email에 접근할 때, 구문이 다음과 같다면 :
session.setAttribute("email", "noname@site.com"); 

전달받은 데이터에 접근하려면 :
${sessionScope.email} 라고 작성한다.

scope를 명시하지 않으면 requestScope에서 찾는다.

● param
 : 모든 request  파라미터들을  문자열로 가진 컬렉션(request.getParameter() 메소드) 
${param.데이터_명} 
혹은 ${param["데이터_명"]}
param은 html의 form을 통해 입력된 데이터를 가져올 때 사용한다.  

<form action="test2.jsp" method="post">
<input type="text" name="num"><br/>
<input type="submit" value="보내기">

위 폼에서 넘어온 num을 찾으려면 :
${param.num}

● paramValues 
 : 모든 request 파라미터들을 파라미터당 문자열 배열로 가진 컬렉션 
${paramValues.데이터_명[0]},  ${paramValues["데이터_명"][0]})
form을 이용한 입력 중 checkbox, select 등 같은 name 애트리뷰트를 가진 데이터를 가져올 때는 paramValues를 사용한다. 
사용 형식은 param과 비슷하나 여러 개의 입력 값이 있으므로 배열 형태가 된다

<form action="test2.jsp" method="post">
<input type="checkbox" value="first_value" name="ck"/>
<input type="checkbox" value="first_value" name="ck"/>
<input type="submit" value="보내기">

위 폼에서 넘어온 첫번째 값을 찾으려면 :
${paramValues.ck[0]}

배열 순서는 form 태그에 작성 된 순서를 따른다.

● cookie
 : cookie는 웹 브라우저가 웹 서버로 보낸 쿠키를 가져올 때 사용한다.
${cookie.쿠키_명}  
혹은 ${cookie["쿠키_명"]}
주의 할 것은 반환되는 타입이 쿠키의 값이 아니라 쿠키 객체라는 점이다.  
따라서 쿠키의 값을 출력하기 위해서는 :

${cookie.쿠키_명.value  }  
혹은  ${cookie["쿠키_명"]["value"]} 
라고 해주어야 한다. 
쿠키의 값 대신 쿠키의 다른 정보를 얻기 위해 쿠키명 뒤에  .domain  .path  .maxAge 등을 사용할 수도 있다.

● initParam
  : 모든 어플리케이션의 초기화 파라미터의 이름의 컬렉션
 ${initParam.파라미터_명} 
혹은 ${initParam["파라미터_명"]}
initParam은 웹 애플리케이션의 초기화 파라미터를 가져오는데 사용한다. 
이 값을 얻기 위해서는 해당 이름의 초기화 파라미터가 web.xml 에 등록되어 있어야 한다.

● pageContext
  : 현재 페이지를 위한  javax.servlet.jsp.PageContext.  JSP 페이지의 환경 정보
${pageContext.메서드_명}
혹은 ${pageContext.메서드_명}
⋅pageContext는 java.servlet.jsp.PageContext 클래스 타입의 객체로, 이 클래스에 속하는 get 메소드들의 호출에 사용된다. 
그 중에서도 파라미터가 사용되지 않는 메소드들만 실행할 수 있다. 사용 형식은  pageContext 뒤에 마침표나 대괄호를 붙혀 사용하나, 메소드 명에서 get을 버리고 난 후, 가장 첫 문자를 소문자로 고쳐 사용한다.

PageContext 클래스의  getRequest 메소드를 사용한다고 하면 :

${pageContext.request} 
혹은 ${pageContext["request"]} 
의 형식이 된다. 각 메소드의 리턴 값은 각각의 객체가 돌아오므로 필요한 필드를 불러와 출력할 수 있다.

⋅request.getContextPath() 가져오기  :  ${pageContext.request.contextPath}
⋅URI : ${pageContext.request.requestURI}

● header, headerValues
 : HTTP 요청 헤더들을 문자열이나 문자열배열로 가진 컬렉션 
 ${header["헤더_명"]}
자바의 식별자 명명규칙을 따르지 않는 헤더는 반드시 위의 형식으로 가져와야 한다.
HTTP 요청 메시지 안에 같은 이름의  HTTP 헤더가 둘 이상 있는 경우는  headerValues 내장 객체를 사용한다. 사용 형식은 paramValues 의 형식과 같다.


'JSP > Jsp 내장객체' 카테고리의 다른 글

JSP 내장객체의 스코프  (0) 2013.08.16
HTML 문서에서 인자로 사용  (0) 2013.08.16
Session  (0) 2013.07.29
Request  (0) 2013.07.29
JSP 개요  (0) 2013.07.29
Posted by 1+1은?
2013. 7. 29. 13:56

session 내부 객체



   session 객체는 클라이언트 용처에 관한 context 정보의 세션과 관련된 정보(데이터)를 저장하고 관리하는 내부 객체로 

   javax.servlet.http.HttpSection 클래스 타입이다.

session 객체는 웹브라우저(클라이언트) 당 1개가 할당되며, 사용자가 로그인후 세션을 설정 일정시간이 지난 경우 다시    사용자가 인증을 요구하거나 쇼핑몰에서 장바구니 기능 구현시, 사용자가 다녀간 페이지 확인 및 웹페잊 트래킹 구현 시 

사용된다.

또한 session 객체를 사용하는데 page지시어의 session 속성 값을 false로 설정하면 에러가 발생한다.

 


* JSP는 session에 직접 접근, 서블릿은 request가 갖고 있다.


서블릿에서 session에 접근

1
2
3
4
5
6
7
8
HttpSession session = req.getSession(); //세션에 클라이언트의 정보를 저장
 
session.setMaxInactiveInterval(60*30); //클라이언트의 요청이 없으면 (60초*30) 후 로그아웃
 
session.setAttribute("userId", dto.getUserId());
session.setAttribute("userName", dto.getUserName());
resp.sendRedirect(cp);
return;


EL에서 서블릿이 전달한 session에 접근

1
2
3
4
5
6
7
8
9
sessionScope.속성명
 
<c:if test="${empty sessionScope.userId}">
   ..로그아웃 상태 시 표시할 태그
</c:if>
 
<c:if test="${not empty sessionScope.userId}">
   ..로그인 상태 시 표시할 태그
</c:if>


로그아웃

1
2
3
4
5
6
7
8
//세션에 저장된 정보를 삭제한다.
session.removeAttribute("userId");
session.removeAttribute("userName");
 
//세션의 모든 정보를 삭제하고 세션을 초기화
session.invalidate();
 
resp.sendRedirect(cp);



■ 주요 메소드

⋅String  getId()

각 접속에 대한 세션 고유  ID 를 문자열 형태로 반환

⋅long  getCreationTime()

세션이 생성된 시간을  January  1  ,1970 GMT 부터  long 형 밀리세컨드 값으로 반환

⋅long  getLastAccessedTime()

웹 브라우저의 요청이 마지막으로 시도된 시간을  long 형 ms 값으로 반환

⋅int  getMaxInactiveInterval()

세션 유지 시간을 초로 반환. 기본 값은  30분으로 지정된다.

⋅void  setMaxInactiveInterval(int  interval)

세션을 유지할 시간을  interval에 설정된 초 값으로 설정

⋅void  invalidate()

현재 세션을 종료. 세션관련 모든 값 삭제

⋅boolean  isNew()

클라이언트 세션  ID를 할당하지 않은 경우  true 값을 리턴 한다.



'JSP > Jsp 내장객체' 카테고리의 다른 글

JSP 내장객체의 스코프  (0) 2013.08.16
HTML 문서에서 인자로 사용  (0) 2013.08.16
EL 개요  (0) 2013.08.16
Request  (0) 2013.07.29
JSP 개요  (0) 2013.07.29
Posted by 1+1은?
2013. 7. 29. 13:50


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
String method = request.getMethod();
//: method 확인(get|post)
//: GET
  
String ip = request.getRemoteAddr();
//: 클라이언트 아이피주소
//: 127.0.0.1
  
String cp = request.getContextPath();
//: ContextPath(문맥경로)
//: /study
  
String url = request.getRequestURL().toString();
//클라이언트가 요청한 전체주소
 
String uri = request.getRequestURI();
//URI : cp부터 나머지 주소
//: /study/0222/test3_ok.jsp
 
String path = request.getScheme() + "://" + request.getServerName()
     + ":" + request.getServerPort() + request.getContextPath();
//path
  
String referer = request.getHeader("Referer");
if(referer==null)
 referer="";
//클라이언트의 이전 주소
 
String lang = request.getHeader("Accept-Language");
//언어정보 : ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4
 
String bw = request.getHeader("User-Agent");
//브라우저, 운영체제정보
//Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
여부 (true/false 값)
       Secure Channel : <%= request.isSecure() %>
 
 □ 요청에 대한 URI, 컨텍스트 경로, 서블릿 경로, GET/POST 등의 메소드
  // User-Agent : 유저 에이전트는 브라우저 명 알기
  // Referer : 래퍼러는 전페이지 주소를 얻으며 전페이지가 없으면 null
 
String method = request.getMethod();
 
StringBuffer url = request.getRequestURL();
String uri = request.getRequestURI();
 
  /*
     // Tomcat 5.5 이후 forward 된 jsp 에서 getRequestURI() 메소드나 getRequestURL()
            //메소드의 값이 이상해진 경우
      
     예를 들어 서블릿 에서
     uri : cp/bbs/list.ation
     jsp 위치(포워딩 jsp) : /WEB-INF/views/bbs/list.jsp 인경우
 
     포워딩된 jsp에서 위 메소드를 사용하면
 
     /cp/WEB-INF/views/bbs/list.jsp
           http://localhost:8080/cp/WEB-INF/views/bbs/list.jsp 로 jsp가 존재하는 경로가 표시된다.
            
     하지만 서블릿에서 위 메소드를 사용하면
 
           /cp/bbs/list.ation
           http://localhost:8080/cp/bbs/list.ation 로 표시된다.
 
           만약 포워딩된 jsp에서 브라우저 주소를 가져오기 위해서는 다음 방법을 이용한다.
 
     String url=request.getAttribute("javax.servlet.forward.request_uri");
 
           - 기타 속성
             javax.servlet.forward.request_uri
             javax.servlet.forward.context_path
             javax.servlet.forward.servlet_path
             javax.servlet.forward.path_info
             javax.servlet.forward.query_string
 
         http://localhost:8080/study/jsp/test.jsp?name="hong" 에서의 출력 결과
            javax.servlet.forward.request_uri -> /study/jsp/test.jsp
            javax.servlet.forward.servlet_path -> /jsp/test.jsp
            javax.servlet.forward.context_path -> /studt
            javax.servlet.forward.path_info -> null
            javax.servlet.forward.query_string -> name="hong"
  */
 
String cp = request.getContextPath();
String path =request.getScheme()
+"://"+request.getServerName()+":"+request.getServerPort()+cp;
 String useBrowser = request.getHeader("User-Agent");
 String fileType = request.getHeader("Accept");
 String referer = request.getHeader("Referer");
 if(referer==null)
  referer="";
 
 
 □ include 된 페이지 uri가져올 경우
    <%= request.getAttribute( "javax.servlet.include.request_uri" ) %>
 
    기타 include 된 페이지 정보 구하기
     
    request.getAttribute("javax.servlet.include.query_string")
    request.getAttribute("javax.servlet.include.path_info")
    request.getAttribute("javax.servlet.include.servlet_path")
    request.getAttribute("javax.servlet.include.context_path")
    request.getAttribute("javax.servlet.include.request_uri")
 
 
 □ 세션 ID에 대한 정보
       Session ID : <%= request.getRequestedSessionId() %>
       Session ID from Cookie : <%= request.isRequestedSessionIdFromCookie() %>
       Session ID from URL : <%= request.isRequestedSessionIdFromURL() %>
       Session ID is still valid : <%= request.isRequestedSessionIdValid() %>
 
 □  Header 정보 보는 방법
       <%
           Enumeration eHeader = request.getHeaderNames();
        
           while(eHeader.hasMoreElements()) {
               String hName = (String)eHeader.nextElement();
               String hValue = request.getHeader(hName);
                
               out.println(hName + " : " + hValue);
           }
       %>
        
 □ Request 객체를 통해서 쿠키 정보 보는 방법
       <%
           Cookie cookies[] = request.getCookies();
        
           for(int i=0 ; i<cookies.length ;="" i++)="" {="" string="" name="cookies[i].getName();" value="cookies[i].getValue();" out.println(name="" +="" "="" :="" value);="" }="" %="">
        
  □ HTML 폼을 통해 넘어온 데이터를 받는 부분
       <%
           Enumeration eParam = request.getParameterNames();
        
           while(eParam.hasMoreElements()) {
               String pName = (String)eParam.nextElement();
               String pValue = request.getParameter(pName);
                
               out.println(pName + " : " + pValue);
           }
       %>
 
 □  attribute를 가져오는 부분
       <%
           Enumeration eAttr = request.getAttributeNames();
        
           while(eAttr.hasMoreElements()) {
               String aName = (String)eAttr.nextElement();
               String aValue = (String)request.getAttribute(aName);
                
               out.println(aName + " : " + aValue);
           }
       %>
 
 
 □  [[request로 넘어오는 데이타들]], form 에서 enctype="multipart/form-data" 인경우 만 사용 가능
    <%
         DataInputStream dis = new DataInputStream(request.getInputStream());
         String str;
         while((str = dis.readLine()) != null){
               out.println(new String(str.getBytes("ISO-8859-1"), "euc-kr")+"<br>");
               // utf-8로 전송된 한글은 깨짐
         }
     %>
 
</cookies.length>

■ request header 정보


□ Accept : 브라우저나 기타 클라이언트가 다룰 수 있는 MIME 형식들을 지정하는 것이다.

 

□ Accept-Charset : 브라우저가 사용할 수 있는 문자셋(ISO-8859-1)을 의미한다.

 

□ Accept-Encoding :  클라이언트가 원하는 인코딩 방식들을 의미한다. 문서를 네트웍 너머로 보내기에 적합한 형태로 

변환하는것 을 의미한다.

 

□ Accept-Language : 클라이언트가 원하는 기본 언어를 의미한다.  

 

□ Authorization : 헤더는 패스워드로 보호된 웹 페이지에 접근하려 하는 클라이언트가 자신의 신원 정보를 보내는 용도로 쓰인다.

 

□ Cache-Control : 프록시 서버에서의 캐시 설정을 의미한다.  

 

□ Connection : 클라이언트가 영속적 HTTP 연결을 처리할 수 있는지의 여부를 뜻한다.

 

□ Content-Length : post만 해당하는 것으로, post 데이터에 담긴 데이터의 크기를 의미한다.

 

□ Content-type : 주로 응답에서 쓰이지만, 클라이언트가 post나 put을 이용해서 어떤 문서를 첨부했다면 클라이언트 요청 안에 

포함되기도 한다.

 

□ Cookie : 서버가 브라우저에게 보냈던 쿠키를 다시 서버로 돌려 보낼 때 쓰인다.

 

□ Expect : 클라이언트가 바라는 서버의 행동이 어떤 것인지를 의미하는 헤더로 별로 쓰이지는 않는다.

 

□ From : HTTP 요청에 대해 책임이 있는 사람의 전자 우편주소이다.

 

□ Host : URL안에 호스트와 포트 번호로 브라우저는 반드시 이 헤더를 포함해야함. 브라우저가 원하는 구체적인 자원을 정확하게 

돌려주기 위한 용도로 쓰임.

 

□ If-Match : put요청에 해당하는 헤더

 

□ If-Modified-Since : 어떤 페이지의 최종 수정일시가 특정항 일시 이후인 경우만 그 페이지를 돌려 받기 원하는 경우 이헤더에 

그 일시를 헤더에 설정해서 요청한다.

 

 □ If-None-Match : If-Match와 반대

 

□ If-Range : 다운로드 관리자의 이어받기 기능에서 주로 이용된다. 어떤 하나의 문서의 일부분만을 가지고 있을 때 수정 일시를 

지정해서 그 일시 이후에 변한 것이 없으면 이미 가지고 있는 부분 이외의 것만 받게하고 아니면 문서 전체를 받는 용도로 쓰인다.

 

□ If-Unmodified-Since : If-Modified-Since 반대

 

□ Pragma : 헤더 값이 no-catch이면 프록시 서버 또는 하나의 프로시로서 작동하는 서블릿은 캐시에 복사본이 있다고 해도 

서버에서 처리한 response를 전달한다.

 

□ Procy-Authorization

 

□ Range : If-Range 와 비슷하다.

 

□ Referer : 이전 url정보를 얻을 때 사용하지만, 너무 믿으면 곤란하다.

 

□ Upgrade : 클라이언트가 서버에게 HTTP1.1 이상의 어떠한 프로토콜을 지정하는 용도로 쓰인다.

 

□ User-Agent : 브라우저의 소프트웨어 종류와 버전을 의미한다.   

 

□ Via : 요청이 거쳐간 중간 사이트들을 의미한다 주로 게이트웨이나 프록시 서버가 설정한다.  

 

□ Warning : 클라이언트가 캐싱이나 내용 변환 관련 에러게 대해 경고 할 때 쓰이는 헤더로 자주 쓰이지 않는다.   

'JSP > Jsp 내장객체' 카테고리의 다른 글

JSP 내장객체의 스코프  (0) 2013.08.16
HTML 문서에서 인자로 사용  (0) 2013.08.16
EL 개요  (0) 2013.08.16
Session  (0) 2013.07.29
JSP 개요  (0) 2013.07.29
Posted by 1+1은?
2013. 7. 29. 13:48

■ 주석(comment) 처리

● HTML 주석 : 클라이언트에게 전달된다.

<!-- 주석내용 -->


● JSP 주석 : 클라이언트에게 전달하지 않는다.

<%-- 주석내용 --%>


● 스크립릿 에서의 주석 

/** 주석내용 */

/* 주석내용 */

// 주석내용


■ directive, 디렉티브(지시어)  링크_디렉티브

디렉티브는 페이지에  대한 설정  정보를 지정하거나 클래스의 속성을  변경한다. 

<%@  디렉티브_이름 속성1="값1" 속성2="값2"  ... %>


● 주로 쓰이는 설정

 

1
2
3
4
5
6
7
8
9
10
11
12
13
<%@ Page import="java.util.Calendar" %>   // JSP의 import
  
<%@ page contentType="text/html; charset=UTF-8" %>
// contentType = 생성할 문서 타입. 기본 값
// "text/html" 서버가 클라이언트에 전송하는 문자인코딩
  
<%@ page trimDirectiveWhitespaces="true" %>
//JSP 2.1 버전에서는 page 디렉티브에 새롭게 추가된 속성으로
//불필요하게 생성되는 줄 바꿈 공백 문자를 제거 할 수 있다. 기본 값 : "false"
  
<%   String cp = request.getContextPath();  // ContextPath(문맥경로) : ex) .../study
    request.setCharacterEncoding("utf-8"); %>
// 페이지 자체의 캐릭터 인코딩 지정. 기본 값 : "ISO-8859-1"



● page 디렉티브와 속성

 : page는 페이지에 대한 기본 정보 입력(생성하는 문서의 타입, 출력 버퍼의 크기, 에러 페이지등. 현재 문서를 나타내는 객체다.

- language : 스크립트 코드에서 사용되는 프로그래밍 언어 지정. 기본 값 : "java"

- contentType : 생성할 문서 타입. 기본 값 : "text/html"

- import : 사용할 자바 클래스 지정

- session : 세션 사용 여부 지정("true" : 사용, "false" : 미사용). 기본 값 : "true"

- buffer : 출력 버퍼 크기 지정("none" : 미사용, "12kb" : 출력 버퍼 12kb 사용). 기본 값 : "8kb"

- autoFlush

 : 출력 버퍼가 다 찼을 경우 자동으로 버퍼에 있는 데이터를 출력 스트림에 보내고 비울지의 여부 

  ("true" : 버퍼의 내용을 웹 브라우저에 보 낸 후 버퍼 비움, "false" : 에러 발생시킴. 기본 값 : "true")

- info : 페이지에 대한 설명

- errorPage : 실행 도중 에러 발생 시 보여줄 페이지 지정

                     <%@ page contentType="text/html; charset=UTF-8" errorPage="e.jsp"%>

    //에러 발생 시 클라이언트에 e.jsp 를 보여준다. 안쓴다.

    // 이 방법으로 에러처리를 하게 되면 모든 페이지에 설정을 해야 함.

- isErrorPage : 현재 패이지가 에러가 발생할 때 보여 지는 페이지 인지의 여부("true" : 에러, "false" : 에러아님). 기본 값 : "false"

- pageEncoding : 페이지 자체의 캐릭터 인코딩 지정. 기본 값 : "ISO-8859-1"

- isELIgnored

 : JSP 2.0에 새롭게 추가된 내용 ("true" : EL 무시, "false" : EL 사용). 기본 값 : web.xml 파일이 사용하는 JSP 버전 및 설정에 따라 다름

- extends : JSP 페이지가 Servlet 소스로 변환되는 시점에서 자신이 상속 받을 클래스를 지정할때 사용. 거의 사용되지 않는 속성

- isThreadSafe : 하나의 JSP 페이지가 동시에 여러 브라우저의 요청을 처리할 수 있는지 여부를설정. 기본 값 : "true"

- trimDirectiveWhitespaces

 : JSP 2.1 버전에서는 page 디렉티브에 새롭게 추가된 속성으로 불필요하게 생성되는 줄 바꿈 공백 문자를 제거 할 수 있다. 기본 값 : "false"


● taglib

 : 태그 라이브러리(tag library). 사용자가 만든 태그 모음. taglib는 JSTL 항목 참조 바로가기


● include

 : 다른 문서를 포함하는 기능. include 지시어는 JSP에서 서블릿 코드를 생성할 때 텍스트나코드를 jsp 파일 안으로 포함 시키며 포함되는 파일의 내용은   include  지시어가 있는 위치에 삽입된다.  

<%@  include file="URL"%>  

include 디렉티브의 처리과정은 정적으로 include 지시자를 사용한 JSP 페이지가 컴파일 되는 과정에서 include 되는 JSP 페이지의 소스 내용을 그대로 포함해서 컴파일 한다.  즉, 복사 & 붙여넣기 방식으로 두개의 파일이 하나의 파일로 구성된 후 같이 변환되고 컴파일 된다.


하지만 다른 문서를 포함해야 한다면 디렉티브로 사용하는것보다는 액션태그에서 사용하는편이다. 디렉티브의 include는 jsp파일을 그대로 복사하는 반면 액션태그의 include는 jvm이 랜더링한 결과, 즉 html 소스만 가져온다. 액션태그의 include는 액션태그 페이지에서 다룬다.


어찌됐건 디렉티브 사용방법은 다음과 같다.

1
2
3
4
5
//test1.jsp
<%
    String name = "홍길동";
%>
<%=name%>


위와 같은 페이지가 있을때 아래처럼 작성하면 문서포함이 완료된다.

1
2
3
4
5
6
//test2.jsp
<body>
include 지시어 예제<br/>
<%@include file="test3_inc.jsp" %>
<%=name%>님
</body>




■ Declaration, 선언부

 스크립트릿이나 표현식에서 사용할 수 있는 메소드나 변수를 정의한다. 선언 부에 선언된 변수는 서블릿으로 바뀔 때 멤버 변수로 변경되며 전역 변수의 성격을  가진다.  또한 _jspInit(), _jspDestory()와 같은 생명주기 운영을 위한 메소드를 재정의 할 수 있다. 선언부의 변수와 스크립릿의 변수는 생존주기가 다른데 가령 스크립릿 변수는 service()메서드의 멤버변수로 페이지가 로딩될 때마다 초기화된다.


<%! 자바_메소드정의 %> 

또는 

<%! 자료형 변수명 [= 초기)값]; %> 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%! int a = 0;%>
<%! int a,  b; double  c;%>
<%!
    public int add(int a, int b) {
        return a+b;
    }
%>
<html>
    <head><title>선언부예제</title></head>
    <body>
        10 * 25 = <%=mutiply(10, 25)%>
    </body>
    .
    .
    .



■ Scriptlet, 스크립릿

 JSP문서 내에 자바코드를 기술하는 부분으로 순수 자바 코드만 올수 있다. 그리고 스크립릿에  선언 된 변수는 로컬 변수의 성격을 가지며 자바에서의  메소드 내에서 선언된 변수와 비슷하다. (실제로 service()메서드의 멤버변수로 포함된다)

<%  자바코드1; 자바코드2;  자바코드3;  ... %> 

1
2
3
4
5
6
7
8
9
10
<% //: 스크립릿은 java 파일로 변경되면서 service() 메소드 안에 추가된다.
    int sum=0, i=1;
    while(i<=100)
    {   sum += i;
        i++;       }
 
out.print(sum);
 
out.print("<tr bgcolor='#ffffff' height='25'>");
%>



■ Expression, 표현식

HTML 문서 결과 값에 포함시키고자 할 때 사용 한다. 

<%=출력할_값 %> 


위는 아래와 같다.

<% out.print(출력할_값) %>

1
2
3
4
5
6
7
8
<%
    String str = "메롱";
%>
<html><head></head>
<body>
    <%=str%>
</body>
</head></html>

이 JSP 문서는 화면에 "메롱"을 출력한다.



■ JSP 예제 - form으로 전달받은 프로퍼티 처리

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<%
    request.setCharacterEncoding("utf-8");
          //클라이언트에서 전송되는 문자셋 지정. 설정하지 않으면 한글 깨짐
    //데이터를 전송받기 전에 반드시 해야한다.
    String name = request.getParameter("name");
    String gender = request.getParameter("gender");
 
 
    //String hobby = request.getParameter("hobby");
    //동일한 이름을 가진 파라미터를 getParameter() 메소드로 전달받으면 오직 하나만 받을 수 있다.
    String hobby = "";
    String[] h = request.getParameterValues("hobby");
    if(h!=null)
    {
        for(String s:h){
            hobby+=s+", ";
        }
        hobby = hobby.substring(0, hobby.lastIndexOf(", ")); //마지막 쉼표 제거
    }
             
    String hak = request.getParameter("hak");
    String bigo = request.getParameter("bigo");
     
    bigo = bigo.replaceAll("\n", "<br/>"); //엔터 -> 태그
    bigo = bigo.replaceAll(" ", " "); //공백 -> 태그
%>
<html>
<head></head>
<body>
 
출력 첫번째 방법 : <% out.print(bigo); %>
 
출력 두번째 방법 : <%=bigo%>
 
</body>
</html>


'JSP > Jsp 내장객체' 카테고리의 다른 글

JSP 내장객체의 스코프  (0) 2013.08.16
HTML 문서에서 인자로 사용  (0) 2013.08.16
EL 개요  (0) 2013.08.16
Session  (0) 2013.07.29
Request  (0) 2013.07.29
Posted by 1+1은?