Java Thread Sleep


개발을 하다보면 중간중간 잠깐 쉬어야 하는 경우가 발생합니다. 예를 들어, 많은 서버의 경우 시간당 요청할 수 있는 쿼리의 숫자를 제한하는 경우가 많이 있습니다. 무제한 제공을 할 경우 DDOS 공격에 취약해지고, 소수의 사용자가 엄청난 쿼리를 날리게 될 경우 서버가 다운 될 가능성이 있기 때문이지요.

따라서 Java를 이용해서 프로그래밍을 할 경우 중간중간 쉬었다 해야 할 경우가 있습니다. 이럴때 Thread Sleep을 이용하면 됩니다.

예제를 살펴보시면,

public static void main(String[] args)
{
    try
    {
          for (int i = 1; i <= 60; i++)
         {
             System.out.println(i);
             Thread.sleep(1000);
          }
     }
     catch (Exception e)
     {
        e.printStackTrace();
    }
}


위 소스코드를 실행해보면 1부터 60까지의 숫자를 초당 1씩 증가해서 보여주는 것을 볼 수 있습니다. 핵심은 Thread.sleep() 메소드 입니다. 이 메소드의 파라미터는 밀리세컨드로 얼마나 스레드가 슬립 상태로 있을 것인가 입니다. 1000밀리 세컨드는 1초이기 때문에 1초간 쉬었다가 보여주고, 1초간 쉬었다가 보여주는 식입니다.

위 예제를 적재적소에 응용하시기 바랍니다. ^^

JSP 세션 ID와 Localhost, 127.0.0.1



트위터 API를 이용해서 서드파티 어플리케이션을 개발 할 때, 주의해야 할 점이 있습니다. 바로 127.0.0.1 과 localhost 를 구별해야 한다는 것이죠.

트위터 어플리케이션을 개발 할 경우 실수 할 수 있는 부분이 있습니다.



이런식의 흐름일 경우 세션이 공유되지 않아 중요한 정보를 사용 할 수 없습니다. 이클립스를 이용해서 JSP를 개발 할 경우 톰캣 서버의 호스트 이름이 기본적으로 localhost로 되어 있습니다. localhost라는 도메인을 가지고 서버에 페이지가 생성되는 것이지요.

localhost라는 도메인을 가지고 있는 페이지에서 세션에 데이터를 저장하고 OAuth 로그인 페이지로 넘어갑니다. dev.twitter.com에서 어플리케이션의 리디렉션 URL을 지정할 수 있습니다. OAuth 로그인이 완료되면, 리디렉션 URL로 oauthToken과 함께 넘겨주게 되는데, 그 리디렉션 URL에는 localhost를 지정 할 수 없습니다.

그래서 아무 생각없이 127.0.0.1을 입력하게 됩니다. ( hosts 파일에 보시면 localhost 와 127.0.0.1은 이름만 다를뿐 localhost가 127.0.0.1 이죠. )

하지만 이렇게 할 경우 정상 동작하지 않습니다. 그 이유는 localhost와 127.0.0.1 이 세션 ID를 공유하지 않기 때문입니다.

과연 실제로도 그런지 테스트를 해보고 싶으신 분들은 localhost 페이지에서 Request.getSessionID() 를 해보시고, 리디렉션 URL( 127.0.0.1 )에서 Request.getSessionID()을 해보시기 바랍니다. 세션 ID가 다르게 뜨는 걸 볼 수 있습니다.




따라서 이클립스의 JSP 프로젝트 생성시, 서버의 호스트 이름을 127.0.0.1 로 하시기 바랍니다.

즉,



이런식으로 해 주셔야 세션이 공유되고, 트위터의 서드파티 어플리케이션 개발을 순조롭게 하실 수 있습니다.

물론 직접 웹 서버에 올려서 개발을 하실 경우엔 상관없습니다...




Twitter4j 라이브러리 버그 리포팅 "401:Authentication credentials..."


트위터 웹 어플리케이션을 개발하면서 Twitter4j 라는 어플리케이션을 사용하고 있는데요. 오픈 라이브러리이다보니 자잘한 버그들이 많이 있습니다. 이번에 잡은 버그는 JSP로 서드파티 어플리케이션을 개발하면서 나왔던 버그입니다. 웹에 공개되어 있는 Twitter4j 라이브러리와 JSP 연동 예제를 따라하다보면 다음과 같은 에러 메시지가 뜨게 됩니다.
( 에러 메시지라고 할까요. 아니면 Exception이라고 할까요.)




401:Authentication credentials (https://dev.twitter.com/docs/auth) were missing or incorrect. Ensure that you have set valid conumer key/secret, access token/secret, and the system clock in in sync.
The screen name / password combination seems to be invalid.Relevant discussions can be on the Internet at:
    http://www.google.co.jp/search?q=96430884 or
    http://www.google.co.jp/search?q=00002d45
TwitterException{exceptionCode=[96430884-00002d45 9aae86e9-14926980], statusCode=401, retryAfter=-1, rateLimitStatus=null, featureSpecificRateLimitStatus=null, version=2.2.4}


이 에러 메시지가 떠서 한참을 고생했었는데, AccessToken을 얻는 과정에서 뭔가 잘 못 되었나봅니다. 일단 Exception이 발생한 부분을 보면



if (token.equals(oauthToken)) {
 try
{          
accessToken = twitter.getOAuthAccessToken(oauthToken,requestToken.getTokenSecret());
 }
catch (TwitterException e)
{
            e.printStackTrace();
            System.out.println("트위터인증실패 : " + e);
}


dev.twitter.com 에서 지정해 놓은 리디렉션 URL에 추가되어 얻어진 oauthToken( 결국 requestToken.getToken()에서 얻어진 토큰 )과 requestToken.getTokenSecret() 으로 얻어진 Secret 을 이용해서 AceessToken을 얻어 이것을 이용해 OAuth 로그인을 한 계정의 정보에 접근을 하게 됩니다.

이 때, AccessToken을 얻는 과정에서 Exception이 발생하게 되는데, 왜 그런지는 모르겠지만 오버라이드 된 다른 메소드를 사용해서 해결했습니다.

해결 방법은...


a.jsp ( OAuth 로그인 이전 페이지... 여기서 OAuth 로그인 페이지로 넘어감 )

request.getSession().setAttribute("ReqToken",requestToken);


리퀘스트 토큰 자체를 세션에 저장합니다. ( 원래는 requestToken.getToken(), requestToken.getTokenSecret() 을 이용해서 토큰과 시크릿을 만들어서 세션에 저장했었죠. )

b.jsp ( OAuth 로그인 이후, 리디렉션 URL로 저장된 곳 )

RequestToken reqToken = (RequestToken)request.getSession().getAttribute("ReqToken");

...

accessToken = twitter.getOAuthAccessToken(reqToken);


이런식으로 세션에 RequestToken 객체를 저장했다가 다시 꺼내와서 RequestToken 으로 캐스팅해서 AccessToken을 얻는 방식을 사용하면 됩니다.

다른 해결 방법이 있는지는 모르겠지만 저는 이런식으로 Twitter4j 라이브러리가 던지는 Exception을 해결 했습니다.





[JSP 강좌] JSP문서에 주석 달기


JSP 뿐만아니라 대부분의 프로그래밍 언어에서 "주석" 이라는 기능을 제공합니다. 웹 프로그래밍 언어인 JSP 역시 자바 문법을 따르고 있으므로 주석 기능이 제공 되는데요. 주석은 프로그램의 논리적 구조에는 전혀 영향을 미치지 않는 글로 각 부분의 간략한 설명을 써 놓을 때 사용합니다.

JSP 프로그래밍 환경에서는 두 가지 형태의 주석이 사용됩니다. 
JSP 부분에서 사용되는 주석과 HTML 환경에서 사용되는 주석이 있습니다.


JSP 주석 1 - HTML 스타일 주석 

먼저 HTML의 주석을 JSP 프로그래밍에도 사용 할 수 있습니다. JSP로 HTML 태그를 생성하는 것이기 때문에 뭐 당연한 말이겠네요. HTML 주석은 다음과 같이 생겼습니다.


<!-- HTML 주석입니다. -->


이런 스타일의 주석은 동적 웹 프로그래밍언어가 아니라 순수한 HTML로만 이루어진 웹 페이지에서도 많이 볼 수 있는 태그입니다. 실제로 웹 브라우저에서 실행시켜 보면 "HTML 주석입니다." 라는 글자는 출력되지 않죠.

JSP의 관점에서 보면, 이런 HTML 스타일의 주석은 클라이언트로 전달되는 주석이라는 특징이 있습니다. HTML 스타일의 주석도 어떻게 보면 하나의 태그이기 때문에 다른 태그들과 마찬가지로 클라이언트의 웹 브라우저로 전송이 됩니다.

그렇기 때문에 비즈니스 로직이나 JSP 프로그램의 핵심 알고리즘을 노출 시킬 수 있는 주석을 이런 HTML 스타일로 작성을 하게 되면, 주석이 그대로 클라이언트 웹 브라우저로 전송이 됩니다. 클라이언트에서 <소스보기> 기능을 이용해서 HTML 코드를 뜯어 볼 경우 이런 주석은 그대로 노출되기 때문에 보안상 위험이 있는 내용은 HTML 주석으로 처리하면 안 됩니다.

HTML 스타일의 주석 사용의 예를 들어보겠습니다. 다음 소스를 작성해서 실행 시켜 보도록 하겠습니다.




그리고 실행 결과가 나오는 창에서 소스보기를 통해 주석이 클라이언트에서 어떻게 보이는지 보도록 하겠습니다.



HTML 주석이 그대로 노출 되는 것을 볼 수 있습니다. 위의 예에서 본 것 처럼 만약 데이터 베이스나 기타 시스템의 아이디와 비밀번호를 HTML 스타일 주석으로 처리를 했다면, 그 아이디와 비번은 만천하에 공개되는 것입니다.

그렇기 때문에 HTML 스타일 주석을 사용 할 때에는 주의가 필요합니다.


JSP 주석 2 - JSP 스타일 주석


그렇다면 핵심적인 비즈니스 로직이나 비밀번호 같은 중요한 정보를 주석으로 설명하되, 클라이언트로 전송이 되지 않도록 하는 방법은 없을까요? 없다면 거짓말이겠죠.

바로 JSP 스타일의 주석을 이용하면 서버에서만 ( JSP 파일에서만 ) 볼 수 있고 결과로 전송되는 HTML에서는 보이지 않는 주석을 작성 할 수 있습니다. JSP 스타일의 주석은 다음과 같습니다.


<%-- JSP 주석입니다 -- %>


아까 봤던 HTML 스타일의 주석과 비슷하지만 약간 다르네요. 느낌표 대신에 퍼센트 문자가 들어갔습니다.
이렇게 쓰는 주석은 JSP 파일을 편집 할 수 있는 서버측에서만 볼 수 있으며, 클라이언트 쪽에서는 이 주석을 볼 수가 없습니다.
테스트를 해보자면, 다음 소스코드를 실행해 보도록 합시다.




그리고 실행 결과가 나오는 창에서 소스보기를 통해 이 주석이 클라이언트에서 어떻게 보이는지 보도록 하겠습니다.



아까와는 달리 JSP 스타일의 주석은 클라이언트가 <소스보기>를 통해서 볼 수 없음을 알 수 있습니다.
그러므로 중요한 비즈니스 로직이나 JSP 파일의 핵심 내용, 보안상 중요한 정보 등은 HTML 스타일의 주석보다는 JSP 스타일의 주석을 이용해서 설명해 놓는 것이 좋다는 걸 알 수 있습니다.


JSP 주석 3 - JAVA 스타일 주석


그 밖에 JSP는 자바 언어의 문법을 그대로 이용하고 있기 때문에 기존의 자바스타일의 주석도 이용할 수 있습니다. 자바 스타일의 주석에는 두 가지가 있는데,


// 한 줄 짜리 자바 주석

/*
    한줄 혹은
    여러 줄 짜리
    자바 주석
*/


첫 번째는 한 줄 전체를 주석처리하는 것으로 다음 줄은 주석처리가 되지 않습니다.
두 번째는 주석의 범위를 지정할 수 있는데, '/*' 문자는 주석을 여는 문자이고, '*/'는 주석을 닫는 문자입니다. 즉, '/*' 과 '*/' 사이의 모든 문자는 줄 바꿈문자를 비롯하여 모두 주석처리가 되는 것입니다. 자바를 배워보셨거나 기타 다른 프로그래밍 언어를 배워 보신 분들은 쉽게 이해가 가실 거라고 생각합니다.

마지막으로 한번 더 주석처리에 대한 연습을 해보겠습니다.




이 소스 코드를 실행해 보면,



이렇게 나옵니다.
주석은 안 쓰는 것보다 쓰는 것이 프로젝트 관리와 진행에 있어서 많이 도움이 됩니다. 하지만 웹 프로그래밍과 같은 경우에는 주석을 잘 못 썻을 경우에 보안상 문제가 발생 할 수도 있는데요.

어떤 주석이 어떤 특성을 갖고 있는지 알고 사용해야 합니다.



JSP 문서 만들기


이제 본격적으로 JSP라고 할 수 있는 것들을 배워 보겠습니다.
여러분의 컴퓨터에 JSP 프로그래밍 환경이 갖추어 지지 않았다면, 이전에 포스팅 해놓은 것들을 따라하면서 JSP 프로그래밍 환경을 구축하시기 바랍니다. JSP 프로그래밍 환경이 없으면 JSP를 실행 할 수 없겠죠?

2010/04/06 - [놀이터/글 창고] - 자바( Java )설치하기 & 환경변수( path ) 설정하기
2010/04/06 - [놀이터/글 창고] - 자바( JAVA ) 개발 환경 설치( IDE 설치 ) - 이클립스( Eclipse ) 설치하기 및 오류
2010/07/15 - [놀이터/글 창고] - 이클립스와 톰캣 설치 및 연동하기
2010/07/19 - [놀이터/글 창고] - JSP 프로젝트 생성 및 "Hello, world!" 프로그래밍

이전에 "Hello, World!" 프로그래밍을 해봤는데요. 사실 이것은 JSP 라고 하기가 뭐 한게, JSP 함수들을 이용하지 않고 단지 HTML문서를 JSP 파일로 돌려 본 것 뿐입니다. 그래서 오늘은 진짜 JSP라고 할 수 있는 기초 프로그래밍을 배워 보도록 하겠습니다.


JAVA 언어를 이용한 "Hello, World!"


 이전에 실행 해 봤던, "Hello, World!" 라는 소스를 기억 하시나요?
2010/07/19 - [놀이터/글 창고] - JSP 프로젝트 생성 및 "Hello, world!" 프로그래밍
위에서 말씀 드렸다 시피 이 소스는 JSP라기 보다는 HTML이라고 해야 더 정확 할 것입니다. 동적인 요소, 특히 JAVA 언어가 사용되지 않았기 때문이죠. 이제 여기에 JSP적 요소( JAVA 언어를 이용한 )를 추가한 "Hello, World!" 소스 코드를 작성해 보도록 하겠습니다.

소스는 다음과 같습니다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!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>
<%    String str = new String("Hello, World!"); %>
<%= str %>
</body>
</html>


이전에 작성했었던 "Hello, World!" 소스와 달라진 부분이 있지요?

이전 "Hello, World!" 소스


바뀐 "Hello, World!" 소스


바로 <Body> 태그의 안쪽에 단순히 Hello, world! 라는 문자열만 있었던 부분이 자바 비스무리한 소스코드로 바뀌어 진 부분입니다. 출력되는 결과는 같습니다만, 표현하는 방식이 약간 다른데요. 전자는 HTML을 이용한 정적인 방식이고, 후자는 JSP를 이용한 동적인 방식이 되겠습니다.

JSP 코드의 출력 결과


더 설명을 하자면, JSP 소스 코드에는 HTML 코드 뿐만아니라 자바 프로그래밍 코드도 약간 들어가 있다는 것입니다. 바로 HTML 문서 중간에 <% %>로 둘러 쌓인 부분이 바로 자바 프로그래밍 부분인데요. 위에서는 문자열인 String 클래스를 생성자를 이용해 "Hello, World!" 라는 문자열을 만들어서 저장을 하고 있습니다. 여기까지는 자바 코드와 같은 패턴이네요.

다음은 <%= str %> 부분입니다. 원래 자바에서 콘솔에 문자열을 출력하는 메소드는 System.out.println("") 임을 자바를 배우신 분이라면 아실 겁니다. 하지만 JSP에서 출력이 되는 곳은 콘솔이 아니라 HTML을 출력하는 웹 브라우저입니다. 이 때 사용하는 방법이 <%= 변수 %> 를 사용하는 방법으로, 변수에 들어있는 내용이 문자열의 형태로 HTML 상에 출력이 되는 것입니다.

위 소스 코드를 설명해보면, str 이라는 변수에 "Hello, World!"라는 문자열 객체를 만들어서 가리키게 하고 있습니다. ( str이라는 변수에 "Hello, World!"라는 문자열을 저장하고 있다고 보시면 됩니다. ) 그 다음줄에서 <%= str %> 이라는 부분에 의해서 str 변수에 들어있는 문자열이 HTML 상으로 출력이 됩니다. 즉, str에 "Hello, World!" 라는 문자열이 들어 있으므로 <%= str %> 코드를 만나서 Hello, World 가 HTML로 출력이 되는 것입니다.

로그인 처리


JSP를 이용하는 이유가 바로 여기에 있는데요. 프로그래밍이 가능하다는 부분입니다. 만일 로그인한 사용자의 정보를 표현하고 싶을 때, 그 정보를 변수에 담았다가 요소요소에 사용 할 수 있습니다. 또, 회원의 등급에 따른 if 문의 사용으로 JSP 페이지를 다르게 표현 할 수도 있는 강력한 프로그래밍 가능성을 가지고 있습니다.

요약하면 JSP를 이용해서 좀 더 유연하고, 강력한 웹 페이지를 구성 할 수 있다는 말입니다.

JSP에 대한 더 자세한 내용은 차차 배워 가도록 하겠습니다. JSP를 배워서 게시판을 만들어 보는 것이 이번 스터디의 목적이니 잘 따라 오시고 좀 더 공부를 하시면 쇼핑몰이나 블로그 플랫폼, 홈페이지 정도를 만들 수 있는 실력까지 올라 가실 수 있을 겁니다. ^^


JSP 학습 추천 도서



 이클립스와 톰캣을 연동하여 사용 할 때, 자주 나타나는 메시지가 톰캣이 사용하는 포트가 충돌한다는 메시지 입니다.


이 창이 자주 뜨게 되는데요.

'Starting Tomcat v5.5  Server at localhost' has encounterd a problem.

Server ports (8080, 8009) required by Tomcat v5.5 Server at localhost are already in use. The server may already be running in another process, or a system process may be using the port. To start this server you will need to stop the other process or change the port number(s).

라는 메시지가 뜹니다. 해석을 해보자면, Tomcat 이 사용하는 8080, 8009 포트가 이미 사용중이라는 말입니다. 서버가 이미 실행되고 있을 수 있으니 확인해 보시라는 경고 메시지입니다. 이클립스에서 JSP 실행을 하기 위해서 기존에 실행 하던 서버를 잠시 정지 시키는 것을 요구하고 있네요.

해결 방법으로는 기존에 실행되고 있는 톰캣 서버나 다른 서버 프로그램을 잠시 정지 시키거나 중지 시키고 실행을 하면 됩니다.


해결 방법 1

 기존에 실행이 되고 있는 톰캐 서버를 정지해보겠습니다.
 여러분의 컴퓨터 트레이를 보시면


이렇게 생긴 아이콘이 있을 텐데요. ( 없을 수도 있습니다. )
이 아이콘을 우클릭하여


'Stop service' 를 누릅니다.
그리고 이클립스로 돌아가서 실행을 하면, 오류 없이 실행 될 겁니다.
그리고 테스트가 끝난 다음 다시 'Start service' 를 눌러서 실행 시켜 주면 됩니다.
근데, 개인 PC에서 실습 이외에 톰캣 서버를 돌릴 이유가 있나 싶네요.


해결 방법 2

  트레이에 저 아이콘이 없는 경우엔 작업 관리자를 열어서 톰캣 서버 프로그램을 강제로 꺼주는 방법을 쓰면 됩니다.
  작업 관리자를 실행한 후 "프로세스" 탭을 보시면


tomcatXX.exe 라고 하는 톰캣 프로세스가 실행되고 있을 겁니다.
톰캣 서버를 담당하는 프로세스인데요.
이 프로세스를 종료해 줍니다



프로세스 끝내기를 눌러서 종료를 해주시고,
이클립스에서 다시 소스 코드를 실행하시면 잘 동작 할 것입니다.

JSP 환경 구축하면서 처음 보게 된 오류 메시지였는데, 별로 어렵지 않게 해결이 되네요 ㅎㅎ


JSP 학습 추천 도서


JSP 프로그래밍의 시작


  이전 포스팅에서 JSP 프로그래밍을 할 수 있는 환경을 구축 하였습니다. 만약 여러분의 컴퓨터에 JSP를 프로그래밍 할 수 있는 환경이 갖추어 지지 않았다면, 이전 포스트를 보면서 JSP 환경 구축을 하시기 바랍니다. 프로그래밍 환경이 구축되지 않았다면 JSP 프로그래밍 하기 힘들어요~ ( 메모장을 이용해서 서버에 올리는 식으로 할 수도 있지만 시간이 많이 걸리고 복잡해서 처음 배우는 분들에겐 비추입니다. )

2010/04/06 - [컴퓨터 공학/Java] - 자바( Java )설치하기 & 환경변수( path ) 설정하기
2010/04/06 - [컴퓨터 공학/Java] - 자바( JAVA ) 개발 환경 설치( IDE 설치 ) - 이클립스( Eclipse ) 설치하기 및 오류
2010/07/15 - [컴퓨터 공학/Java] - 이클립스와 톰캣 설치 및 연동하기


이클립스 프로젝트 생성하기

 그러면 JSP 프로그래밍을 하기위해서 개발환경인 이클립스를 실행시킵니다.


이클립스에도 여러가지 버젼이 있는데, 저는 갈릴레오 버전을 사용하고 있습니다. 갈릴레오 버전이 나온지 얼마 안되서 아직 호환성 문제 및 여러가지 잡음이 있는데, 만약 JSP 프로그래밍을 하다가 안 되는 점이 있으면, 잘 찾아 보시고 정 안되면 이전 버전인 유로파 같은 버전을 다시 설치해 주시기 바랍니다.

 
어짜피 이클립스는 인스톨 과정이 없고, 그냥 압축 파일만 압축 해제 해주면 되기 때문에 다운그레이드 하는 과정이 굉장히 쉽습니다.

하위 버전을 사용 하실 경우 톰캣 연동 플러그인을 다시 설치해 주셔야 합니다. ( plugins 폴더에 다시 집어 넣어 주셔야 합니다. )

2010/07/15 - [컴퓨터 공학/Java] - 이클립스와 톰캣 설치 및 연동하기


이클립스를 실행 하셨으면, [File] -> [New] -> [Project]를 선택합니다.



 Project 를 새로 생성 할 수 있는 창이 뜨는데요. 이 메뉴 중에서 'Web' 의 하위메뉴에서 'Dynamic Web Project'를 선택해 줍니다.

여기서 Dynamic Web Project 란 동적인 웹 페이지를 만들 수 있는 프로젝트를 말합니다. 동적인 웹 페이지란, 게시판 처럼 데이터 베이스나 어떤 입력, 조건 등에 따라서 웹 페이지의 내용이 동적으로 변하는 페이지를 말합니다. JSP나 PHP, ASP 등의 웹 프로그래밍 언어로 쓰여진 웹 페이지가 이런 동적 웹페이지 ( Dynamic Web Page )에 해당합니다.

 반면 Static Web Project는 JSP 같은 웹 프로그래밍 언어가 아니라 단지 HTML과 Javascript, css와 같은 웹 페이지 자체의 동적인 요소가 없는 페이지를 만드는 프로젝트를 의미합니다.

 우리는 JSP 프로그래밍을 할 것이기 때문에 'Dynamic Web Project'를 선택합니다.




'Dynamic Web Project'를 선택 하셨으면 위와 같은 창이 나올 겁니다. 'Project Name'에 적절한 프로젝트 이름을 써줍니다. 나머지는 그냥 기본 설정을 따라가시면 됩니다.


그 밑에 'Project contents' 는 프로젝트의 컨텐츠 ( 설정사항, 소스 코드 등 ) 들이 어느 디렉토리에 저장이 될 것인가를 말합니다. 기본으로 설정을 하면, 여러분의 'Work Space' 에 저장이 될 겁니다.
그리고 'Target Runtime'은 개발한 JSP 등의 실행을 위한 서버를 설정하는 곳인데, 나중에 설정을 하게 될 것이니 <None>을 사용하도록 합니다.


프로젝트 이름을 입력 하셨으면, [Finish] 를 눌러서 진행합니다.




프로젝트가 생성되어 'Project Explorer'에 방금 생성한 프로젝트가 등록이 되어 있는 것을 볼 수 있습니다.
저는 'JspProgramming' 이라는 이름으로 생성을 했습니다. 여러분도 여러분이 써 넣으신 프로젝트 이름이 저 곳에 뜰 겁니다.


"Hello, world!" 프로그램 소스 작성

이제 JSP를 프로그래밍 할 수 있는 프로젝트까지 생성이 되었습니다.
지금부터는 실제로 JSP 프로그래밍을 해보도록 하겠습니다. 프로그래밍을 배울 때, 가장 먼저 작성하는 프로그래밍이 바로 Hello, World 인데요. 간단하기 "Hello, World!"라는 문자를 출력하는 프로그램 입니다.




Project Explorer에 보시면 'WebContent' 라는 폴더가 있습니다. 이 폴더를 선택하고 우클릭해서 폴더를 하나 만들어 줍니다.
[우클릭] -> [New] -> [Folder] 를 선택합니다.




폴더 이름에 적절한 이름을 넣어줍니다.
저는 HelloWorld 라는 이름을 넣었습니다.
적절한 이름을 넣고 [Finish]를 선택합니다.

뭐, 사실 이렇게 폴더를 만들어서 관리를 하지 않아도 됩니다만 효과적인 소스 관리를 위해서 저는 폴더를 만들어서 관리를 하는 편입니다. 나중에 프로젝트가 커지거나 소스 파일이 많아지면 헷갈리게 되거든요 ^^

귀찮으신 분들은 폴더 안 만드셔도 됩니다.




HelloWorld 라는 폴더가 생성이 되었으면 ( 여러분이 입력한 폴더가 생성이 되었으면 ) 그 폴더를 선택하고 [우클릭] -> [New] -> [JSP]를 선택합니다.

만약 JSP가 보이지 않으신다면,

[New] -> [Other] -> 'Web' -> 'JSP' 를 선택하시기 바랍니다.







 "File Name" 에 생성할 파일이름을 써 넣습니다.
 저는 "HelloWorld.jsp"를 써 넣겠습니다.
 [Finish] 를 눌러도 되지만 [Next]를 눌러서 템플릿 소스를 선택하도록 하겠습니다.



여러가지 템플릿 항목들이 있는데, 그 중에 "New JSP File (html)" 을 선택하고 [Finish] 버튼을 누르겠습니다.

템플릿이란?

프로그래밍을 하게 되면, 기본적인 구조를 계속해서 입력해야 할 상황이 있습니다.

HTML을 예로 들면,
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>

이 부분은 새로운 html 페이지를 만들 때 항상 반복적으로 써 넣어야 합니다. 하지만 템플릿을 사용하면 이런 기본적인 구조가 미리 쓰여진채로 생성이 되어서 보다 편리하게 프로그래밍을 할 수 있습니다.

물론 Ctrl + C,V 를 해서 복사를 할 수도 있지만 이 기능을 사용하는게 더  깔끔하고 멋지지 않을 까요? ㅋㅋ

그럼 "Hello, World!"를 출력하는 프로그램을 작성해 보도록 하겠습니다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!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>
Hello, World!
</body>
</html>

단순히 템플릿에 의해 생성된 내용 중에 '<body>' 와 '</body>' 사이에 "Hello, World!" 만 타이핑 해서 넣은 화면입니다. 템플릿을 이용하면 편리하긴 하지만 좀 더럽게 느껴질 수도 있습니다. 생략 할 수도 있는 것들이 추가 되니까 말이죠.

[Ctrl] + [F11] 을 눌러서 실행을 시킵니다.


위와 같은 창이 뜨는데, 아마 'IBM WebSphere v6.0' 이라는 항목이 기본으로 설정되어 있을 텐데, 조금 위로 올라가면
'Apache' -> 'Tomcat v5.5 Server' 가 있을 겁니다. 여기서 여러분이 설치한 톰캣 서버의 버전을 선택해 주시면 됩니다. 저는 5.5 버전을 설치했으니 v5.5 를 선택하겠습니다.


'Tomcat Installation directory'의 [Browse]를 클릭해서 여러분이 이전에 톰캣 서버를 설치한 디렉토리를 지정해 줍니다.
기본 디렉토리는 "C:\Program Files\Apache Software Foundation\Tomcat 5.5" 입니다.
[Next]를 눌러서 진행합니다.


다음은 실행에 포함시킬 프로젝트를 선택하는 화면입니다.
'Project" Explorer' 에 여러개의 프로젝트를 포함 시킬 수 있는데, 그 중에 실행 시킬 프로젝트를 고르는 화면입니다. Configured 라는 쪽이 실행 시킬 프로젝트 목록이고, Available 이라는 쪽이 추가 시킬 수 있는 프로젝트입니다. 여러개의 프로젝트가 연계해서 작동하는 큰 프로젝트가 아니면 대부분 현재 실행되고 있는 프로젝트만 포함 시킵니다.

이렇게 서버 설정이 끝나고, 다시 [Ctrl] + [F11] 을 눌러서 프로젝트를 실행 시킵니다.



자, Hello, World! 라는 문자열이 뜬 것이 보입니다.
이제 JSP 프로그래밍을 할 수 있는 개발 환경과 간단한 JSP 프로그래밍을 해 봤는데요. 앞으로 배울 것이 더 많고 많이 배울 수록 해보고 싶은 것들이 더 많게 될 것입니다.

JSP 학습 추천 도서





 자바( JAVA ) 개발을 위해 개발 환경 ( IDE )를 설치하기 전에 JDK 를 설치해야 합니다. 다음 링크를 따라가서 먼저 JDK를 설치하시기 바랍니다.

2010/04/06 - [4. Blah~ Blah~] - 자바( Java )설치하기 & 환경변수( path ) 설정하기

 그러면 이 JDK를 이용해서 실제로 자바 프로그래밍을 할 수 있는 이클립스( Eclipse )를 설치해 보도록 하겠습니다. 먼저 이클립스 홈페이지를 들어가도록 합니다.

http://www.eclipse.org/



 홈페이지의 우측에 "Download Eclipse" 라는 부분이 있습니다. 이 버튼을 눌러서 다운로드 받을 수 있는 페이지로 넘어갑니다.



 가장 용량이 많은 Eclipse IDE for Java EE Developers ( 190MB ) 를 클릭해서 다운로드 받습니다.




 빨간색 박스를 클릭해서 다운로드 받습니다. 아마 한국의 서버중에 하나를 선택해주는 것 같습니다. 카이스트에 있는 서버가 선택된 모양인데, 아무튼 상관없으니 클릭해서 다운로드 받습니다.



 저는 파이어폭스를 써서 이런 화면이 나왔습니다. 인터넷 익스플로러를 쓰시는 분도 다운로드 받는 창이 뜨실 겁니다.




 적절한 폴더를 잡아서 압축을 풉니다. ( 저는 알집을 사용하고 있습니다. 다른 프로그램을 사용하셔도 무방합니다. )




 이클립스 압축파일을 압축해제 하면 위와 같은 파일들이 나옵니다. Set up 파일이 없죠? 네 이클립스는 따로 설치를 할 필요가 없이 이클립스 홈페이지에서 그대로 다운받아서 압축을 풀고 사용하시면 됩니다.

eclipse.exe라는 파일을 실행합니다. ( 동그란 단추모양의 아이콘 )



전 XP를 쓰는데 이런 에러가 뜨는 군요. 해결 방법을 찾아 보도록 하겠습니다.

다시한번 이클립스의 구성 파일들을 봅시다.



 위 파일들중 eclipse.ini 라고 하는 파일을 열도록 합니다. 이클립스 설정 파일인데, 여기서 조금 변형을 해야 xp에서 실해잉 됩니다.


빨간색 네모 친 부분을 삭제해 줍니다. 잘 안보이시는 분들을 위해 다시 써드리겠습니다.


-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-product
org.eclipse.epp.package.jee.product
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m


 이것은 이클립스를 사용할 때, 메모리의 사용을 제한하는 부분입니다. 이클립스를 이용해서 매우 부담이 큰 작업을 할 때에는 시스템이 죽을 수도 있습니다. ( 뭐 기가급의 메모리를 사용하신다면 그러기 힘듭니다만 프로그램상 오류라면 ,,,) 아무튼 여러가지 해법들이 나와있는 포스트에 링크를 걸어 드리겠습니다.

Eclipse start Error 해결하기 (JVM terminated. Exit code=-1)

 빨간색 부분을 지우고 다시 이클립스를 실행합니다.



 실행이 되죠?



 Workspace 를 지정해 줍니다. 프로젝트들이 어느위치에 저장될 것인지를 지정하는 것입니다. 기본적으로는 위 경로로 저장이 되지만 따로 관리 할 것이라면 다른 폴더를 지정하셔도 됩니다.



위와 같이 멋진 화면이 뜨게 되고, 이클립스의 설치가 완료됩니다. ^^ 저도 이런 인터페이스는 처음 봐서 하나하나 써가야겠지만 기본적으로 [File] -> [New] -> [Project] 를 클릭해서 프로젝트를 만들어 자바 프로젝트를 관리 할 수 있습니다. 앞으로 자바를 이용해서 이것 저것 많이 만들어 봐야겠군요. 안드로이드도 자바 쓰던데 ㅎㅎ

아무튼 지금까지 이클립스(Eclipse) 설치 였습니다.


 이번 학기에 자바(JAVA)를 이용해서 검색 엔진 만드는 과제가 있어서 자바(Java)를 설치 했습니다. ( 포맷 한뒤에 설치를 안 했더라구요. ) 겸사 겸사 JAVA 개발 환경 설치과정을 하나하나 기록해 두었습니다. 일단 설치파일을 다운 받아야 합니다. 설치 파일은 썬 홈페이지에서 다운 받을 수 있습니다.

http://java.sun.com/



위 링크를 따라가면 위와 같은 홈페이지가 뜹니다. ( 이 포스트를 포스팅 할 때에는 이 모습이었습니다. 시간이 지나면서 업데이트가 되니 홈페이지가 달라도 뭐 상관은 없겠지요. ^^ ) 자바를 이용해서 개발을 할 때, 필요한 여러 제품들을 다운로드 받을 수 있습니다.



 Download 라는 메뉴의 Java SE 메뉴를 선택해서 들어갑니다. 그러면 Java SE 환경에 대한 페이지가 나옵니다. 여러가지 버젼이 있는데, 다른 것이 필요하시면 다운로드 받아서 설치하시면 됩니다.



JDK 6 Update 19 라는 항목의 버튼을 누릅니다. ( 나중에 더 높은 버전이 등록이 되면 그것을 선택하시면 됩니다. 제가 다운 받을 때에는 JDK 6 의 19번째 버전이군요. )




Download 버튼( 빨간색 )을 눌러 다운로드를 진행합니다. 윈도우가 기본적으로 선택되어 있네요. 만약 VM 웨어 등을 이용해 리눅스 환경에 설치를 하고 싶으시면, Platform 이라는 항목을 선택해서 해당 운영체제를 선택해주시면 됩니다. 윈도우를 쓰시는 분은 그대로 진행하시면 됩니다.



  전에는 못 보던 계정에 대한 언급이 나오네요. 밑에 조그맣게 링크되어 있는 "Skip this Step" 을 눌러 지나갑니다. 뭐 가입을 원하시는 분은 가입을 하시면 좋습니다. JAVA에 대한 뉴스도 메일로 보내주고, 다른 서비스들도 이용할 수 있기 때문이죠. 저는 가입 안했습니다. ( 귀찮아서 ㅎㅎ )



 파일을 저장하시면 됩니다. ( 저는 웹브라우저를 파이어폭스를 쓰기 때문에 이런 화면이 나옵니다. ) 익스플로러를 쓰시는 분들은 익숙한 창이 뜰 겁니다. ^^



 다운받은 파일을 실행해서 설치를 진행합니다.



별 다른 설정은 없고 그냥 다음을 계속 눌러서 진행을 하시면 됩니다. 다음 -> 다음 -> 다음 -> 다음 을 연타합니다. ^^ 세세한 설정은 자세히 읽어보시면 어렵지 않게 아실 수 있는 정도입니다. 이제 여러분의 컴퓨터에 자바 개발 환경이 설치되어 있습니다.

 그러면 환경 변수( Path )를 설정해 보도록 하겠습니다.

내 컴퓨터에서 우클릭을 한뒤 -> 속성을 들어갑니다. 그런 다음 고급 탭을 들어갑니다.





 환경변수 버튼을 클릭합니다.




 그러면 위와 같은 창이 뜨게됩니다. 사용자 변수와 시스템 변수 부분이 있습니다. 사용자 변수부분은 그대로 두고 시스템 변수부분을 손 보도록 하겠습니다. 시스템 변수 부분의 새로만들기 버튼을 클릭합니다.




그럼 다음과 같이 입력 창이 뜨게 됩니다.




변수 이름(N) 에는 "JAVA_HOME" 이라는 이름을 써 넣습니다. 그리고 변수 값(Y)에는 자바를 설치한 폴더 경로를 써 넣습니다. 기본 설정( 다음을 연타했다면 )을 했다면 다음과 같이 써 넣으시면 됩니다.


확인을 누르시면 다음과 같이 변수가 추가된것을 볼 수 있습니다.



 바로 밑에 Path라는 변수를 볼 수 있습니다. Path 변수를 선택하고 편집 버튼을 누릅니다.



위와 같은 시스템 변수 편집 창이 뜹니다. 변수 값 입력 부분을 클릭하고  ;%JAVA_HOME%\bin;  을 추가해 넣습니다. ( 이 때 앞에 세미콜론 ( ; ) 을 넣어 주어야 합니다. 각각 값들이 세미콜론에 의해서 구분되기 때문이죠.




 입력이 완료되면 위와 같은 모습일 것입니다. 확인을 눌러서 적용을 합니다. 확인을 계속 눌러서 적용을 합니다. 이제 여러분의 컴퓨터에 자바 개발 환경이 설치되었습니다.

 그러면 확인 작업을 해보도록 하겠습니다. [시작] -> [실행] 을 눌러서 cmd 라고 입력합니다.




그러면 검은색의 콘솔화면이 뜹니다.
콘솔 화면에 다음을 입력합니다.

C:\Document and Settings\Administrator> javac

그러면 다음과 같이 뜰겁니다.


자바 컴파일러에 대한 정보들이 뜨게 됩니다. 위 화면이 뜨면 성공적으로 설치가 완료 된 것입니다. 설치된 자바 버전을 보도록 하겠습니다.

C:\Document and Settings\Administrator> java -version

 위 명령어를 입력합니다.



이 처럼 나오면 성공적으로 자바 환경이 설치가 된 것입니다. 이제 Edit Plus 나 Eclipse 를 설치하면 됩니다.



+ Recent posts