[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends:00018] Velocity について



はじめまして。疋田と申します。

現在、Velocityを利用したServletを作成しています。
環境は Windows2000 + Tomcat4.0.1 + velocity-1.3 です。

システム環境変数は次のようになっています。

%CLASSPATH%;.;C:\velocity-1.3\velocity-1.3.jar;
C:\velocity-1.3\velocity-dep-1.3.jar;
%CATALINA_HOME%/common/lib/servlet.jar(実際には1行)

ただ、どうもTomcat起動時に環境変数がうまく読まれていないようなので、
%CATALINA_HOME%\bin\catalina.batの71行目に、

set CP=%CATALINA_HOME%\bin\bootstrap.jar;%JAVA_HOME%\lib\tools.jar;
c:\velocity-1.3\velocity-1.3.jar;c:\velocity-1.3\velocity-dep-1.3.jar;
%CATALINA_HOME%/common/lib/servlet.jar;

と追記しています。

Servletを動かす前段階として、まずコンソールで動くものをと考えまして、リ
スト1〜3のようなコードを書いたところ、問題なく動作しました。

そこで、これをServletにしたものが、リスト4です。test.vm, test.prpはリス
ト2・3と同様のものを利用しています。

その後、コンパイルして出来たTestServlet.class および、test.vm, test.prp
を同じフォルダ(%CATALINA_HOME%\webapps\test\WEB-INF\classes)に配置しま
した。

ですが、Servletを実行(http://localhost:8080/test/servlet/TestServletに;
接続)すると、

java.io.FileNotFoundException: test.prp (指定されたファイルが見つかり
ません。)

となってしまいます。
このファイル指定の方法がわからず、どうしてよいものやら途方にくれています。

ファイルはどのように指定すればよいのでしょうか。それとも、ファイルの配置
場所が悪いのでしょうか。

よろしくお願いいたします。

----リスト1:Test.java ---------------------------
import java.io.* ;
import org.apache.velocity.app.* ;
import org.apache.velocity.* ;

public class Test {
  public static void main(String args[]) {
    try {
      Velocity.init("test.prp") ;
      VelocityContext ctx = new VelocityContext() ;
      ctx.put("str", "Hello World") ;

      BufferedWriter writer = writer = new BufferedWriter(new OutputStreamWriter(System.out)) ;

      Template template = Velocity.getTemplate("test.vm") ;
      template.merge(ctx, writer) ;
      writer.flush() ;
    } catch (Exception e) {
      e.printStackTrace() ;
    }
  }
}

---- リスト2:test.vm -----------------
$str
----------------------------------------
---- リスト3:test.prp ----------------
input.encoding = Shift_JIS
output.encoding = Shift_JIS
default.contextType = text/html ; charset=Shift_JIS
----------------------------------------
---- リスト4:TestServlet.java ----------------
import java.io.* ;
import org.apache.velocity.app.* ;
import org.apache.velocity.* ;
import javax.servlet.* ;
import javax.servlet.http.* ;

public class TestServlet extends HttpServlet {
  public void doGet(HttpServletRequest req, HttpServletResponse res) 
  throws ServletException, IOException {
    try {
      Velocity.init("test.prp") ;
      VelocityContext ctx = new VelocityContext() ;
      ctx.put("str", "Hello World") ;

      //BufferedWriter writer = writer = new BufferedWriter(new OutputStreamWriter(System.out)) ;
      PrintWriter writer= res.getWriter() ;

      Template template = Velocity.getTemplate("test.vm") ;
      template.merge(ctx, writer) ;
      writer.flush() ;
    } catch (Exception e) {
      e.printStackTrace() ;
    }
  }
  public void doPost(HttpServletRequest req, HttpServletResponse res) 
  throws ServletException, IOException {
    doGet(req, res) ;
  }
}
------------------------------------

---------------
Keiichi HIKITA
NTT Cyber Solutions Laboratories
Mail: hikita.keiichi@xxxxxxxxxxxxx
Tel : 0422-59-7785 Fax : 0422-59-3931