달력

92021  이전 다음

  •  
  •  
  •  
  • 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
  •  
  •  
안녕하세요.
이번 글은 조금 어려울 수도 있습니다. 미리 겁주는 것이지요.
클래스 파일을 이용해서 JSP를 조금 가볍게 만들어 주는 것이 이 글의 목표입니다.

마지막에 사용했던 소스를 가져와서 예를 들겠습니다.
getRow(int i, int j) 메소드를 Math.java 클래스의 메소드로 만들겠습니다.
Math.java의 패키지명은 net.okjsp.study 로 하겠습니다.
마침표(.)로 구분된 각각의 단어는 디렉토리를 의미합니다.
관습적으로 도메인과 연관지어서 큰 단위부터 작은 업무단위로 명명합니다.

메소드는 static 으로 만들겠습니다.
static 메소드란 것에 대해서 일단 공용으로 쓰는 메소드라고
쉽게 생각하시면 좋겠습니다. JSP 소스코드는 다음과 같이 변합니다.

<소스 1> multiTableImport.jsp 내용
<%@page import="net.okjsp.study.Math" %>
구구단입니다. <br />
<%
  // i: 단 변수
  for (int i = 2; i <= 9; i++) {
       // j: 곱수
       for (int j = 2; j <= 9; j++) {
%>
<%= Math.getRow(i, j) %>
<%
       }  // end for j
%><hr />
<%
  } // end for i
%>

JSP에 사용되는 java 파일은 다음과 같습니다. import 당했죠.

<소스 2> Math.java 내용
package net.okjsp.study;

public class Math {
  public static String getRow(int i, int j) {
       return i + " x " + j + " = " + (i * j) + "<br />";
  }
}



이제 문제의 시작입니다. 이 java 파일을 컴파일해서 class로 만들어야 됩니다.
JSP파일은 톰캣이 알아서 서블릿으로 만들고 컴파일했지만, 헉, 언제 그런 일이 생겼냐구요?
이 다음 글에 JSP의 비밀에서 얘기해드릴께요. 일단 class 일병 구하기를 진행하죠.

java파일을 컴파일하기 위해서는 javac파일이 필요합니다. 이 컴파일러는 jdk가 깔려있는 디렉토리 하위에 있는 bin (빈 디렉토리가 아니고 binary파일들이 모여있어서 bin입니다.) 아래에 javac.exe 파일을 확인할 수 있습니다. JRE에는 없습니다. 그래서 제가 설치하기에서 JRE 보다 JDK를 권했습니다.

그럼 Math.java 파일은 어디에 놓을까요. 관례상 ROOT/WEB-INF/src 디렉토리를 만들고,
여기 아래 패키지에 따라 디렉토리를 추가한 후 java 파일을 놓아둡니다.
그럼 컴파일은 어떻게 할까요?
다음과 같은 순서로 컴파일 할 수 있습니다.

시작 > 실행(R)... > cmd

까만 커맨드 창이 뜰 것입니다.

<실행 1> Math.java 파일 컴파일

C:\Documents and Settings\HeoGwangNam>cd "C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\ROOT\WEB-INF\src\net\okjsp\study"

C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\ROOT\WEB-INF\src\net\okjsp\study>"C:\Program Files\Java\jdk1.5.0_10\bin\javac.exe" -d "C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\ROOT\WEB-INF\classes" Math.java

경로를 이동합니다.
javac Math.java
컴파일 되었나요? 조마조마. 탐색기로 classes 하위 디렉토리로 가보면 Math.class 파일이 보입니다.

클래스 컴파일 결과

클래스 컴파일 결과


이제 브라우저에서 확인해 봅시다.
답 나왔나요?

한 가지 더 설명하려고 합니다. java.lang.Math 라는 기본 클래스가 있습니다.
파일명이 같은 클래스인 net.okjsp.study.Math 파일은 패키지명으로 구분이 됩니다.
java1.4 부터 패키지 없는 클래스에 대해서 왕따시키기 시작했습니다.
package 라인이 없는 java 파일은 여러분의 작업에 누를 끼칠 수도 있습니다.

조금 어려우셨을 겁니다. 그러나 걱정마세요. 자꾸 반복해서 나오는 내용입니다.
반복하다 보면 이해도 가고, 머리 속에 새겨질 겁니다.
힘들여 배운 지식은 잘 잊어먹지도 않습니다.

그럼 다음 글에서는 JSP의 숨겨진 비밀, 그 탄생 신화에 대해 알아보겠습니다.

Posted by 케누 kenu허광남
TAG

댓글을 달아 주세요

  1. 초보  댓글주소 수정/삭제 댓글쓰기 2007.02.18 06:54

    저기 kenu님 열심히 따라해봤는데요...

    An error occurred at line: 9 in the jsp file: /multiTableImport.jsp
    The method getRow(int, int) is undefined for the type Math
    6: // j: 怨깆닔
    7: for (int j = 2; j <= 9; j++) {
    8: %>
    9: <%=Math.getRow(i, j)%>
    10: <%
    11: } // end for j
    12: %><hr />


    이런 에러가 뜨는데 제가 뭘 잘못한거죠? 지적좀 부탁드리겠습니다.
    분명 src\net\okjsp\study 라는것도 만들었구요
    classes 라는 폴더도 만들었습니다. 그런 후에..

    "C:\Program Files\Java\jdk1.5.0_10\bin\javac.exe" -d "C:\Program Files\Apache Software Foundation\Tomcat 6.0webapps\ROOT\WEB-INF\classes" Math.java

    이 명령어도 넣어 줬구요. 그럼 클래스 파일도 만들어진걸 제 눈으로 확인두 했습니다.
    전 그냥 ROOT 폴더에 multiTableImport.jsp 이 파일 넣고 실행했는데 설마.... 다른폴더에
    넣어야 하는건가요? 엌 그렇다면 제가 실수 한거구요 지적 부탁드립니다.

  2. 케누 kenu허광남  댓글주소 수정/삭제 댓글쓰기 2007.02.21 10:44 신고

    Tomcat 6.0webapps -> Tomcat 6.0\webapps

  3. 케누 kenu허광남  댓글주소 수정/삭제 댓글쓰기 2007.02.21 10:45 신고

    강좌 오타네요. ^^
    감사합니다.

  4. 하루  댓글주소 수정/삭제 댓글쓰기 2007.04.11 02:48

    저도 kenu님꺼랑 똑같이 쳤는데도
    cannot read: Math.java 란 에러가 뜹니다
    에디터에서 컴파일해도 컴파일이 먹지 않더군요
    글이 올라온지 좀되셔서 답변 받을수 있을지 모르겠네요^^;

  5.  댓글주소 수정/삭제 댓글쓰기 2008.05.13 14:45

    저도 왜 안되나 한참 고민했네요 ;;
    <@ page import= 문이 문서 최상단에 위치해야만 인식하더군요.
    이클립스에서 자동으로 생성해주는 <@page language ~~~ 보다도 위에 있어야 합니다.

    저의 경우는 그랬습니다 ^^;

  6. shyjune  댓글주소 수정/삭제 댓글쓰기 2008.08.25 17:08 신고

    Math.java:1: 'class' or 'interface' expected
    癤퓈ackage net.okjsp.study;
    ^
    1 error

    이런 에러는 뭘까요??? -_-;;;