[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