memo:GAEでvelocityでhelloworld的なものをelcipseで
javaは未だに意味が分からないけどなんとか使用としてみるメモです。
GAEでJSPというやつははしんどそうなのでvelocityを動かしてみる。
velocityを勧めてくれたjava屋の人、ありがとう。
インターネットをクロールしてコピペで集めたHelloWorld的なものです。
明らかに不適切な所があるので参考にはならないとおもう。
とりあえず動いた。僕はeclipseでGAEプロジェクトを立てています。
velocityをEclipseに組み込み
velocityはhttp://velocity.apache.org/download.cgiで落とした。
1.ライブラリに読み込み
圧縮ファイルを展開して適当な所に配置。
展開したファイルを適当な所に置いてプロジェクトのプロパティ=>javaビルド・パスの
ライブラリータブを開いて外部jarの追加をクリッケして展開したvelocityのjarファイルを適当に指定。
2./war/WEB-INF/lib以下にvelocityのjarをコピペ
よくわかんなかったので全部入れときますた。実行時はここにおいたモノが使われるのだと理解している。
class
src/あなたのパッケージ/にsampleVelocityServletとかでクラス作成
package test.modeverv; import java.io.IOException; //サーブレット import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //アプリケーション的に import java.util.Date; //velocity import org.apache.velocity.Template; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.Velocity; public class sampleVelocityServlet extends HttpServlet{ //servletなのでdoGetを書けばOKなんだと理解している public void doGet(HttpServletRequest req,HttpServletResponse resp) throws IOException{ try { //Velocityを立ち上げる Velocity.init(); } catch (Exception e1) { e1.printStackTrace(); } //コンテキストを生成 VelocityContext context = new VelocityContext(); //コンテキストにアサイン的な? context.put("orearg", (new Date()).toString()); try { //テンプレートを生成 Template template = Velocity.getTemplate("velocity/test.vm"); //velocityとは関係ないservletレベルのあれこれ resp.setContentType("text/html"); resp.setCharacterEncoding("utf-8"); //テンプレートにコンテキストを読み込んでresp--に出力するイメージ template.merge( context, resp.getWriter() ); } catch (Exception e) { e.printStackTrace(); } } }
テンプレート
僕はフォルダ/war/velocityを作成した。別に作らなくてもイイとは思うけれども
テンプレート/var/velocity/test.vmを作成
<html> <body> <h1>this is test. VelocityServlet</h1> <h1 style="font-size:330px;">$orearg</h1> </body> </html>
出力をxmlに指定
xmlで指定って言うこの辺がさっぱりわかんないんですよね。。。
xmlを追記する/war/WEB-INF/web.xml
urlマッピングらしい。いろいろノウハウがありそうです。
<servlet> <servlet-name>velocity</servlet-name> <servlet-class>test.modeverv.sampleVelocityServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>velocity</servlet-name> <url-pattern>/velocity/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>velocity</servlet-name> <url-pattern>*.vm</url-pattern> </servlet-mapping>
xmlを追記する/war/WEB-INF/appengine-web.xml
velocity以下にファイルがあるんじゃーという事らしい。
<resource-files> <include path="/velocity/*" /> </resource-files>
で感想とか
これですべてです。
http://localhost:8888/velocity/にアクセスしたら動くけど
http://localhost:8888/velocity/test.vmにアクセスしたら動きません。
やっぱりよくわかんないですね。
でもGAEは面白いです。
コピペ元
ありがとうございました。
http://d.hatena.ne.jp/hidemon/20090410/1239311466
http://www.stackasterisk.jp/tech/java/velocity02_02.jsp
http://www.tdtsh.com/blog/archives/445
このあとは
GAEのドキュメントとvelocityのドキュメントを読めばイイですね。