• ベストアンサー

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>

  • Java
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
  • 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

  • JSPにおけるPageディレクティブ記述

    こんにちは、Strutsを勉強しているものです。 ユーザが入力したID, パスワードをフォワード先のJSPで表示するといった簡単なアプリーションを作成していますが、JSP表示時に500エラーとなってしまいます。エラー理由としてpageタグが終了していないことがあげられています。しかし、通常JSPで記述するpageディレクティブには閉じるタグは記述不要と考えています。どのようにすればこのエラーを回避できるのでしょうか。 ▽JSPソース <%@ page contentType="text/html"; charset="Shift_JIS" %> <html> <head> <title>Login Result</title> </head> <body> <%= (String)request.getAttribute("message") %> </body> </html> ※バージョン情報 Tomcat 5.5 JDK 1.5 Struts 1.2.4

    • ベストアンサー
    • Java
  • JSPでソースが表示されてしまう。

    JSPでブラウザで実行すると ソースが表示されてしまいますなぜですか? 結果///////////// 下記が表示される。 <%@ page contentType="text/html;charset=Shift_JIS" %> <% out.println("ハローワールド!"); %> ////////////////// ソース: <%@ page contentType="text/html;charset=Shift_JIS" %> <html> <head><title>Sample015</title></head> <body> <% out.println("ハローワールド!"); %> </body> </html> 文字コードをUTF-8のLFにあわせても同じでした。

    • ベストアンサー
    • Java
  • JSPのページが表示されません

    初めまして。 JSPについて質問があります。 現在OSはRedHatLinux7.2で、JDK、Tomcat、Pathの環境変数の設定を行ない、Tomcatを起動させ、Servletの動作("Hello World!"という文字列を表示するのみ)を確認した段階です。Servletの動作の際にTomcatをインストールした直下のconfディレクトリ内のserver.xmlに以下のスクリプトを追加しました。 <Context path="/test"    docBase="webapps/test" crossContext="false" debug="0" reloadable="true" > </Context> Servletに関しては上記の設定とTomcatとPCの再起動で動作を確認できたのですが、JSPの方は[Internal Error: 500 Servlet Error]が出て表示されませんでした。 ちなみにJSPファイルの位置はtestディレクトリ直下のjspディレクトリ内にあります。 ・hello.jspのスクリプト <%@page contentType="text/html;charset=euc-jp" %> <html> <head> <title>JSPTEST</title> </head> <body> <% out.println("HELLO WORLD!"); %> </body> </html> ・JSPファイルを表示するアドレス http://localhost:8080/test/jsp/hello.jsp ここで質問なのですが、JSPに関しても何か設定が必要なのでしょうか? もし何か分かることがありましたら、ご教授御願い致します。

    • ベストアンサー
    • Java
  • jspでの表示の仕方

    下記のような、jspへの受け渡しができずにいます。 ご回答お願いします。 Servletは、 String query = "SELECT * FROM test"; ResultSet resultset = statement.executeQuery( query ); request.setAttribute("obj",resultset); ServletContext context = getServletContext(); RequestDispatcher rd = context.getRequestDispatcher("/kekka.jsp"); rd.forward(request,respons); とした時、jsp側で、 <%@ page contentType="text/html;charset=Shift_JIS" %> <%@ page import = "java.sql.*" %> <%! ResultSet rs = (ResultSet)request.getAttribute("obj"); %> <% While(rs.next()){String hinmei = rs.getString("hinmei");} %> <html> <head> <title>JSP</title> </head> <body> <table border="0"> <tr> <td><%=hinmei%></td> </tr> </table> </body> </html> と、したいのですが、白い画面になりjspの表示ができません。 やはり、ResultSetオブジェクトのAttributeはできないのでしょうか? それとも、jspの構文に問題があるのでしょうか? Vector、Stringは、この形のやり方で表示できたのですが・・・。 間違いを指摘してください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • JSP URLに表示される拡張子 .jsp

    Servlet、JSPの開発を行っているのですが・・・ ページを表示する際のアドレスに「http://hogehoge/test.jsp」とJSPの拡張子が表示されると思うんですが、この拡張子を表示させずにアクセスする方法はあるでしょうか? サーバー:Apache 2.2.3 Tomcat:Apache Tomcat 5 OS:CentOS 5 自分で考えた方法 ・ApacheのProxy設定でJSPファイル一つずつ設定していく ・JSPファイルへのアクセスに対してもサーブレットを介して、dispacher.forward(request, response)を使う。 ※forwardだったらサーブレットのアドレスのままになったので。 どちらも結構面倒なんですが・・・他に方法はあるでしょうか?

    • ベストアンサー
    • Java
  • 異なるwarのJSPにフォワードすることは可能か?

    お世話になっております。 以下のデプロイ構成の場合に、smt.war内のJSPから、pc.war内のJSPにフォワードすることは可能でしょうか? 【デプロイ構成】 all.ear pc.war smt.war やりたいことのイメージとしては、フォワード元・先が以下のURLの時、「<jsp:forward page="/pc/test.jsp"></jsp:forward>」の記述で問題なくフォワードさせたいのですが、動作確認したところ「/smt/pc/test.jsp」に遷移しようとして404となってしまいます。 フォワード元:http://ドメイン/smt/test.jsp フォワード先:http://ドメイン/pc/test.jsp 【補足】 ・リダイレクトだと問題なく「/pc/test.jsp」に遷移できましたが、諸事情で可能であればフォワードを使用したい ・アプリケーションサーバは、WAS7(もしくは8)の予定(動作確認はtomcat7) 以上、よろしくお願いいたします。

    • ベストアンサー
    • Java
  • JSPが表示されません

    Apache2+Tomcat4.1+j2sdk1.4.2_06+EclipseでJSPとサーブレットのページを作ろうとしています。 HTMLファイルのフォームの内容をJSPファイルに送り、ServletでDBと参照、登録という流れを作ろうとしています。 aaa.html(ユーザーがデータを入力) ↓(1)フォームの内容を転送 bbb.jsp((2)htmlからの入力をccc.classに中継、(7)返り値を表示) ↓(3)メソッド呼び出し ↑(6)返り値を返す ccc.class(重複の有無確認やDBへの登録メソッド) ↓(4)SQL ↑(5)結果 DB(PostgresSQL) 本に書いてあるのを真似たらlocalhost上ではちゃんと動くようになりました。 つまり、下記のようにaaa.htmlからの転送先をlocalhost:8080/bbb.jspに指定するとうまく作動します。 <form name="form1" method="post" action="http://localhost:8080/bbb.jsp"> しかしながらこれではローカルでしか使えないので転送先を相対パスで指定したらうまくいきません。 <form name="form1" method="post" action="../bbb.jsp"> 外部から参照できるURL(サーバのIPアドレス)でもダメです。 <form name="form1" method="post" action="http://***.***.**.**/bbb.jsp"> 症状としては.jspファイルの最初のHTMLの記述はちゃんと動いているようで画面の色等はちゃんと変わります。 <%.....%>で囲まれたJAVAの記述がまったく作動しません。 /work/org/apache/jspに発生する中間ファイルもlocalhostのときには出来るのですが相対パスにすると出来ません。 どうしたらいいのでしょうか? ひょっとしたらとても初歩的なことかもしれませんがご存知の方がいらっしゃいましたらご教授願いたいと思います。

    • ベストアンサー
    • Java
  • JSPのエラー。

    以下のjspファイルでコンパイルエラーが出ます。 これはログインの処理の二つ目のjspファイルで、一つ目のファイルではhtmlのフォームで、このファイルにpostしています。 mディレクトリにuserクラスを作ってあり、loginメソッドで成功すればtrueが返ってきます。 ブラウザに表示されるエラーの一行目は org.apache.jasper.JasperException: /login2.jsp(3,27) &lt;jsp:useBean タグが終了していません と表示されます。 よろしくお願いします。 <%@page contentType="text/html;charset=Windows-31J"%> <%@page import="m.user,javax.sql.*,java.sql.*"%> <jsp:useBean class="m.user" id="user" scope="session"/> <html> <head><title>ログイン</title></head> <body> <% String strLoginName = request.getParameter("login_name");/*フォームからの受け取り*/ String strPassword = request.getParameter("password"); String strResult; boolean blResult = user.login(strLoginName,strPassword); if(blResult){ strResult = "ログインしました。"; }else{ strResult = "失敗です。"; }%> <%=strResult%> </body> </html>

    • ベストアンサー
    • Java
  • JSPでの記述

    『基礎からのサーブレット/JSP』第3版のP185 <%@page contentType="text/html; charset=Windows-31J"%> <%@page import="reqattr.SampleBean"%> <HTML> <BODY> <H2>値をうけとるJSP</H2> <% SampleBean bean = (SampleBean)request.getAttribute("bean"); String message = bean.getMessage(); out.println(message); %> </BODY> </HTML> このスプリクトレット<% SampleBean bean =~~ %>の部分で SampleBean bean = (SampleBean)request.getAttribute("bean"); String message = bean.getMessage(); これらをJSPでの記述にすると どういう書き方になるのでしょうか? よろしくお願いします。

  • jspから別のjspへパラメータが送信できない

    javaBeanを利用してjspを作成したけど Test.jspのソース <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ page import="struts.*" %> <jsp:useBean id="formprocess" class= "struts.FormProcess" scope="application" /> <jsp:setProperty name="formprocess" property="*"/> <html> <head> <title>TEST</title> </head> <h2>情報の入力</h2> <form method="GET" action="/javaroad/jspdir/Test_1.jsp"> <p> 名前: <input type="text" name="name" size=30> <p> メールアドレス: <input type="text" name="mailaddress" size=30> <p> <input type="submit" value="送信"> </form> </center> </body> </html> Test_1.jspのソース <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ page import="struts.*" %> <jsp:useBean id="formprocess" class= "struts.FormProcess" scope="application" /> <html> <head> <title>TEST</title> </head> <body> <p> 名前: <jsp:getProperty name="formprocess" property="name"/> <p> メールアドレス: <jsp:getProperty name="formprocess" property="mailaddress"/> </body> </html> Beanのソース package struts; public class FormProcess { String name; String mailaddress; public void setName(String name) { this.name = name; } public String getName() { return name; } public void setMailaddress(String mailaddress) { this.mailaddress = mailaddress; } public String getMailaddress() { return mailaddress; } } Test.jspでデータを入力して送信ボタンを押すとTest_1.jspではnullが表示します。前の入力したデータではないです。どうしたらできますか?

    • ベストアンサー
    • Java