2013. 7. 29. 13:48

■ 주석(comment) 처리

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

<!-- 주석내용 -->


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

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


● 스크립릿 에서의 주석 

/** 주석내용 */

/* 주석내용 */

// 주석내용


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

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

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


● 주로 쓰이는 설정

 

<%@ 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은?