Posted
Filed under JSP, JAVA
첨부파일 : 압축해제후 log4j-1.2.14.jar 파일을
JDK설치된 폴더의 lib/ext 디렉토리에 카피후
프로젝트 properties 의 Java Build Path >
Library > Add External Jars ... 에서 추가시킴



LOG4J

I. 들어가면서.. 그리고 log4j


log4j는 자바 어플리케이션에서 빠르고 효과적으로 로깅 할 수 있도록 도와주는 오픈 소스 프로젝트입니다.


로깅(logging)은 코드의 가독성을 떨어뜨리는 단점이 있지만 애플리케이션에 문제가 있을 때 개발자가 자세한 상황을 파악할 수 있도록 해 주며 테스팅시 빠질 수 없는 요소입니다.


아마도 여러분들은 여러 어플리케이션이 추가되면서 각 개발자들만의 독특한 로깅방식이 서로 썩이고 얽혀서 화면에 나타나는것을 많이 봤을겁니다 -_-;
즉 로깅방법을 통일할 필요가 있는것이죠. 모든 개발자가 특정 포맷에 맞추어서 로깅 한다면 한결 로깅하기도 편하겠지요


오픈 소스 프로젝트인 Log4j는 개발자들이 매우 손쉽고 다양한 형태로 로깅을 할 수 있도록 도와줍니다. 성능또한 우수해 더이상 System.out.println을 사용할 필요가 없습니다.



II. 다운로드


다운로드 http://logging.apache.org/log4j/docs/download.html

매뉴얼 http://logging.apache.org/log4j/docs/documentation.html

API spec http://logging.apache.org/log4j/docs/api/index.html



III. LOG4J 구조


일단 log4j를 잘 모르지만 그 구조만 살짝 살펴보고 넘어갑시다

log4j는 크게 3가지 요소로 구성되며 그 구조는 다음과 같습니다

① Logger(Category) : 로깅 메세지를 Appender에 전달합니다.

② Appender : 전달된 로깅 메세지를 파일에다 기록할 것인지, 콘솔에 출력할 것인지

                   아니면 DB에 저장할 것인지 매개체 역활을 합니다.

③ Layout : Appender가 어디에 출력할 것인지 결정했다면 어떤 형식으로 출력할 것이지

                출력 layout을 결졍합니다.

쉽죠?



IV. LOG4J 로깅 레벨


log4j는 다양한 로깅레벨을 지원합니다.


① FATAL : 가장 크리티컬한 에러가 일어 났을 때 사용합니다.

② ERROR : 일반 에러가 일어 났을 때 사용합니다.

③ WARN : 에러는 아니지만 주의할 필요가 있을 때 사용합니다.

④ INFO : 일반 정보를 나타낼 때 사용합니다.

⑤ DEBUG : 일반 정보를 상세히 나타낼 때 사용합니다.


만약 로깅 레벨을 WARN 으로 설정하였다면 그 이상 레벨만 로깅하게 됩니다.

즉 WARN, ERROR, FATAL 의 로깅이 됩니다.



V. 샘플코드 1


jsp에서 사용하는 예제가 없어 만들어 봤습니다.


test.jsp


<%@ page contentType="text/html;charset=MS949"
 import="org.apache.log4j.Logger" %>

<%!
 static Logger logger = Logger.getLogger("test.jsp");
%>

<%
logger.fatal("fatal!!");

logger.fatal("fatal2!!", new NullPointerException("널입니다요"));

logger.error("error!", new NumberFormatException());

logger.error("error!2");

logger.warn("warn");

logger.info("info");

logger.debug("debug");
%>


결과 콘솔화면








static Logger logger = Logger.getLogger("test.jsp");

static 메소드 getLogger를 통해 logger 인스턴스를 가져옵니다.
getLogger에는 파라미터로 스트링 혹은 클래스를 사용하는데 jsp에서는 클래스를 파라미터로 주기에는 좀 애매합니다. 그냥 스트링으로 주도록 하지요


logger.fatal("fatal!!");
logger.fatal("fatal2!!", new NullPointerException("널입니다요"));
  
logger에 fatal 레벨의 메세지를 전달합니다. 다음 두가지 메소드를 지원하는군요

fatal(Object message)

fatal(Object message, Throwable t)

각 레벨마다 위처럼 두가지 메소드를 지원합니다.


지원 메쏘드
logger.fatal(Object message) logger.fatal(Object message, Throwable t)
logger.error(Object message) logger.error(Object message, Throwable t)
logger.warn(Object message) logger.warn(Object message, Throwable t)
logger.info(Object message) logger.info(Object message, Throwable t)
logger.debug(Object message) logger.debug(Object message, Throwable t)


VI. 샘플코드 2


서블릿의 경우 다음과 같이 코딩하면 되겠군요

TestServlet.java


import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class TestServlet extends HttpServlet {


    static Logger logger = Logger.getLogger(TestServlet.class);


    public void init(ServletConfig config) throws ServletException {
         super.init(config);
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

         try {
              ...
   
              logger.info("Hellow World~");

              ...

          } catch (Exception e) {
              logger.error("Error at TestServlet", e);
          }
     }
}



VII. LOG4J 설정


log4j 설정은 프로그램 내에서 할 수 있지만 설정파일을 사용함으로서 좀더 유연하게 log4j환경을 만들 수 있습니다.


프로그램에서 설정

<%@ page contentType="text/html;charset=MS949"
 import="org.apache.log4j.*,java.io.* "
%>

<%!
 static Logger logger = Logger.getLogger("log4j.jsp");
%>

<%
String layout = "%d %-5p [%t] %-17c{2} (%13F:%L) %3x - %m%n";
String logfilename = "DailyLog.log";
String datePattern = ".yyyy-MM-dd ";

PatternLayout patternlayout = new PatternLayout(layout);
DailyRollingFileAppender appender = new DailyRollingFileAppender(patternlayout, logfilename, datePattern);
logger.addAppender(appender);
logger.setLevel(Level.INFO);
logger.fatal("fatal!!");
%>


property 파일에 설정
log4j.properties를 만들어 /WEB-INF/classes 밑에 놓으세요



log4j.rootLogger=INFO, stdout, rolling

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d %-5p [%t] %-17c{2} (%13F:%L) %3x - %m%n

log4j.appender.rolling=org.apache.log4j.DailyRollingFileAppender

log4j.appender.rolling.File=output.log

log4j.appender.rolling.Append=true

log4j.appender.rolling.MaxFileSize=500KB

log4j.appender.rolling.DatePattern='.'yyyy-MM-dd

log4j.appender.rolling.layout=org.apache.log4j.PatternLayout

log4j.appender.rolling.layout.ConversionPattern=%d %-5p [%t] %-17c{2} (%13F:%L) %3x - %m%n


#최상위 카테고리에 INFO로 레벨 설정 및 appender로 stdout, rolling을 정의

log4j.rootLogger=INFO, stdout, rolling

#stdout 어펜더는 콘솔에 뿌리겠다는 정의

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

#stdout 어펜더는 patternlayout을 사용하겠다는 정의

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

#페턴은 다음과 같이 포맷팅 하겠다는 것을 정의

log4j.appender.stdout.layout.ConversionPattern=%d %-5p [%t] %-17c{2} (%13F:%L) %3x - %m%n


#역시나 rolling 어펜더는 파일로 처리한다라고 정의

log4j.appender.rolling=org.apache.log4j.DailyRollingFileAppender

#로그 파일 이름은 output.log

log4j.appender.rolling.File=output.log

#true면 톰캣을 내렸다 올려도 파일이 리셋되지 않습니다.

log4j.appender.rolling.Append=true

#파일 최대 사이즈는 500KB로 설정

log4j.appender.rolling.MaxFileSize=500KB

#파일 포맷은 output.log.2005-03-10 으로 관리하겠다고 정의

log4j.appender.rolling.DatePattern='.'yyyy-MM-dd

#역시나 rolling 어펜더는 패턴 레이아웃을 사용하겠다고 정의

log4j.appender.rolling.layout=org.apache.log4j.PatternLayout

#rolling 어펜더는 패턴 레이아웃 포맷

log4j.appender.rolling.layout.ConversionPattern=%d %-5p [%t] %-17c{2} (%13F:%L) %3x - %m%n



VIII. 설정 포맷


로그파일명 포맷 (DatePattern)
로그파일명 포맷입니다. 날짜, 시간 및 분단위로까지 로그 파일을 분리할 수 있습니다.

형식 설명
'.'yyyy-MM 매달 첫번째날에 로그파일을 변경합니다
'.'yyyy-ww 매주의 시작시 로그파일을 변경합니다.
'.'yyyy-MM-dd 매일 자정에 로그파일을 변경합니다.
'.'yyyy-MM-dd-a 자정과 정오에 로그파일을 변경합니다.
'.'yyyy-MM-dd-HH 매 시간의 시작마다 로그파일을 변경합니다.
'.'yyyy-MM-dd-HH-mm 매분마다 로그파일을 변경합니다.



PatternLayout 포맷
로그자체를 어떤 포맷으로 남길지 결정합니다.
layout에는 HTMLLayout, PatternLayout, SimpleLayout, XMLLayout등이 있으며 PatternLayout이 일반적으로 가장 많이 쓰입니다.


형식 설명
%p debug, info, warn, error, fatal 등의 priority 가 출력된다.
%m 로그내용이 출력됩니다
%d 로깅 이벤트가 발생한 시간을 기록합니다.
포맷은 %d{HH:mm:ss, SSS}, %d{yyyy MMM dd HH:mm:ss, SSS}같은 형태로 사용하며 SimpleDateFormat에 따른 포맷팅을 하면 된다
%t 로그이벤트가 발생된 쓰레드의 이름을 출력합니다.
%% % 표시를 출력하기 위해 사용한다.
%n 플랫폼 종속적인 개행문자가 출력된다. \r\n 또는 \n 일것이다.
%c 카테고리를 표시합니다
예) 카테고리가 a.b.c 처럼 되어있다면 %c{2}는 b.c가 출력됩니다.
%C 클래스명을 포시합니다.
예) 클래스구조가 org.apache.xyz.SomeClass 처럼 되어있다면 %C{2}는 xyz.SomeClass 가 출력됩니다
%F 로깅이 발생한 프로그램 파일명을 나타냅니다.
%l 로깅이 발생한 caller의 정보를 나타냅니다
%L 로깅이 발생한 caller의 라인수를 나타냅니다
%M 로깅이 발생한 method 이름을 나타냅니다.
%r 어플리케이션 시작 이후 부터 로깅이 발생한 시점의 시간(milliseconds)
%x 로깅이 발생한 thread와 관련된 NDC(nested diagnostic context)를 출력합니다.
%X 로깅이 발생한 thread와 관련된 MDC(mapped diagnostic context)를 출력합니다.

예시) (같은 색끼리 보시면 됩니다)

위의 test.jsp를 다음 포맷으로 출력해본다면

[%c] [%C] [%d] [%F] [%l] [%L] [%m] [%M] [%n] [%p] [%r] [%t] [%x] [%X]는 다음과 같다

[test.jsp] [org.apache.jsp.test_jsp] [2005-03-10 12:37:23,561] [test_jsp.java] [org.apache.jsp.test_jsp._jspService(test_jsp.java:64)] [64] [fatal!!] [_jspService] [개행] [FATAL] [765567] [http-8080-Processor25] [] []


=============================================

본문서는 자유롭게 배포/복사 할수 있지만

이문서의 저자에 대한 언급을 삭제하시면 안됩니다

저자 : GoodBug (unicorn@jakartaproject.com)

최초 : http://www.jakartaproject.com 

2010/01/19 15:18 2010/01/19 15:18
Posted
Filed under JSP, JAVA

한글 처리를 하기 위해서 RequestProcess 를 상속 하여 넘어 오는 모든 Request 에 대해서
UTF-8 인코딩 처리를 하면,
javax.servlet.ServletException: TilesPlugin : Specified RequestProcessor not compatible with TilesRequestProcessor
        at org.apache.struts.tiles.TilesPlugin.initRequestProcessorClass(TilesPlugin.java:360)
        at org.apache.struts.tiles.TilesPlugin.init(TilesPlugin.java:164)
        at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:1158)
        at org.apache.struts.action.ActionServlet.init(ActionServlet.java:473)
        at javax.servlet.GenericServlet.init(GenericServlet.java:258)

와 비슷한 ERROR 메시지가 발생 한다.
API를 찾아 보니 ..

TilesRequestProcessor 라구 Tiles 를 위한 RequestProcessor가 존재 한다.
그럼으로,, TilesRequestProcessor 를 상속 하여 구현 하면 끝..

package com.ubibada.lms.struts;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.RequestProcessor;
import org.apache.struts.tiles.TilesRequestProcessor;

public class DefaultRequestProcessor extends TilesRequestProcessor {
 @Override
 protected boolean processPreprocess(HttpServletRequest request,HttpServletResponse response) {
  try {
   request.setCharacterEncoding("UTF-8");
   return true;
  } catch (Exception e) {
   return false;
  }
 
 }//end function
}

이런식으로
import org.apache.struts.tiles.TilesRequestProcessor;  한 후 상속 하여 구현 하면 된다.
관련 APi
http://struts.apache.org/1.x/struts-tiles/apidocs/org/apache/struts/tiles/TilesRequestProcessor.html

public class TilesRequestProcessor
extends org.apache.struts.action.RequestProcessor

RequestProcessor contains the processing logic that the Struts controller servlet performs as it receives each servlet request from the container.

This processor subclasses the Struts RequestProcessor in order to intercept calls to forward or include. When such calls are done, the Tiles processor checks if the specified URI is a definition name. If true, the definition is retrieved and included. If false, the original URI is included or a forward is performed.

Actually, catching is done by overloading the following methods:  <-- 즉  이거를 상속 해서 구현 하라고 함..


2010/01/19 14:56 2010/01/19 14:56
Posted
Filed under JSP, JAVA

한글을 사용 하기 위해서는 char-set을 utf-8로 설정을 해야 한다.
한글 처리를 하기 위해서 작성한 클래스  이며
RequestProcessor  를 상속 한 후
processPreprocess 메소드를  재정의 하여 구현 하였다.


package com.ubibada.lms.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.RequestProcessor;


public class defaultRequestProcessor extends RequestProcessor {
 @Override
 protected boolean processPreprocess(HttpServletRequest request,HttpServletResponse response) {
  try {
   request.setCharacterEncoding("UTF-8");
   return true;
  } catch (Exception e) {
   return false;
  }
 
 }//end function
}

2010/01/16 21:50 2010/01/16 21:50
Posted
Filed under JSP, JAVA
<struts-config>
  <form-beans>
  <global-exceptions />
  <global-forwards />
  <action-mappings />
  <message-resources />
</struts-config>

순서대로 struts-config.xml 파일에 선언 하여 사용 해야 한다.
선언 하는 순서가 다르더라도 동작은 하지만
오류가 발생 함으로 반드시 1.3에서는 struts-confg파일 선언 순서를 지켜서 사용 해야 한다.


2010/01/16 21:18 2010/01/16 21:18
Posted
Filed under JSP, JAVA

이클립스가 설치 되어 있다는 전재 하에  진행 한다.

==> struct 2 다운받기
http://struts.apache.org/download.cgi?Preferred=http%3A%2F%2Fmirror.korea.ac.kr%2Fapache

2010. 01. 08 기준으로 struct 2 최신 버전 임.
 3번 째 struct-2.1.8.1-lib.zip 파일을 다운 받는다. 별 이유 없으며, 라이브러리 파일만
사용하기 위해서 선택 함 .
  • Release Notes
  • Full Distribution:
  • Example Applications:
  • Essential Dependencies Only:
  • Documentation:
  • Source:

  • 압축을 풀면 라이브러리 가 보이며, 다 필요 한 것은 아니다.
    struct에서 기본적으로 필요한 아래 일 들만 eclips에 include 하자.


     

     <--아래 파일 들을 압축 해 놓은 파일


    commons-fileupload-1.2.1.jar
    commons-io-1.3.2.jar
    freemarker-2.3.15.jar
    ognl-2.7.3.jar
    struts2-core-2.1.8.jar
    xwork-core-2.1.6.jar
    위의 파일들을 WebContent/WEB-INF/lib 에 복사를 한다.


    filter 등록(WebContent\WEB-INF/web.xml 파일 수정)

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
      <display-name>jsp</display-name>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>

     <filter>
      <filter-name>struts2</filter-name>
      <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
     </filter>
     
     <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>*.action</url-pattern>
     </filter-mapping>

     <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/struts/*</url-pattern>
     </filter-mapping>

    </web-app>


    2.x 버전 부터 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    로 수정 되었음
    자세한 내용은
    http://cwiki.apache.org/S2WIKI/troubleshooting-guide-migrating-from-struts-20x-to-21x.html
    확인 할 수 있으며, 삽질 방지를 위해서 꼭 확인 해야 한다.

    sruts.xml , struts.properties생성
    파일은 Eclips 의 src 폴더에 생성 한다.

    사용자 삽입 이미지

























    struts.xml 내용

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> 
     
    <struts> 
        <package name="default" extends="struts-default" namespace="">
         <action name="main">
          <result>/index.jsp</result>
         </action>

        </package>
    </struts>  


    struts.properties내용

    truts.i18n.reload=true 
    struts.devMode = false 
    struts.configuration.xml.reload=true 
    struts.continuations.package = org.apache.struts2.showcase  
    struts.custom.i18n.resources=globalMessages 
    #struts.action.extension=jspa 
    struts.url.http.port = 8080 
    #struts.freemarker.manager.classname=customFreemarkerManager 
    struts.serve.static=true 
    struts.serve.static.browserCache=false 
    struts.multipart.maxSize=2097252



    *.src 폴더에 파일들을 생성 하면 컴파일 시
    WebContent/WEB-INF/classes  하위에 생성 된다.

    * 마지막으로 2.0 이전 버전과 최신 버전인 2.1.8에서 설정시 차의 점은
     필터가 변경 되었다느게 가장 중요 하다.. 꼭 릴리스 노트를 확인 해 봐야 한다.

    2010/01/08 20:15 2010/01/08 20:15
    Posted
    Filed under JSP, JAVA


    JDBC 연동 커넥터 파일을

    Eclips에 추가 한후


    DBControl dbcon = new DBCOntrol();
    테스트 해볼 수 있다.


    import java.sql.*;

    public class DBControl {
     private String DB_ID="DB_ID";
     private String DB_SID="SID";
     private String DB_PASS="DB_PASSWD";
     private String DB_ADDRESS="IP_ADDRESS";
     private Statement stmt;
     private Connection conn=null;
     private String error_message="";

     public DBControl(){
      try{
       Class.forName("oracle.jdbc.driver.OracleDriver");
       conn = DriverManager.getConnection(StringDBControl(),DB_ID,DB_PASS);
       stmt = conn.createStatement();
      }catch(Exception e){
       System.out.println(e.getMessage());
      }
     }
     
     private String StringDBControl(){
      String ConnectionString="jdbc:oracle:thin:@"+DB_ADDRESS+":1521:";
          ConnectionString+=DB_SID;
      return ConnectionString;
     }
     
     //for inser, delete, update
     public Boolean execute(String sql){
      Boolean _is=false;
      try{
       _is=stmt.execute(sql);
      }catch(SQLException e){
       error_message = e.getMessage();
      }
      return _is;
     }
     
     //for select
     public ResultSet executeQuery(String sql){
         ResultSet rs=null;
         try{
       rs = stmt.executeQuery(sql);
      }catch(SQLException e){
       error_message = e.getMessage();
      }
      return rs;
     }
     
     public String getErrorMessage(){
      return error_message;
     }
    }

    2010/01/07 20:28 2010/01/07 20:28
    Posted
    Filed under JSP, JAVA
    Class SimpleDateFormat
    [api]http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html
    java.lang.Object
    extended byjava.text.Format extended byjava.text.DateFormat extended byjava.text.SimpleDateFormat
    //오라클에 날짜를 입력 하기 위해서
    년월일,년월일시분초 형태로 varchar2 형 날짜 형태를 얻기 위해서 만든 util클레스.
    아래 표는 api에 있는 것이며, 다른 형태로 가공 하여 사용 할 수있다.
    Letter Date or Time Component Presentation Examples
    G Era designator Text AD
    y Year Year 1996; 96
    M Month in year Month July; Jul; 07
    w Week in year Number 27
    W Week in month Number 2
    D Day in year Number 189
    d Day in month Number 10
    F Day of week in month Number 2
    E Day in week Text Tuesday; Tue
    a Am/pm marker Text PM
    H Hour in day (0-23) Number 0
    k Hour in day (1-24) Number 24
    K Hour in am/pm (0-11) Number 0
    h Hour in am/pm (1-12) Number 12
    m Minute in hour Number 30
    s Second in minute Number 55
    S Millisecond Number 978
    z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
    Z Time zone RFC 822 time zone -0800



    package LMS.UTIL.TIME;
    import java.util.Date;
    import java.text.*;

    public class DATETIME {
     public static Date now = new Date();
     public static SimpleDateFormat sdf;
     
     //return type : 20100101
     public static String getDate_YYMMDD(){
      sdf = new SimpleDateFormat("yyyyMMdd");
      return sdf.format(sdf);
     }
     
     //return type : 201001011820
     public static String getDate_YYMMDDHHMMSS(){
      sdf = new SimpleDateFormat("yyyyMMddHHmmss");
      return sdf.format(sdf);
     }
    }
    2010/01/05 10:46 2010/01/05 10:46
    Posted
    Filed under JSP, JAVA
    [출처]: http://ghostsai.tistory.com/14
    이클립스 3.5.1(GALILEO) + TOMCAT 6 연동

    1. 이클립스 및 플러그인 받기

    이클립스 득탬 주소 : http://www.eclipse.org/downloads
    이클립스용 톰캣 플러그인 득탬 주소 : http://www.eclipsetotale.com/tomcatPlugin.html

    Eclipse IDE for Java EE Developers 에는 기본적으로 톰캣 연동 플러그인이 존재 하지만
    잘쓰면 편하지만 불편한점도 없지 않아 사용 하기 편한 다른 플러그인을 사용 하겠습니다.




    2. 이클립스 압축 풀기

    이클립스를 다운 받게 되면 패키지가 압축 되어져 있습니다.
    해당 파일을 압축 해제하시면 바로 사용 하실수 있습니다.




    3. 이클립스용 톰캣 연동 플러그인 받기 및 압축 해제

    이클립스와 마찬가지로 사이트에 방문 하셔서 해당 이클립스에 맞는 연동 플러그인을 받으시면 됩니다.


    해당 사이트에 방문하시면 마지막으로 올라온 패키지를 받으시면 됩니다.
    원래는 이 모듈은 이클립스 버전 3.2.1 에 맞춰져 나왔으나 3.2.1 이후 버전에는 다 먹히 더라구요. ^^


    해당 파일을 받으시구요... 받아 보시면 아래와 같은 파일명을 가지고 있습니다.
    이것도 압축 해제해 주세요...



    압축 해제 하시면 두개의 폴더가 생깁니다.
    이제 부터 이클립스 셋팅을 해보겠습니다.



    4. 이클립스 플러그인 추가

    앞축 해제 하셨으면 본격적으로 플러그인을 삽입해 보겠습니다.
    이클립스 압축 해제한 폴더에 보시면 "eclipse" 라는 폴더가 있습니다.
    해당 폴더를 잘라내기 하셔서 C: 나 D: 에 적당한 곳에 붙여 넣기 하세요.
    이클립스는 패키지를 설치 하지 않고 그냥 사용 할수 있습니다.
    "eclipse" 폴더에는 아래와 같은 폴더들과 파일들이 있습니다.


    적당 한곳에 복사를 하셨으면 이제 플러그인을 넣어 보겠습니다.
    톰캣 연동 플러그인을 압축 해제 하시면 생기는 "com.sysdeo.eclipse.tomcat_3.2.1" 디렉토리를
    그대로 "eclipse\plugin" 에 복사해 넣어 주세요.


    이렇게 해 주시면 절반 이상이 끝났습니다.





    5. 이클립스 시작
    복사가 다끝나셨으면 이클립스를 실행해 봅시다...
    "eclipse.exe" 를 실행 하시면 되겠죠... ^^


    실행 하시면 뒤와 같은 로고가 뜨면서 이클립스를 실행 하게 됩니다.
    프로그램 창이 뜨기 전에 workspace 를 지정 하는 팝업창이 뜨는데요.
    기본적인 이클립스의 작업 공간을 지정 하는 것입니다.
    어차피 새로운 디렉토리를 생성하여 프로젝트를 불리 할것이기 때문에 그냥 디폴트로 설정 해주시고.
    시작할때 다시 창이 뜨지 않도록 하기위해 체크박스를 체크해주시고 OK 눌러주세요.


    이작업이 끝나시면 아래와 같은 창이 뜹니다.
    웰컴페이지이기 때문에 그냥 "Welcome" 탭을 닫아 주세요..


    톰캣 플러그인이 제대로 복사가 되었다면 아래와 같은 아이콘 세개가 나와야 합니다.
    나타나지 않는다면 플러그인 폴더가 정확히 복사 되어 있는지 확인 해주시기 바랍니다.






    6. 톰캣 연동 설정

    플러그인이 설치 완료 된것을 확인 하셨으면 이제 연동 설정을 해 보도록 하죠..
     


    "Window > Preferences" 를 클립합니다.


    "Preferences" 창의 좌측 트리의 중간쯤 보시면 "Tomcat"이라는 탭이 있습니다.
    클릭 하셔서 위와 같이 해당 PC에 설치 되어져 있는 Tomcat의 버전과 디렉토리를 지정해 줍니다.
    Tomcat Version 과 Tomcat Home 을 지정해 주세요.
    저 같은 경우 톰캣 6.0이 설치 되어 있고 설치된 디렉토리가 C:\tomcat 6.0 에 되어 있어 위와 같이 설정 하였습니다.
    이렇게 하면 연동 설정은 끝났습니다.



    7. 연동 테스트(프로젝트 생성)

    연동이 잘되었는지 테스트 해보도록 하겠습니다.


    이클립스 창의 왼쪽에 있는 Project Explorer 에서 마우스 우클릭 하시면 위와 같이 실행해 주세요.


    "New" 창이 뜨시면 JAVA > Tomcat Project 를 클릭하시고 Next 클릭 합니다.


    Project name 을 입력 하시고 프로젝트의 모든 파일을 저장 할수 있는 폴더를 지정 해주세요.
    기본으로 처음에 설치 한 WorkSpace 의 결로가 지정 되어있으나 프로젝트가 중복되게 되면 오류가 발생 할수 있습니다.
    따라서 개별 프로젝트 별로 특정 폴더를 지정해 주시는것이 좋습니다.
    셋팅이 끝났으면 Next 클릭 합니다.


    이부분은 톰캣의 ConText 를 생성 하는 부분입니다.
    자동으로 생성 하기때문에 그냥 Finish 클릭 합니다.


    이 경고창은 이클립스의 작업 탭을 JAVA EE 에서 JAVA 로 변경 할것인가에 대한 내용입니다.
    이부분은 필요 없기때문에 다시 뜨지 않도록 체크 박스에 체크 해주시고 "No" 클릭해 주세요.






    8. 연동 테스트 (톰캣 실행 및 페이지 확인)

    이제 실행 해보도록 하죠..


    이클립스 상당 아이콘에서
    "Start Tomcat" 아이콘을 클릭합니다.


    정상 작동 하게 되면 위와 같이 콘솔창에서 정상 적으로 실행 되었다는 메세지가 나오게 됩니다.
    이제 테스트 하기 위해 페이지 하나 만들어 보겠습니다.


    JSP 파일을 생성해 보겠습니다.
    위와 같이 프로 젝트를 선택 하시고 "New > Other" 를 선택해 주세요.


    "Web > JSP" 를 선택 하시고  Next 클릭 합니다.


    File name 를 지정 하시고  Next 클릭 합니다.
    파일 이름은 굳이 .JSP 붙이지 않아도 자동 생성 됩니다.


    이부분은 JSP 템플릿 설정하는 부분인되요.. 기본으로 선택 하셔서 나중에 주정 하여 사용 하시면 됩니다.
    따라서 디폴트로 사용 하고 Finish 클릭 합니다.


    테스트 페이지 내용을 삽입 해주시고 웹브라우저를 열어 "http://localhost:8080/프로젝트명"을 입력해 줍니다.

    2009/12/28 14:55 2009/12/28 14:55
    Posted
    Filed under JSP, JAVA
    [원문]

    Spring Framework을 사용한다면, web.xml에 아래와 같이 이미 Spring에서 구현한 filter 클래스를 등록하기만 하면 된다.

      <filter>
       <filter-name>encodingFilter</filter-name>
       <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
       <init-param>
        <param-name>encoding</param-name>
        <param-value>euc-kr</param-value>
       </init-param>   
      </filter>
     
      <filter-mapping>
       <filter-name>encodingFilter</filter-name>
       <url-pattern>/*</url-pattern>
      </filter-mapping>
    2009/12/23 16:35 2009/12/23 16:35
    Posted
    Filed under JSP, JAVA
    나의 스프링 프레임워크 개발환경을 먼저 정리하면,
    • Windows XP professional SP2
    • Eclipse/WTP 1.0.1 with SpringIDE 1.2.5
    • Apache Geronimo 1.0 (Jetty)
    • Spring Framework 2.0 M3

    이다.

    1. Eclipse에서 New/Dynamic Web Project를 생성한다.

    • 프로젝트 이름은 springbloom으로 정한다.

    2. 프로젝트가 생성되면 Eclipse/Project Explorer에 springbloom 폴더가 생긴다.

    • 이 폴더를 마우스 오른쪽 버튼을 클릭하고 "Add Spring Project Nature" 메뉴를 클릭한다.
    • 그러면 폴더 아이콘에 S자가 생긴다.

    4. 프로젝트의 /WebContent/web.xml파일을 수정한다.

    • web-app TAG의 id 속성값을 springbloom으로 지정한다.
    • welcome-file-list에 index.jsp만 남기고 모두 삭제한다.

    5. 프로젝트의 /WebContent/index.jsp 파일을 만든다.

    • 파일에 "안녕하세요?"라고 입력한다.

    6. project를 build하고 publish한다음, 서버를 실행하여 http://localhost:8080/springbloom을 접속한다.

    • index.jsp 페이지가 정상적으로 나타나면 일단 여기까지 성공이다.
    2009/12/23 16:21 2009/12/23 16:21