Index: [Article Count Order] [Thread]

Date: Tue, 27 Aug 2002 00:12:03 +0900
From: m_seki@mva.biglobe.ne.jp
Subject: [webrickja:41] Re: 画像や css,javascript を使うには
To: webrickja@notwork.org
Message-Id: <m31y8lu01o.wl@edwin.mva.biglobe.ne.jp>
In-Reply-To: <200208260227.g7Q2RUx9036154@miso.k.notwork.org>
References: <200208241618.g7OGIrx9033036@miso.k.notwork.org>	<20020825052158.68455.qmail@web303.mail.yahoo.co.jp>	<200208260227.g7Q2RUx9036154@miso.k.notwork.org>
X-Mail-Count: 00041



咳です。眠いぃ。

> > 画像が表示されません。
> > また、javascriptファイルも読み込まれません。
> > リンクも、
> > <A HREF="http://localhost:6613/link.html">link</A>
> > のように絶対パスで指定すれば遷移できますが、
> > 相対パスだと遷移できません。
> 
> TofuSession は FileHandler のサブクラスではないから検索しな
> いというのが理由です。
> 
> 要するに「ある path prefix 以下をセッション管理したい」とい
> うことですね。どう書くのがスマートなんだろ。咳さーん

いろいろ試したのですが、みんな大変でイマイチです。

もっとシンプルにこんな風にしてみました。
FileHandlerをもう一つ登録してます。

/hello/がDivのページ、/hello/f/* が静的なページです。
view.erbからは "f/ファイル名" でファイルにアクセスできます。


http://hostname/hello/foo.html が foo.html を返したいのか、
それとも/foo.htmlという情報を元に動的なページを返したいのか、
アプリケーションによって違うので、一般的な解はないように思います。


私がDivから静的なファイルを参照する時は、相対パスは使わないかも。



# server.rb
require 'webrick';
include WEBrick;
require 'tofu/tofulet';
require 'servlet';
require 'getopts'

logger = Log::new($stderr, Log::DEBUG);
dir = File::dirname(File::expand_path(__FILE__));

s = HTTPServer.new(:Port => 6613,
		   :AddressFamily => Socket::AF_INET,
		   :BindAddress => ENV['HOSTNAME'], 
		   :Logger => logger,
		   :DocumentRoot   => $OPT_r || dir);

s.mount("/hello/f/", HTTPServlet::FileHandler, dir + '/hello/', nil);

bartender = Tofu::Bartender.new(HelloServlet);
s.mount("/hello/", Tofulet, bartender);

trap("INT"){ s.shutdown }
s.start;



# view.erb
<html>
<head>
<title>WEBrick Div Test</title>
<LINK href="master.css" rel="stylesheet" type="text/css">
<SCRIPT language="JavaScript" SRC="f/master.js"></SCRIPT>
</head>
<body>
<h1>Hello World!!</h1>
<IMG src="f/test.jpg" onclick="func();">
<A HREF="f/link.html">link</A>
</body>
</html>