- ベストアンサー
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>
- みんなの回答 (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 にして試してみてください。
その他の回答 (1)
- _ranco_
- ベストアンサー率58% (126/214)
web.xmlにおけるurl-patternの設定が原因、または、DoCoMoさんの事情でしょうか…。
お礼
アドバイスありがとうございます。 確かにweb.xmlにおけるurl-patternの設定が原因だったようです。 とても助かりました。
お礼
アドバイスありがとうございました。 web.xmlにおけるurl-patternの設定が原因でした。 ですので、page="smpMobile.jsp" だけで問題ないようです。