• ベストアンサー

JSPプログラミング 携帯電話用のJSPページを表示

PCのブラウザでアクセスしてきたクライアントに対してはPC用のJSPページへ転送し、携帯電話でアクセスしてきたクライアントに対しては携帯電話用のJSPページへ転送する処理を行うプログラムで、PCからのアクセスはできるのですが、携帯電話からアクセスすると「サーバメンテナンス中です。しばらくしてからご利用ください。」と携帯電話の画面には表示されます。メンテナンス中でもないのに何が原因なのですか? 転送元のsmp.jsp <%@ page contentType="text/html; charset=Windows-31J" %> <% // 内容: forward アクションを使用する // User Agent を取得 String user_agent = request.getHeader("user-agent"); // User Agent が "DoCoMo****" のタイプだったら携帯電話用の // ページへ転送 if(user_agent.startsWith("DoCoMo")) { %><jsp:forward page="smpMobile.jsp" /><% } // PC用のページの内容を出力 %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head><title>forward アクションを使用</title></head> <body> <p>PC 用のページ</p> </body> </html> 転送先のsmpMobile.jsp <%@ page contentType="text/html; charset=Shift_JIS" %> <% // 内容: forward アクションを使用(携帯電話用のページ) String user_agent = request.getHeader("user-agent"); %> <html><body> 携帯用のページです<br> <%= user_agent %> </body> </html>

質問者が選んだベストアンサー

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.2

まずはサーバのアクセスログを確認して携帯からのリクエストを確認して下さい。 smpMobile.jspへのリクエストがあればsmpMobile.jspに関するサーバの設定に問題があるかもしれません。 smp.jspだけにリクエストがある場合はsmp.jspに関する設定やリダイレクト(jsp:forward)の動作に問題があると考えられます。 どちらへのリクエストもなければDocomoの問題と考えて良いでしょう。 私が怪しいと思っているのはjsp:forwardで出力されるLocationヘッダです。Docomoは「LOCATION時のURLの指定は絶対パスで記述します。」と言っているので page="smpMobile.jsp" だけでは問題があるかもしれません。 なので、pageに指定する値を http://~/smpMobile.jsp にして試してみてください。

参考URL:
http://www.nttdocomo.co.jp/service/imode/make/content/html/notice/basis/index.html#p04
rough36
質問者

お礼

アドバイスありがとうございました。 web.xmlにおけるurl-patternの設定が原因でした。 ですので、page="smpMobile.jsp" だけで問題ないようです。

その他の回答 (1)

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.1

web.xmlにおけるurl-patternの設定が原因、または、DoCoMoさんの事情でしょうか…。

rough36
質問者

お礼

アドバイスありがとうございます。 確かにweb.xmlにおけるurl-patternの設定が原因だったようです。 とても助かりました。

関連するQ&A