• 締切済み

URIのチェックがうまくいかない

/test.jsp というファイルで <% String uri = request.getRequestURI(); %> <% String inuri = "/test.jsp"; %> <% out.println(uri); out.println(inuri); %> <html> <body> <% if( uri == inuri ){ out.println("ok"); } else { out.println("ng"); } %> </body> </html> を実行すると /test.jsp /test.jsp ng と出てしまいます。 なぜ ”=” ではないのでしょうか?

みんなの回答

  • jun2004
  • ベストアンサー率42% (24/57)
回答No.2

オブジェクトの参照が異なるからでしょう。 uri.equals(inuri) とすべきです。

全文を見る
すると、全ての回答が全文表示されます。
  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

文字列の比較を==で行っているからじゃないですか?

takizawa-777
質問者

お礼

すみません、、 お恥ずかしい、、 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • URIのチェックがうまくいかない

    URIのチェックをJSPからしたいと思っています。 <%String URI = request.getRequestURI(); %> で取ってきて if( URI.equals("/test/test.jsp"){ A }; などの処理をさせるときに ディレクトリを処理材料にしたいと思っています。 if( URI.equals("/test/*"){ A }; としたいのですが、うまくいきません。どうすべきでしょうか?

    • ベストアンサー
    • Java
  • ServletからJSP

    はじめまして。 お世話になります。 以下のようにサーブレットから条件によってJSPファイルを 使い分けようと思っているのですが、うまく出来ません。   protected void processRequest(HttpServletRequest request, HttpServletResponse response)   throws ServletException, java.io.IOException   {     PrintWriter out = response.getWriter();     out.println("<html>");     out.println("<head>");     out.println("<title>タイトル</title>");     out.println("</head>");     out.println("<body>");     RequestDispatcher rd = null;     if(/* 条件1 */)     {       rd = request.getRequestDispatcher("hoge1.jsp");     }     else if(/* 条件2 */)     {       rd = request.getRequestDispatcher("hoge2.jsp");     }     else     {       rd = request.getRequestDispatcher("hoge3.jsp");     }     out.println("</body>");     out.println("</html>");     if(rd != null)     {       rd.include(request,response);     }   } このようにすると <html> ・ ・ サーブレットから出力した部分 ・ </html> <****> JSPで出力した部分 </****> とサーブレットの部分だけ先に出力されてしまいます。 JSPファイルの前後に出力させるにはどのようにすればよいのでしょうか。 よろしくお願い致します。

    • ベストアンサー
    • Java
  • 全角スペースの判定について

    全角のスペースを文字コードにて判定したいのですが、 うまく判定できません。 0x8140だと思うのですが。。。。 以下のソースを実行すると半角は通るのに全角は NGになってしまいます。どなたがご存知方はご教授のほど宜しくお願いいたします。 public class test {  public static void main(String[] args) {      String s = "| | |";      for (int i = 0; i < 4; i++) {           System.out.println("" + s.charAt(i));   }      char c = s.charAt(1);    if (0x8140 == c) { System.out.println("全角判定OK");    } else { System.out.println("全角判定NG");    }   c = s.charAt(3);    if (0x0020 == c) { System.out.println("半角判定OK");    } else { System.out.println("半角判定NG");    }  } }

    • ベストアンサー
    • Java
  • JSPでの文字化け

    こんにちは。 今JAVAを勉強中でJSPファイルを作成しています。 test.jsp <%@ page language="java" contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J"%> <HTML> <HEAD><TITLE>文字表示テスト</TITLE></HEAD> <BODY> <% String text = request.getParameter("text"); if (text != null) { if (!text.equals("")) { out.println("画面からの文字<BR>"); out.println(text); } } %> <FORM NAME="testForm" METHOD="post" ACTION="test.jsp"> <TEXTAREA NAME="text"></TEXTAREA> <INPUT TYPE="submit" VALUE="送信"> </FORM> </BODY> </HTML> Windowsで上のプログラムを実行すると問題なく表示されますが Linuxサーバで実行すると???となってしまいます。

    • ベストアンサー
    • Java
  • nullについて

    public class Test0 { public static void main(String[] args) { String str="x"; str=null; if(((Object)str).equals(null)) { System.out.println("ok"); } else { System.out.println("out"); } } } を実行するとエラーになります str=null; をコメントアウトするとエラーでなくなります クラスオブジェクトがnullに等しいかどうか をするときにたとえそのオブジェクトがnullであっても エラーにならないようにするにはどうしたらいいのでしょうか? (tryは使用しない方法でおねがいします) また String x; とした直後にxはnullなのでしょうか? String以外に一般のクラスについてもお願いします

    • ベストアンサー
    • Java
  • JSFで最初のリクエストで動く処理を実装するには?

    近日、JSF(ver 1.2)でWebシステムを実装することになりJSFの勉強中のものです。 ASP.NET や PHP(Smarty) でWebシステム実装経験があります。 JSFでどう実装すれば良いのかわからないことがあり、詳しい方にお教え頂きたいと考えています・・・! 【質問概要】 JSFで最初のリクエスト時のみに動く処理はどのように実装すればよいのでしょうか? ASP.NETでは Page_Load イベントで Page#IsPostBack を以下の例のように使用すると 最初のリクエスト時のみに動く処理を実装することができました。 ---- 例 ここから ------------------------------------------- void Page_Load() { // 毎リクエスト時に行う処理 if (!IsPostBack) { // 最初のリクエスト時にのみ行う処理 } } ---- 例 ここまで ------------------------------------------- JSFではこれに相当するものが無いでしょうか? 【試してみたこと】 管理Beanのコンストラクタで最初のリクエスト時にのみ行う処理ができるかと思い、 以下のtest.jspを実行し、コンソールにどのように表示されるか試してみました。 ---- test.jsp ここから ------------------------------------- <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%> <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> (中略) <body> <f:view> <h:form> <h:commandButton action="#{Test.clickTest}" value="テストボタン"></h:commandButton><br /> </h:form> </f:view> </body> </html> ---- test.jsp ここまで ------------------------------------- ※Test は 下記 Test.java で実装した管理Bean。スコープはrequest。 ---- Test.java ここから ------------------------------------- public class Test { public Test(){ System.out.println("コンストラクタを通っている。"); } public String clickTest() { System.out.println("ボタンが押された。"); return "clickTest"; } } ---- Test.java ここまで ------------------------------------- <コンソール出力結果> 最初のリクエスト時: コンストラクタを通っている。 テストボタン押下後: コンストラクタを通っている。 ボタンが押された。 このことから、リクエストのたびにコンストラクタが処理されていることが分かりました。 ASP.NETの Page#IsPostBack の様なものがあれば、最初のリクエストかどうかを判別できるのですが・・・! 以上です。 上記のようなコンストラクタを使用する以外でも、なにか良い方法は無いでしょうか? お詳しい方、何卒よろしくお願い申し上げます・・・!

  • Javaの引数を使ってチェックしていくプログラムですが

    public class AAA{ public static void main(String args[]){ System.out.println("チェック開始"); int ContainerA,ContainerB,ContainerC; String PP = "Sweets"; if (args[0].length() != 1 ){        // 引数の数が1以外の場合 { ContainerA = 1;       // 1をエラーコードに設定 } else if(!args[0].equalsIgnoreCase("cake") && !args[0].equalsIgnoreCase("manjyu"))        //引数が CAKE でも MANJYU でもない場合(大/小文字区別せず) { ContainerC = 99;      // 99をエラーコードに設定 } else      // それ以外の場合 { ContainerB = 0;     // 0をエラーコードに設定 } } else if(ContainerB == 0){       // もしエラーコードが0の場合 { System.out.println(PP + "?"); //("商品名+?")を表示 } if(ContainerA == 1)      // エラーコードが1の場合 { System.out.println("プログラム終了"); } else if(ContainerC == 99){       // エラーコードが99の場合 System.out.println("プログラム終了"); } } else{        //それ以外の場合(正常終了処理) System.out.println("正常終了"); } } } 上記のソースはコンパイルできないのですが、どこがおかしいのでしょうか? また、条件分岐が ifやelseしか使い方がよくわからないので、他のよい方法がありましたら教えてください。

    • ベストアンサー
    • Java
  • setAttribute getAttribute 配列内容受け渡し  について 

    こんいちは。 setAttributeでセットした値をgetAttributeを使用して表示したいのですがうまくいきません。 あとsession.setAttributeとrequest.setAttributeの違いがわかりません。 session はなんとなくわかるのですが、requestがいまひとつわかりません。 どなたか教えていただけないでしょうか? よろしくお願いいたします。 下記がコーディングの内容です。 test.jsp <%@ page contentType="text/html;charset=Shift_JIS" import="java.sql.*, java.util.*" %> <% String[] desc={"aaa","bbb","ccc","ddd","eee"}; session.setAttribute("desc",desc); Vector vect = (Vector)session.getAttribute("dpt"); Iterator itr = vect.iterator(); while(itr.hasNext()) { String[] temp = (String[])itr.next(); out.println(temp[0]); out.println(temp[1]); } %> <html> <body> t_3 test </body> </html>

    • ベストアンサー
    • Java
  • JSPで、PG上のstrutsオブジェクトについて

    動作環境 OS:WindowsXP Home Edition SP3 Browser:IE8 OpenSoftWare:Tomcat6.0.29 Framework:Struts2.2.1 Tool:Eclipse3.2.0 JavaPGで、out.println関数を使用して、strutsのオブジェクト書いてもブラウザ上で出力されません。 直接strutsタグで、書くとブラウザ上に正常に表示されます。 Java側で、対応されていないのでしょうか? どなたか、ご指導願います。 ■事象例 1.「a.jsp」実行 <%@ page contentType="text/html; charset=Shift_JIS"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Test</title> </head> <body> <s:form align="center" action="Test" theme="simple"> <% String strtest = "#{'1':'1','2':'2'}"; out.println("<s:select name=\"cbotest\" list=\"#{'1':'1','2':'2'}\"/>"); %> </s:form> </body> </html> 2.「b.jsp」実行 <%@ page contentType="text/html; charset=Shift_JIS"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Test</title> </head> <body> <s:form align="center" action="Test" theme="simple"> <s:select name="cbotest" list="#{'1':'1','2':'2'}"/> </s:form> </body> </html> 3.IE8上の表示(画像添付参照) 1.「a.jsp」結果 何も出力されません。 2.「b.jsp」結果 [1[▼]] [1■■] [2   ]

    • ベストアンサー
    • Java
  • 入力した文字列がチェックできない

    でてくる日本語を英語にすると何になるかというクイズプログラムを作っているのですが、 if (answer_user==word.answer){ System.out.println("正解"); }else{ System.out.println("不正解 正解は"+word.answer); } この部分で正しい答えを入力しても正解にならなくて困っています。 今の状態では解答は"test"になるはずなのですがanswer_userとword.answerの変数の中身を"test"かどうかif (answer_user=="test")のような形でチェックするとanswer_userのほうが間違っていることになります。しかし、出力すると"test"になっているように見えます。 どうすれば直るのでしょうか?よろしくお願いします。 全体のコードは下にあります。 変数の説明 question 問題の日本語の単語 answer_user 入力した解答 answer 正しい解答 num 問題番号と照らし合わせる変数 この変数が0のとき0番の問題を出すのような形になります。 import java.io.*; public class Main{ public static void main(String args[]) throws IOException{ Word word; word = new Word(); word.WordInput(); System.out.println(word.question); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String answer_user = br.readLine(); if (answer_user==word.answer){ System.out.println("正解"); }else{ System.out.println(answer_user+"は不正解 正解は"+word.answer); } } } public class Word { int num=-1; String question="",answer=""; public void WordInput(){ num+=1; if (num==0){ question = "テスト"; answer = "test"; } } }

    • ベストアンサー
    • Java
このQ&Aのポイント
  • 新幹線を利用して通学や通勤をすることはアリなのでしょうか?
  • 都市部から都市部への移動であれば、新幹線を利用することも可能です。
  • 駅の近くに住んでいる場合は、新幹線を利用することで快適な通勤・通学ができるでしょう。
回答を見る