- blogs:
- cles::blog

Jersey のレスポンスに JSP を使う



昨日に続き Jersey でアプリを書いています。
ちょっとした View の部分を JSP で作りたかったので、レスポンスを JSP に Forward する方法を調べてみました。
Jersey JAX-RS (JSR-311) のメモ 来栖川電算
JSPへ処理を中継する
ViewableをEntityとして返却すればOK。
Viewableコンストラクタの第2引数には任意のオブジェクトを渡すことができ、JSPからitとして参照できる。
上記のような情報を基に、 com.sun.jersey.api.view.Viewable を返すようにしてみたのですが一筋縄ではいきませんでした。
以下、作業メモ。
† 返り値を Viewable に書き換える
情報に従って返り値をViewableに書き換えて、 jsp を置いてみたのですがうまく動きませんでした。
どうやら web.xml の Servlet のマッピングが /* になっているのが良くないようで jspが上手く呼び出せません。
jaxrsexample/Hello3.java
hello.jsp
いろいろ調べてみたところ下記で Servlet としてでなく Filter として使うとこの問題が回避できるという情報を見つけたので、これを試してみたところビンゴでした。
HATEOAS by Example Zienit
Normally the Jersey servlet is configured as a servlet (what’s in a name?). However, here it is configured as a filter! Jersey intercepts all url’s under the context root (pattern /* at line 20). However, if Jersey is configured as a filter, it is possible exclude specific urls from being handled by Jersey. In effect, those url’s are regular web application url’s. In this example, I’ve specified /xsltforms and /WEB-INF/jsp to be excluded from Jersey’s handling (lines 9-12). Also, the path /WEB-INF/jsp is specified as the root of the jsp templates (lines 13-16).
web.xml を下記のように書き換えます。
web.xml
これでプログラム中の /hello.jsp というパス指定で、 WEB-INF/jsp/hello.jsp が読み込まれるようになりました。
具体的には、 http://localhost:8080/jaxrsexample/hello3 にアクセスすると下記のような html が帰ってきます。
ここまでできると簡単なアプリを書く分には問題なさそうです。
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/4702
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110797)
3 . 年次の人間ドックへ(110387)
4 . 2023 年分の確定申告完了!(1つめ)(109938)
5 . 三菱鉛筆がラミーを買収(109835)