학교에서 실습한 프로젝트를 CVS 서버에 등록한 후 집이나 학교에서 이어서 진행하려면 우선 CVS 서버에 등록된 프로젝트를 이클립스로 가져와야 한다. 이를 위해서는 프로젝트 익스플로러에서 마우스 오른쪽 버튼을 클릭한 다음 "New" -> "Project..." 항목을 차례로 선택하는 것으로부터 시작한다. 이것은 CVS 서버에서 관리되고 있는 프로젝트를 최초로 이클립스레 가져오는 단계를 설명한 것이다.

사용자 삽입 이미지

CVS에서 Project 가져오기

 
"New Project" 창이 뜨면 "CVS" 의 "Projects from CVS" 항목을 선택한 후 "Next>" 버튼을 클릭한다.

사용자 삽입 이미지

New Project


CVS 서버 접속에 필요한 계정정보를 입력받기 위한 "Enter Repository Location Information" 창이 뜨면 다음과 같은 내용의 정보를 입력한다. 이는 앞 CVS 서버에 프로젝트 등록하기에서 다룬 내용과 동일하다. "Host"에는 CVS 서버의 도메인 이름이나 IP 주소를 입력하고, "Repository path"에는 서버에서 CVS 저장소를 위한 디렉터리 이름을 입력한다. "Repository path"는 서버에 따라 다르므로 관리자에게 문의하여 입력해야 한다. 그리고 CVS 서버에 주어진 자신의 아이디와 비밀번호를 "User"와 "Password"에 각각 입력한 뒤 "Next>" 버튼을 클릭한다. "Save password" 좌측의 체크박스를 선택하면 암호를 기억하여 다음부터 암호를 묻지 않는다.

사용자 삽입 이미지
 
"Select Module"창은 CVS 서버에서 관리되고 있는 모듈들 중 하나를 선택 가져올 수 있도록 한다. 여기서 모듈이름은 이클립스에서 프로젝트 이름과 동일하다고 생각하면 된다. 이 창이 뜨면 "Use an existing module" 항목을 선택한다. 그러면 서버에서 관리되는 모듈 목록이 나열되는데, 우리는 "JSPLecture"를 가져올 것이므로 이것을 선택한 후 "Finish" 버튼을 클릭한다. 그러면 서버로 부터 프로젝트 "JSPLecture"를 가져온다. 그 과정은 "Checking out JSPLecture from CVS" 창에 진행 상태와 함께 표시된다.

사용자 삽입 이미지

Select Module

 
사용자 삽입 이미지

Checking out 창

 
프로젝트 가져오기가 완료되면 CVS 서버 이름과 함께 프로젝트 이름인 "JSPLecture"가 출력된다.

 
사용자 삽입 이미지
 
AND

대규모의 프로젝트는 다수의 개발자가 참여하여 진행된다. 그러나 이런 경우 서로 동일한 소스를 동시에 수정하거나 삭제함으로써 개발에 종종 문제가 발생하곤 한다. 이 경우 CVS를 사용하면 이러한 문제를 해결할 수 있다. CVS는 "Concurrent Versions System"의 약자로 소스의 버전을 만들어 관리함으로써 소스의 백업과 동시 작업이 가능하도록 해주는 시스템이다. 이 CVS 시스템은 혼자 프로젝트를 진행할 경우에도 장소에 구애받지 않고 프로젝트를 진행할 수 있도록 한다.  이클립스에서는 프로젝트 진행과 관리를 위해 CVS를 지원한다.

이클립스에서 CVS를 활용하려면 우선 CVS 서버에 계정을 가지고 있어야 한다. 여기서는 CVS 서버를 설정하는 방법은 다루지 않고 이미 서버에 계정이 있다는 전제로 글을 진행하겠다. 이클립스에서 CVS를 이용한 프로젝트의 관리는 CVS 서버에 프로젝트 등록하는 단계, 등록된 프로젝트를 CVS 서버로부터 이클립스로 가져오는 단계, 자신이 수정한 내용을 서버에 적용하기 위한 단계 마지막으로 누군가에 의해 수정된 소스를 자신의 이클립스 프로젝트에 반영하기 위한 단계로 설명할 수 있다.

만약 학교에서 이클립스 실습시간에 배운 내용이나 부여된 과제물을 집이나 회사 또는 제3의 장소에서 계속적으로 진행하려고 한다면 어떻게 CVS를 적용시킬 수 있을까. 가장 먼저 이클립스 프로젝트를 CVS 서버에 등록해야 한다. 이는 이클립스 프로젝트 익스플로러의 메뉴 중 "Team" 항목의 서브메뉴인 "Shared Project" 항목을 통해 이루어진다. 이클립스 프로젝트의 등록은 최초 한번만 하면 된다. CVS 서버에 등록된 이클립스 프로젝트를 집이나 회사와 같은 다른 컴퓨터에서 불러오려면 역시 이클립스 "File" 메뉴에서 "New" -> "Project" 항목을 차례로 선택한 다음 "CVS"의 서브항목인 "Projects from CVS"를 통해 가져올 수 있다. 이렇게 CVS 서버와 동기화 된 이클립스 프로젝트는 "Update", "Commit"에 의해 버전을 관리할 수 있다. "Update"는 누군가에 의해 최근 변경된 프로젝트의 내용을 내가 작업하는 프로젝트에 반영하는 과정이고, "Commit"은 내가 작업하고 변경한 내용을 다른 사람들이 반영할 수 있도록 서버에 등록하는 과정이다.

사용자 삽입 이미지

CVS 처리 과정

 
그러면 이클립스 프로젝트를 CVS 서버에 등록하는 방법에 대해 살펴보자. 등록하려는 프로젝트는 "JSPLecture"이다. 우선 이 프로젝트를 등록하려면 프로젝트 익스플로러의 프로젝트 이름 "JPSLecture" 위에서 마우스 오른쪽 클릭을 한 후 "Team", "Shared Project..." 항목을 차례로 선택한다.

사용자 삽입 이미지

Shared Project


CVS 서버 접속에 필요한 계정정보를 입력받기 위한 "Enter Repository Location Information" 창이 뜨면 다음과 같은 내용의 정보를 입력한다. "Host"에는 CVS 서버의 도메인 이름이나 IP 주소를 입력하고, "Repository path"에는 서버에서 CVS 저장소를 위한 디렉터리 이름을 입력한다. "Repository path"는 서버에 따라 다르므로 관리자에게 문의하여 입력해야 한다. 그리고 CVS 서버에 주어진 자신의 아이디와 비밀번호를 "User"와 "Password"에 각각 입력한 뒤 "Next>" 버튼을 클릭한다. "Save password" 좌측의 체크박스를 선택하면 암호를 기억하여 다음부터 암호를 묻지 않는다.

 

사용자 삽입 이미지


"Enter Module Name" 창이 뜨면 "Use project name as module name"을 선택한다. 이는 서버에서 관리되는 프로젝트 이름이 이클립스 프로젝트 이름과 동일하게 관리되도록 한다. 그러나 만약 서버에 동일한 이름이 존재한다면 "Use specified module name" 항목을 선택한 후 서버에서 다른 이름으로 관리되도록 할 수 도 있다. 모듈이름을 결정했으면 "Next>" 버튼을 클릭한다.

사용자 삽입 이미지

Enter Module Name


"Shared Project Resource" 창과 "Commit" 창에서는 특별히 입력하거나 변경할 내용이 없으므로 "Next>" 버튼과 "Finish" 버튼을 차례로 클릭하여 프로젝트 등록을 진행한다.

 

사용자 삽입 이미지

 

사용자 삽입 이미지


프로젝트가 CVS 서버에 등록되는 "Committing resources" 창을 통해 진행 과정이 표시된다.

사용자 삽입 이미지

Committing resources


진행이 완료되면 이클립스 프로젝트 이름 옆에 CVS 서버 이름이 출력되어 해당 프로젝트가 CVS 서버와 동기화 되고 있음을 알린다.

 

사용자 삽입 이미지


AND

순수 C언어 함수는 일반적으로 함수 파라메터의 갯수가 고정적이고 OOP에서 보이는 오버로딩과 같이 하나의 함수이름으로 서로 다른 파라메터를 가지는 함수를 사용할 수 없다. 그런데 C언어 함수 중 printf()류의 함수는 파라메터가 최소 1 개 이상으로 가변적이다. 예를 들면 아래 printf 함수는 동일한 결과를 출력하지만 사용한 파라메터의 갯수는 다르다.

printf("Hello World!"); /* 파라메터 1개 사용 */
printf("Hello %s!", "World"); /* 파라메터 2개 사용 */
printf("%s %s!", "Hello", "World"); /* 파라메터 3개 사용 */


그러면 어떻게 이런 함수를 작성할 수 있을까? 해결책은 헤더파일 "stdarg.h"에 정의돼 있다. 이 파일에 보면 va_list 타입과 네 가지의 매크로 va_start, va_arg, va_end, va_copy 가 정의돼 있는데, 이 매크로들이 가변 파라메터를 처리하는데 사용된다.

va_list
이 타입은 가변 파라메터를 위한 데이터 타입으로 가변 함수 정의 부분에서 가변 파라메터를 처리하기 위해 선언한다.

void va_start(va_list ap, last);
이 매크로는 가변 파라메터(ap)의 시작위치를 함수에 주어진 마지막 고정 파라메터(last) 다음으로 초기화 해 주며, 일반적으로 함수의 첫 부분에 사용된다.

type va_arg(va_list ap, type);
이 매크로는 가변 파라메터(ap) 에서 주어진 타입(type)의 값을 읽고 가변 파라메터(ap)의 위치를 다음으로 이동시킨다.

void va_end(va_list ap);
이 매크로는 함수의 마지막 부분에 사용한다.

void va_copy(va_list dest, va_list src);
이 매크로는 src에 저장된 가변 파라메터를 dest로 복사한다.


그리고 가변 함수를 정의할 때 최소 한 개 이상의 파라메터는 반드시 정상적으로 "int a"와 같이 타입과 변수명을 선언해야 하며 나머지 가변 파라메터 부분은 "..."으로 선언하면 된다. 이 때 "..."은 함수 파라메터의 맨 마지막에 선언해야 한다.


사용법은 아래 프로그램을 참조하자. 아래 작성한 프로그램의 함수 sum은 가변 파라메터를 가지는 함수로, 주어진 파라메터의 값이 -1을 만날 때까지 파라메터에 전달된 정수의 합을 계산한다.

#include <stdio.h>
#include <stdarg.h>

int sum_list(int a, ...)
{
    va_list ap; /* 가변 파라메터 저장을 위한 변수 ap 선언 */
    int i, sum = 0;

    va_start(ap, a); /* 가변 파라메터가 a 다음부터 시작됨을 알림 */

    i = a;
    while(i != -1) {
        sum += i;
        i = va_arg(ap, int); /* 가변 파라메터에서 정수 값을 읽고 다음 값을 읽기 위해 준비 */
    }

    va_end(ap); /* 가변 파라메터를 다 사용함 */

    return sum;
}

int main(int argc, char *argv[])
{
    printf("%d\n", sum_list(-1)); /* 0 출력 */
    printf("%d\n", sum_list(1,-1)); /* 1출력 */
    printf("%d\n", sum_list(1,2,-1)); /* 3 출력 */
    printf("%d\n", sum_list(1,2,3,-1)); /* 6출력 */
    printf("%d\n", sum_list(1,2,3,4,-1)); /* 10 출력 */
    printf("%d\n", sum_list(1,2,3,4,5,-1)); /* 15 출력 */
    printf("%d\n", sum_list(1,2,3,4,5,6,-1)); /* 21 출력 */
    printf("%d\n", sum_list(1,2,3,4,5,6,7,-1)); /* 28 출력 */
    printf("%d\n", sum_list(1,2,3,4,5,6,7,8,-1)); /* 36 출력 */
    printf("%d\n", sum_list(1,2,3,4,5,6,7,8,9,-1)); /* 45 출력 */
    printf("%d\n", sum_list(1,2,3,4,5,6,7,8,9,10,-1)); /* 55 출력 */

    return 0;
}


다음은 "FreeBSD Library Functions Manual Man Page"에 제시된 또다른 예제 프로그램이다. 이 예제의 va_arg 매크로를 보면 가변 파라메터의 타입이 서로 다른 것도 처리할 수 있음을 알 수 있다.

void foo(char *fmt, ...)
{
    va_list ap;
    int d;
    char c, *s;

    va_start(ap, fmt);
    while (*fmt)
        switch(*fmt++) {
            case 's': /* string */
                          s = va_arg(ap, char *);
                          printf("string %s\n", s);
                          break;
            case 'd': /* int */
                          d = va_arg(ap, int);
                          printf("int %d\n", d);
                          break;
            case 'c': /* char */
                          /* Note: char is promoted to int. */
                          c = va_arg(ap, int);
                          printf("char %c\n", c);
                          break;
        }
    va_end(ap);
}

AND

JSP 프로그램에서 MySQL용 JDBC 드라이버를 이용 폼으로 부터 POST 메소드로 전달된 한글 데이터를 Insert 할 때 한글이 깨진다면 페이지 문자셋을 고려하여 연결 URL을 다음과 같이 지정한다. 그러면 한글이 깨지지 않은 데이터를 테이블에 잘 저장할 수 있다. 물론 request.setCharacterEncoding 메소드의 파라메터도 문자셋에 맞도록 올바르게 지정해야 하고...
 
페이지 문자셋이 "EUC-KR" 인 경우
request.setCharacterEncoding("euc-kr");
...
String jdbc_url = "jdbc:mysql://localhost:3306/jsp_test?useUnicode=true&characterEncoding=euckr";


페이지 문자셋이 "UTF-8" 인 경우
request.setCharacterEncoding("utf-8");
...
String jdbc_url = "jdbc:mysql://localhost:3306/jsp_test?useUnicode=true&characterEncoding=utf8";

만약 MySQL 서버가 4.x 까지의 버전 이라면 URL에서 "euckr"과 "utf8" 부분을 각각 "euc-kr", "utf-8"로 바꿔줘야 한다.

아래 예제 프로그램을 참조하자.

페이지 문자셋이 "EUC-KR"인 경우.

form.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<form action="regdb.jsp" method="post">
이름 : <input type="text" name="name" />
<input type="submit" value="저장" />
</form>
</body>
</html>

regdb.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("euc-kr");
Connection conn = null;
Statement stmt = null;
String jdbc_driver = "com.mysql.jdbc.Driver";
String jdbc_url    = "jdbc:mysql://localhost:3306/jsp_test?useUnicode=true&characterEncoding=euckr";
String jdbc_user   = "jsp_test";
String jdbc_pwd    = "jsp_test";
String sql  = null;
String name = request.getParameter("name");
sql = "INSERT INTO member_euckr VALUES ('" + name + "')";
Class.forName(jdbc_driver);
conn = DriverManager.getConnection(jdbc_url, jdbc_user, jdbc_pwd);
stmt = conn.createStatement();
stmt.executeUpdate(sql);
%>
<%= sql %><br>
당신의 이름은
<%= name %>
입니다.
</body>
</html>


페이지 문자셋이 "UTF-8"인 경우.

form.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="regdb.jsp" method="post">
이름 : <input type="text" name="name" />
<input type="submit" value="저장" />
</form>
</body>
</html>

regdb.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
Connection conn = null;
Statement stmt = null;
String jdbc_driver = "com.mysql.jdbc.Driver";
String jdbc_url    = "jdbc:mysql://localhost:3306/jsp_test?useUnicode=true&characterEncoding=utf8";
String jdbc_user   = "jsp_test";
String jdbc_pwd    = "jsp_test";
String sql  = null;
String name = request.getParameter("name");
sql = "INSERT INTO member_utf VALUES ('" + name + "')";
Class.forName(jdbc_driver);
conn = DriverManager.getConnection(jdbc_url,jdbc_user, jdbc_pwd);
stmt = conn.createStatement();
stmt.executeUpdate(sql);
%>
<%= sql %><br>
당신의 이름은
<%= name %>
입니다.
</body>
</html>


위 예제에서 사용된 두 테이블 member_euckr과 member_utf의 구조는 각각 다음과 같다.

CREATE TABLE `member_euckr` (
  `name` varchar(20) NOT NULL
) DEFAULT CHARSET=euckr;

CREATE TABLE `member_utf` (
  `name` varchar(20) NOT NULL
) DEFAULT CHARSET=utf8;
AND

Eclipse와 함께 Java 개발 통합환경으로 자주 이야기 되는 프로그램으로 NetBeans가 있다. NetBeans는 SUN에서 개발 배포되는 프로그램으로 "http://www.netbeans.org"에서 무료로 다운로드할 수 있다. NetBeans 역시 많은 사용자를 확보하고 있는 성공적인 오픈 소스 프로젝트로 지속적으로 성장하고 있는 커뮤니티와 전세계 100여개에 달하는 파트너들을 거느리고 있다.

현재 이 프로젝트는 NetBeans IDE와 NetBeans Platform, 두 종류의 프로덕트가 존재하는데 NetBeans IDE는 개발 환경이고, NetBeans Platform은 대규모 데스크탑 애플리케이션을 개발할 때, 소프트웨어의 뼈대로 활용할 수 있는 기반 소프트웨어이다.

두 제품 모두 오픈 소스이며, 상업적인 용도와 비상업적인 용도 모두에 대해 무료로 사용할 수 있다. 그러면 NetBeans IDE를 이용 JSP 프로젝트를 생성하고 프로그램을 작성 실행하는 방법을 살펴보자.

우선 NetBeans IDE를 싱행하면 다음과 같은 화면을 볼 수 있다.

사용자 삽입 이미지

NetBean IDE 초기화면


위 화면에서 JSP 프로젝트를 생성하려면 먼저 Project Window에서 마우스 오른쪽 버튼을 클릭해 "New Project..." 항목을 선택한다.

사용자 삽입 이미지

New Project 항목 선택


"New Project" 창은 생성할 프로젝트가 어떤 종류의 프로젝트인가를 지정하는 창이다. 이 창이 뜨면 "Categories" 에서 "Java Web"을 클릭한다. 그러면 "Projects:"의 내용이 변경되는데 여기서 "Web Application" 항목을 선택하고 "Next >" 버튼을 클릭 다음 화면으로 넘어간다.

사용자 삽입 이미지

JSP를 위한 프로젝트 선택


프로젝트 이름을 지정하기 위한 "New Web Application" 창이 뜨면 "Project Name"에 적당한 이름을 지정한다. 여기서는 "HelloWeb"으로 하였다. 프로젝트 이름을 지정한 후에 "Next >" 버튼을 클릭한다.

사용자 삽입 이미지

프로젝트 이름 지정


"New Web Application" 창에서는 JSP 프로그램을 실행시키기 위한 서버를 설정해야 한다. Eclipse에서는 "Apache Tomcat"을 별도로 다운로드 받은 후 JSP 실행을 위한 서버로 사용했지만 "NetBeans"에서는 기본적으로 "GlassFish" 서버를 포함하고 있다.

이 글을 작성하는 시점에서 "NetBeans IDE 6.5.1"에 포함된 "GlassFish"는 V2와 V3 Prelude이다. 그 중 GlassFish V3 Prelude는 모듈식 OSGi 기반 아키텍처 위에 구축된 경량의 Web 2.0 개발 및 배포 플랫폼으로 개발자는 JRuby, Groovy와 같은 기존 Java 웹 기술을 지원하면서 동적으로 확장 가능하고 포함 가능한 플랫폼의 이점을 누릴 수 있다고 한다.

여기서는 GlassFish V3을 서버로 사용하겠다. 물론 NetBeans에서도 "Apache Tomcat"을 원하면 이를 사용할 수 있다.

"Server" 항목을 "GlassFish V3"으로 설정했으면 "Next >" 버튼을 클릭하여 다음 단계로 넘어간다. 참고로 "Context Path" 항목은 프로젝트 이름 "HelloWeb"과 관련돼있음을 기억하자.

사용자 삽입 이미지

서버설정


이 창은 프레임워크를 설정하는 화면으로 자신이 사용하는 프레임워크가 있으면 이를 지정한다. 여기서는 사용하는 프레임워크가 없으므로 그냥 "Finish" 버튼을 클릭 모든 프로젝트 설정을 마무리한다.

사용자 삽입 이미지

프레임워크 설정


프로젝트가 성공적으로 생성되면 "Project Window"에 다음과 같은 구조의 트리가 나타난다.

사용자 삽입 이미지

프로젝트 트리


프로젝트가 성공적으로 생성됐다면 이제 프로그램을 작성해 보자. 먼저 "NameHandler"라는 JSP 빈즈를 만들어보자. JSP 빈즈를 만들기 위해서는 다음 그림과 같이 프로젝트 트리의 "Source Packages" 위에서 마우스 오른쪽 클릭을 한 다음 "New", "Java Class"를 차례로 선택한다.

사용자 삽입 이미지

JSP 빈즈 생성


"New Java Class" 창이 뜨면 "Class Name"과 "Package"를 지정한다. 여기서는 각 항목을 "NameHandler"와 "org.mypackage.hello"로 지정한 후 "Finish" 버튼을 클릭하였다.

사용자 삽입 이미지

클래스 이름 및 패키지 지정


JSP 빈즈가 올바르게 생성됐으면 다음과 같이 "Source Packages" 아래에 "org.mypackage.hello" 패키지가 생성되고 그 패키지 아래에 "NameHandler.java" 파일이 위치한다.

사용자 삽입 이미지

JSP 빈즈를 생성한 후 프로젝트 트리


여기서 "NameHandler.java" 항목을 더블클릭하여 "NameHandler.java" 파일이 다음 내용이 되도록 수정한 후 저장한다.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.mypackage.hello;

/**
 *
 * @author 오윤상
 */
public class NameHandler {
    private String name;

    /** Creates a new instance of NameHandler */
    public NameHandler() {
       name = null;
    }

    public String getName() {
       return name;
    }

    public void setName(String name) {
       this.name = name;
    }

}

이제 프로젝트 트리에서 "index.jsp"를 더블클릭하여 "index.jsp"를 편집화면으로 불러낸 후 아래 내용으로 변경한 후 저장한다.

<%--
    Document   : index
    Created on : 2009. 6. 7, 오후 2:49:36
    Author     : 오윤상
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Entry Form</h1>

        <form name="Name Input Form" action="response.jsp">
            Enter your name:
            <input type="text" name="name" />
            <input type="submit" value="OK" />
        </form>
    </body>
</html>


이제 새로운 JSP 프로그램 "response.jsp"를 만들어 보자. 새로운 JSP 프로그램을 만들기 위해서는 프로젝트 이름 "HelloWeb" 위에서 마우스 오른쪽 클릭을 한 후 다음 그림과 같이 "New", "JSP..." 항목을 차례로 선택한다.
 
사용자 삽입 이미지

JSP 파일 만들기


"New JSP File" 창이 뜨면 "JSP File Name"에 원하는 JSP 파일 이름을 준다 이 때 확장자 ".jsp"는 생략 가능하며 자동으로 ".jsp"가 붙는다. 여기서는 이릉으로 "response"를 입력했다. 이름을 입력했으면 "Finish" 버튼을 클릭 새로운 JSP 파일의 생성을 마무리한다.

사용자 삽입 이미지

JSP 파일 이름 입력


이제 프로젝트 트리에서 "Web Pages" 아래에 새롭게 생성된 "response.jsp" 파일을 더블클릭하여 내용을 아래와 같이 수정한 후 저장한다.

<%--
    Document   : response
    Created on : 2009. 6. 7, 오후 3:07:15
    Author     : 오윤상
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <jsp:useBean id="mybean" scope="session" class="org.mypackage.hello.NameHandler" />
        <jsp:setProperty name="mybean" property="name" />
        <h1>Hello, <jsp:getProperty name="mybean" property="name" />!</h1>
    </body>
</html>


앞의 프로그램 "NameHandler.java", "index.jsp", "response.jsp"를  모두 입력했다면 이제 실행릉 해 보자. 이 세 프로그램 중 "index.jsp"를 실행하면 나머지 두 프로그램은 자동으로 처리되므로 여기서는 index.jsp 프로그램만 실행하는 방법만 살펴보자.

"index.jsp"를 샐행하려면 다음 그림과 같이 프로젝트 트리의 "index.jsp"에서 마우스 오른쪽 클릭 후 "Run File" 항목을 선택한다.

사용자 삽입 이미지

JSP 파일 실행


그러면 "NetBeans IDE" 하단에 메세지 출력과 함께 잠시 후에 "index.jsp" 프로그램이 실행된 인터넷 브라우저가 뜬다. 여기서 적당한 값을 주고 "OK" 버튼을 클릭하면 "response.jsp"를 실행한다.

사용자 삽입 이미지

index.jsp 실행화면


사용자 삽입 이미지

response.jsp 실행화면


AND