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을 해결 했습니다.





안드로이드 개발 환경 구축하기 - 자바 개발환경 구축 ( JDK & Eclipse 설치하기 )


최근 스마트폰과 태블릿 같은 스마트 기기의 폭발적인 보급으로 스마트 기기에서 돌아가는 어플리케이션의 수요가 늘어나고 있습니다. 반짝이는 아이디어 하나만으로 엄청난 부를 창출 할 수 있는 떠오르고 있는 시장인데요. 특히 안드로이드의 경우엔 자바를 기반으로 하고 있기 때문에 비교적 쉽게 프로그래밍을 할 수 있습니다.



여러분의 컴퓨터에 안드로이드 프로그래밍을 할 수 있는 환경을 구축 할 수 있도록 가이드를 해드리겠습니다. 자바라는 프로그래밍 언어를 알아야 하지만 그렇게 어려운 언어는 아니니 여러분도 여러분만의 어플리케이션을 개발해 보세요 ^^


▶ 안드로이드 개발시스템 요구사항

안드로이드 어플리케이션을 개발하기 위해서 요구되는 소프트웨어의 버전들을 소개해주고 있는 페이지가 있습니다. 설치하기전에 여러분의 컴퓨터가 해당 요구사항들을 만족하는지 살펴 봅니다.

안드로이드 개발 시스템 요구사항

System Requirements - Android developer


우리말로 번역을 해드리자면,

운영체제

  • Windows XP (32-bit), Vista (32- or 64-bit), or Windows 7 (32- or 64-bit)
  • Mac OS X 10.5.8 or later (x86 only)
  • Linux (tested on Ubuntu Linux, Lucid Lynx)
    • GNU C Library (glibc) 2.7 or later is required.
    • On Ubuntu Linux, version 8.04 or later is required.
    • 64-bit distributions must be capable of running 32-bit applications. For information about how to add support for 32-bit applications, see the Ubuntu Linux installation notes.

운영체제는 윈도우즈 XP, Vista, 7 중에 하나라면 안드로이드 프로그래밍이 가능하십니다. 혹시 윈도우 98이나 ME를 아직도 사용하고 계신다면, 존경스럽습니다.

Supported Development Environments

Eclipse IDE

  • Eclipse 3.4 ( 가니메데 버전 혹은 그 이상 )
  • Eclipse JDT plugin ( Eclipse IDE Packages 포함 )
  • 만일 이클립스를 업데이트하거나 설치해야할 필요가 있을 경우, http://www.eclipse.org/downloads/ 에서 다운로드 받으실 수 있습니다.
     몇몇의 이클립스 패키지 타입들이 각 플랫폼에서 사용하실 수 있습니다. 안드로이드 어플리케이션을 개발하기 위해서 다음 패키지 중에 하나를 설치하는 것을 권장합니다.
    • Eclipse IDE for Java Developers
    • Eclipse Classic (versions 3.5.1 이상)
    • Eclipse IDE for Java EE Developers
  • JDK 5 or JDK 6 (JRE alone is not sufficient)
  • Android Development Tools plugin (recommended)
  • Not compatible with Gnu Compiler for Java (gcj)

그 밖에 개발 환경 및 IDE

  • JDK 5 or JDK 6 (JRE alone is not sufficient)
  • Apache Ant 1.8 or later
  • Not compatible with Gnu Compiler for Java (gcj)

뭐 이런것들이 있습니다. 참고 정도로만 알아두시고 차근 차근 따라오시면 안드로이드 어플리케이션 개발 환경을 구축 할 수 있습니다.




▶ 안드로이드 개발환경 설치 - 자바 개발환경 설치 ( JDK 설치 )

그럼 여러분의 컴퓨터에 자바 개발 환경을 설치해 보도록 하겠습니다. 참고로 이전에도 포스팅 한 적이 있지만 간략하게 다시 설명을 해드리겠습니다. 자세한 설명은 첫 번째 링크를 따라가시면 됩니다.

자바를 설치하기 위해 다음 링크를 따라가서 자바 개발환경 설치 파일을 다운로드 받아 실행합니다.

http://www.oracle.com/technetwork/java/javase/downloads/index.html





링크를 따라가면 위와 같은 홈페이지 화면이 나오는데, 가장 왼쪽에 있는 커피잔 모양의 버튼을 클릭합니다.





여러분이 지금 어떤 운영체제를 사용하고 있는지를 선택합니다. 저는 윈도우즈 7을 사용하고 있기 때문에 윈도우를 선택했습니다. 고르셨으면 약관에 동의하는지 묻는 체크박스를 클릭하고 "Continue"를 누릅니다. ( 약관은 한번 읽어 보세요. )




파일을 다운로드 할 수 있는 링크가 나옵니다. 클릭해서 다운로드 받고 실행을 시킵니다.





다음을 누르면서 설치를 진행합니다. ( 저도 이참에 새로운 버전으로 업데이트를 하게 되었네요. ㅎ )



▶ 안드로이드 개발 환경 설정 - 자바 환경 변수 설정

이제 자바 환경 변수를 설정해보도록 하겠습니다. 자바 프로그래밍을 할 때, 기본적인 명령어가 어디에 저장되어 있는 지를 알려주는 시스템 변수입니다. 즉, 자바 개발을 할 때, 사용하는 명령어가 저장되어 있는 디렉토리를 지정해주게 되는데요. 어렵지 않습니다.

윈도우 7의 경우 [제어판] -> [시스템 및 보안] -> [시스템]으로 들어가시면 다음과 같은 창이 뜹니다.



왼쪽에 있는 "고급 시스템 설정"을 선택합니다.



환경변수라는 버튼이 있습니다.
클릭해 봅니다.



시스템 변수 부분의 새로만들기를 클릭합니다. ( 아랫쪽의 버튼을 클릭합니다. )





변수 이름을 JAVA_HOME으로 하고, 변수 값을 아까전에 자바를 설치한 폴더를 입력해 줍니다. 다음을 연타하셨다면 위와 같은 경로가 될 것입니다. ( 1.6.0_24 라는 숫자는 자바 버전으로 해당 폴더에 가시면 어느 버전이 최신 버전인지 알 수 있습니다. )




시스템 변수 중에 Path라는 변수를 클릭한 다음 편집 버튼을 누릅니다. 그러면 이미 Path 로 등록이 되어 있는 것들을 볼 수 있습니다. 변수 값에 쓰여져 있는 것들을 건들지 말고, 맨 뒤에 ";$JAVA_HOME%\bin;"을 붙여 넣어줍니다. ( 이 때, 세미 콜론( ; )은 여러개의 값들을 구분해 주는 구분자입니다. )


설치가 잘 되었는지 확인을 해 보도록 하겠습니다.



[윈도우키] + R 을 눌러서 실행 창을 띄웁니다.
"CMD" 라는 명령어를 눌러서 커멘드창을 띄웁니다.




"Java -version" 이라는 명령어를 입력한 다음 엔터를 누릅니다. 그러면 여러분의 컴퓨터에 설치되어 있는 자바 실행환경의 버전정보를 알 수 있습니다. < 만약 정보가 안뜬다면 설치가 잘못 된 것일 수 있습니다. >




"javac" 라는 명령어를 입력한 다음 엔터를 누르면 위와 같은 화면이 뜨게 됩니다. 만일 자바 개발환경이 제대로 설치되지 않았다면, 찾을 수 없는 명령어 같은 안내가 나올 겁니다.



▶ 안드로이드 개발 환경 설정하기 - 이클립스 설치하기

그럼 이제 개발을 쉽게 할 수 있도록 도와주는 개발 툴인 이클립스를 설치해 보도록 하겠습니다. 이클립스는 별도의 설치가 필요하지 않고 그냥 홈페이지에서 다운로드 받아서 압축을 풀고 사용하기만 하면 됩니다.

이클립스 홈페이지로 갑니다.



홈페이지 우측에 Download Eclipse 라는 버튼이 있습니다. 클릭해서 다운로드 받을 수 있는 페이지로 갑니다.



여러개의 다운로드 받을 수 있는 패키지가 있습니다. 2번째 것인 Eclipse IDE for Java EE Developers 를 다운 받겠습니다. 우측에 다운로드 받을 수 있는 링크가 있습니다. ( 붉은색 네모 )

Windows 32 Bit 를 클릭해서 진행합니다. ( 여러분의 컴퓨터가 64 비트 컴퓨터라면 64 비트 를 클릭하시기 바랍니다. )



다운로드 버튼을 눌러서 이클립스 파일을 다운로드 받습니다.




다운로드 받은 압축 파일의 압축을 풉니다.




압축을 해제한 폴더를 들어가시면 위와 같이 되어 있을 겁니다. 그 중에서 eclipse.exe 를 실행하시면, 개발 툴인 이클립스를 실행하실 수 있습니다.

이클립스까지 설치하셨으면, 범용 컴퓨터를 위한 자바 프로그램도 개발이 가능합니다. 안드로이드 개발 환경은 조금 더 손을 봐야 합니다. 글이 너무 길어졌으니, 한 타이밍 쉬고, 다음 포스트에서 이어가겠습니다. ㅎ



[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는 자바 언어의 문법을 그대로 이용하고 있기 때문에 기존의 자바스타일의 주석도 이용할 수 있습니다. 자바 스타일의 주석에는 두 가지가 있는데,


// 한 줄 짜리 자바 주석

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


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

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




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



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

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



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


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

'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 학습 추천 도서






 여러분은 레고를 아시나요? 블럭 장난감으로 제가 어렸을 때, 많이 가지고 놀던 기억이 있습니다. 기본적인 블럭을 가지고 만들 수있는 작품이 무궁무진해서 어린이들의 상상력 개발에도 도움이 되는데요. 특히 레고 마을이라는 곳도 있어서 레고로 여러가지 작품들을 만들고, 심지어 마을하나를 레고 블럭을 이용해서 만들어 놓은 곳도 있습니다.

Zombie Apocafest 2008 - Overall
Zombie Apocafest 2008 - Overall by Dunechaser 저작자 표시비영리동일조건 변경허락

 오늘 소개해드릴 동영상은 이 레고블럭을 이용해서 프린터를 만들어 놓은 영상입니다. 일단 한번 보시죠.



자세히 보시면 잉크젯이 아니라 끝에 싸인펜을 달아 놓고 점을 하나하나 찍는 방식입니다. 어떻게 구현했는지, 또 어떻게 만들었는지 모르겠지만 정말 대단하네요. 요즘에 레고와 JAVA를 이용해서 로봇을 만드는 세트도 있던데 정말 비싸더군요. ㅎㄷㄷ. 아무튼 저도 레고로 로봇 한번 만들어 보고 싶네요. ^^






+ Recent posts