YouTuber.jsp * Tomcat
YouTuberのjsp版を作成中。
フォームで空白区切りで2単語以上指定された場合は"+"で各単語を区切るが、そうするとなぜか1ページ分しかクロールしてこない問題発生。あと日本語も化ける。
ここを参考にserver.xmlの内に以下を追加したら、ひとまず"+"で区切っても検索できるようにはなった。
要日本語対策。
YouTuberのjsp版を作成中。
フォームで空白区切りで2単語以上指定された場合は"+"で各単語を区切るが、そうするとなぜか1ページ分しかクロールしてこない問題発生。あと日本語も化ける。
ここを参考にserver.xmlの内に以下を追加したら、ひとまず"+"で区切っても検索できるようにはなった。
要日本語対策。
日本語対応の件を一応解決したのでログ。
JSP内でrequestを受け取る時に、
request.setCharacterEncoding("UTF-8"); <--コレ
String keyword = request.getParameter("q");
String pages = request.getParameter("pages");
コレにあるように指定すると、GETで飛んできたものをUTF-8にエンコードできる。
ところがこれは表示用文字化け対策としてGETで飛んできたものをエンコードするので、
それをそのままJSP内のJavaコンストラクタとかに投げると当然youtube側にリクエストできなくなる。
つまり、[漫才]で検索した場合、上のコードのままkeywordをJavaに渡すと、
youtube.com?q=漫才
みたいな感じで問い合わせてしまうので、当然結果は返ってこない。
なので、JSP側でもっかい
String encoded = URLEncoder.encode(keyword, "UTF-8");
として日本語文字列を
%E3%83%86%E3%83%AC%E3%83%93
のような形にエンコードしてからJava側に投げる。
これは最初Javaのクラスファイルの中でそう言う処理をさせていたが、それだと何故かうまくいかなかったので、JSP内で上記のエンコードを行ったら成功した。
ちなみにやはり一部日本語が完全に戻らない。。
Tomcat4.xからTomcat5.x(今回は5.5.17)に移行した際、文字化けに当ったのでログ。
Tomcat5.xになってから、デフォルトでGETパラメータのURIのエンコーディングにutf-8を利用するようになっているようだ。なので[TOMCAT_HOME]/conf/server.xmlのConnector要素で
[変更前]
[変更後]
としたら直った。
AjaxするにはなにかとJSP2.0だといいっぽいので、Tomcat4.1.18からTomcat5.5.17へバージョンアップ。ついでに MacデフォルトWebサーバであるApache1.3.33をApache2.2.3へアップグレード。さらにこの2つをmod_jk2で連携させる。結構ハマる感じなので、後を考えてログ。
■Tomcat5.5.17インストール
ここの左の[Download]からTomcat 5.x(今回は5.5.17)を選んで、Coreのzip版を選んでDL。tar.gz版だと何故か正常に解凍できない不具合があるっぽい。
これは普通に解凍後、/usr/localに置けばよい。
/bin/startup.shしてからlocalhost:8080にアクセスして正しく気持ち悪い猫がでてくれば、とりあえずよい。
■Apache2.2.3インストール
ここからUnix Sourceのhttpd-2.2.x.tar.gz(今回は2.2.3)をDL。/usr/localに移動させて,解凍。その後
とやれば勝手に/usr/local/apache2というディレクトリにインストールしてくれる。
オプション無しで勝手にやってくれるようになったようだ。
bin/apachectl startとやってlocalhostにアクセスして
It works!
と表示されれば、よい。TOPページがすごく手抜きになった気が。。
■Tomcat5とApache2を連携させるj2のインストール。
ここからJK2 2.0.4 Source Release zipを落として、適当な場所に解凍。
そしてjk2作成用のディレクトリまで移動してconfigure。。。
とやると、libaprが無いと言われるが、/usr/local/apache2/libにlibapr.soという空のファイルを作る
事でこのエラーは回避できるようだ。
としてとりあえず中身を何も書かず保存。そして再度
とやると今度はちゃんと出来るはず。その後
までやる。そうすると
にmod_jk2.soというファイルが出来ているはず。それを
とする。さらに
にworkers2.propertiesというファイルがあるので、これを
して、httpd.confにLoadModule jk2_module modules/mod_jk2.soという行を追加する。後は、Tomcatのwebapps/jsp-examplesをexamplesに変えて(もしくは、workers2.propertiesを直接変更する)、Tomcat⇒Apacheと再起動してブラウザで localhost/examples/が見れれば完了。
■jk_2を使ったwebappsの登録。
/usr/local/apache2/conf/workers2.propertiesを開き、新規に作るwebappsのディレクトリ名を
(例)
[uri:/hoge/*]
info=hoge is hoge
context=/hoge
debug
として、Tomcat⇒Apacheと再起動すればよい。httpd.confやserver.xmlをいじる必要は無い。
便利になったけど、jk2は公式サポートしなくなったらしい。。
ブログ「what a bringdown」のカテゴリ「tomcat」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。
前のカテゴリはruby on railsです。
次のカテゴリはUniversal Binary Softwareです。