[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 06/11 10:36 / Filesize : 275 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者】Java質問・相談スレッド112【大歓迎】



1 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 19:48:24 ]
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。pc10.2ch.net/hp/

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
www.wikiroom.com/java/
これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」

前スレッド
【初心者】Java質問・相談スレッド111【大歓迎】
pc11.2ch.net/test/read.cgi/tech/1200151522/

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝のう存じます。

次スレは>>980あたりで。

710 名前: [2008/02/24(日) 14:16:01 ]
設定方法わかりませーん

711 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:16:23 ]
>>709
Oracle なら、詳細19とか詳細15とかマニュアル嫁
それの何処に配列が出てくるのか謎

712 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:18:34 ]
問題ない部分だけの抜粋でもいいからスタックトレース貼ったらどうか。
例外は本当にOJDBCで出てるのか?

713 名前:638 mailto:sage [2008/02/24(日) 14:29:54 ]
ResultSetやPreparedStatementをデバッガで除くと、
設定したパラメータが正しい内容で格納されているのは確認しています。

出力される例外はArrayIndexOutOfBoundsExceptionです。
ここでパラメータの数が「詳細 パラメータ数」と表示されます。


>>711
まず、SQLExceptionじゃないです。
上記通り、19とか15はパラメータの総数が出力されます。
謎ですが。


>>712
そもそも業務で外部接続できないので貼れません・・・
例外は、ResultSetのnextが11回目に呼び出されたタイミングで発生します。
ResultSetの処理の中でArrayIndexOutOfBoundsExceptionで死亡します・・・

714 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:02:57 ]
test

715 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/02/24(日) 17:05:15 ]
固定長*可変長の配列を作りたいです。
(i方向が固定でj方向が可変、初期は空)
import java.util.*;

public class Test2{
public static void main(String[] args){
ArrayList<Integer>[] a = new ArrayList<Integer>[10];
for(int i=0; i<a.length; i++){
a[i] = new ArrayList<Integer>();
}
a[0].add(3);
System.out.println(a[0]);
}

}

こう書きましたがエラーが出ます。
どこがおかしいのでしょうか?

716 名前:ちんこ ◆GbXlaaQNk. [2008/02/24(日) 17:05:45 ]
age

717 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:07:30 ]
固定長のちんこなんて要りません

718 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:09:04 ]
1〜nの整数の順列をすべて表示するプログラムを書いてみたのですが
もっと簡単にやる方法とかここはこうしたらいいとかあったらアドバイスお願いします

import java.util.*;
class PermutationTest {
public static void main(String[] args) {
Permutation perm1 = new Permutation(4);
perm1.PrintPermutation();
return;
}
}

class Permutation {
private int N;
private int[] ans;
Permutation(int N){
this.N = N;
this.ans = new int[N];
}
void PrintPermutation() {
int[] a = new int[N];
for (int i = 0; i < N; i++) {
a[i] = i+1;
}
this.subPrintPerm(a,0);
}

続く



719 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/02/24(日) 17:09:27 ]
まぁまぁそういわず。
なんでエラーが出るのかさっぱり分からなくてね。

720 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:09:46 ]
>>718の続き

private void subPrintPerm(int[] a, int idx) { // 配列a[]から1つ取り出して残りで再帰呼び出し
if (a.length == 1) {
ans[idx] = a[0];
ansを表示;
return;
}
for (int i = 0; i < a.length; i++) {
int[] b = new int[a.length-1];
ans[idx] = a[i];
int j=0;
while (j < b.length) {
if (j < i) {
b[j] = a[j];
} else {
b[j] = a[j+1];
}
j++;
}
this.subPrintPerm(b,idx+1);
}
}
}

721 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:10:15 ]
>>715
>>574-576

722 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/02/24(日) 17:16:06 ]
>>721
既出でしたね。
でもそのレスを読んでも分かったよな分からんようなです。
具体的にどうすればいいか示してもらえませんか?

723 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:46:20 ]
今まで書いたソースを消してクソして寝ろ
そして二度とブラウザを開かない

724 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/02/24(日) 17:47:03 ]
>>723
分からないんだろ?そういえばいいのにw

725 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/02/24(日) 17:58:50 ]
どう考えてもおれのコードと>>574のコードは問題点が違います。
おれが書いた>>715のコードはどこがミスがあるのか
指摘出来る人はいませんか?


726 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:17:40 ]
>715
ジェネリックスを使用したList<E>の配列は作れない、言語仕様的に。
したがって、int[][]のように2次元配列にするか、List<List<Integer>>のようにListにListを入れるべし

727 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:21:32 ]
ArrayList入れたいのかInteger入れたいのかはっきりしろ。

728 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:23:55 ]
可変長のちんこ入れたいです。



729 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:49:14 ]
ArrayList<Integer>[] a = new ArrayList[10];
でいいんじゃね?

730 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/02/24(日) 18:54:02 ]
現在作成中の
ダイクストラ法による最短経路探索プログラムです。
www.uploda.org/uporg1268729.zip.html
うpしました。
これでListを使えると便利なので使いたいと思ったのですが、
具体的に今findShortestPath @ MainPanel
というのを実装しています。
ここで、toArray周辺でエラーが出て、どういう事だかさっぱり分かりません。

エラーの原因が分かる人は教えてください。

731 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:06:16 ]
730 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん

732 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/02/24(日) 19:08:57 ]
さっぱり分からない。

733 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:34:33 ]
カレントディレクトリを移動してからEXEを実行したいのですが、下のように書いてもhoge.exeが実行されません。
どう書けばよろしいでしょうか?

Runtime.getRuntime().exce(new String[]{"cmd.exe","/C","cd C:\hoge","hoge.exe"})

hoge.exeが自分のルートにファイルを出力する為、カレントディレクトリを移動しなければならず
この処理を含む実行ファイルをhoge.exeのフォルダに置くのは避けたいです。


734 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:37:52 ]
ProcssBuilder にカレントディレクトリ指定できるものがあったとオモ

735 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:04:50 ]
JMenuBarの中にメニューを2つ追加し、それぞれのメニューの中に
同じ名前のJMenuItem、同じActionListenerをセットした場合、
それぞれのMenuItemが選択された際の処理を変えることは可能でしょうか

ネットや書籍を調べてみたところ、JMenuItemが選択されたイベントが発生した場合、
そのイベントの名前をgetActionCommandで取得し、条件分岐を行っていましたが
同じ名前のItemが存在する場合の条件分岐方法を見付けることができませんでした

諦めてそれぞれのItemに別々のActionListenerクラスをセットするしかないのでしょうか

736 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:07:51 ]
getSourceとJMenuItemを==で比較するという手もある

737 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:21:18 ]
同じ名前のJMenuItemってのが設計おかしくねえか?
見た目が同じだとしても場所とか違う識別子にはなるだろ

738 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:22:28 ]
マルチキャストソケットを利用した、簡易チャットルームの
ようなものを作成しているのですが、現在接続中のユーザーを
表示させる部分がうまくいきません。

IPで表示させるのですが、取得の方法が悪いのでしょうか?
ユーザー表示部分だけなので、宿題スレでなくこちらで質問させて
いただきました。よろしくおねがいします。

rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/217.java



739 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:30:45 ]
うまくいかないでは解らん。
例外が発生するのか、処理がそこを通らないのか、ちゃんと情報を出せ。

あと、直リンできねーぞ

740 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:50:37 ]
>>734
レスありがとうございます。
できればRuntime.getRuntime().execでやりたいと思うのですが、無理でしょうか?
やはりjdk1.5ならProcssBuilderを使った方が良いのかな・・・。


741 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:02:36 ]
>>739
失礼しました。

特にエラーが出て処理が停止するというこはなく、
表示ボタンを押してもnullが返ってくるため
ユーザーのIPが上手く取得できていないのでは
ないかと思っています。

ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/main.htm
の217番にUPしてあります。

742 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:09:58 ]
>741
System.out.println( "ユーザー表示ボタンが押されました" );
って行は通っているのでOK?
あとメッセージの表示は問題ない?
System.out.println( "アドレスを新規登録しました" );
って行は通ってないのか?

743 名前:デフォルトの名無しさん [2008/02/24(日) 21:24:27 ]
tomcat5.5
eclipse
を使用してwebアプリを作ろうと思っています。

一つのプロジェクトで複数のTomcatを動かそうと思っています。
この場合、ルートディレクトリが複数で
ソースの出力先フォルダ一つしか設定できません。

ということは片方のルートディレクトリにしか
サーブレットのクラスは置けないため、
片方のtomcatからしかソースを参照できません。

こういった場合どうすればよいでしょうか。

744 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:38:05 ]
早速見ていただきありがとうございます。

>>742
>System.out.println( "ユーザー表示ボタンが押されました" );
の部分はシステムコンソールに表示されているため
通っているものと思われます。また、メッセージも
""で囲まれている部分はきちんと表示されています。

>System.out.println( "アドレスを新規登録しました" );
この行もシステムコンソールでは表示されているので
通っていると思うのですが・・。

745 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:39:48 ]
すまんがだれか、>>743をエスパーしてくれ。
何となく解る気もするが、
なんで、エクスポートしたwarファイルをもう一つのTomcatに置くのではダメなのかが解らない。


746 名前:デフォルトの名無しさん [2008/02/24(日) 21:43:33 ]
>>743
何のためにそれをするのか知らないがeclispeはtomcatのラウンチャーじゃない
tomcatは別途立てて、そこにDeployするべき
あとeclipseの1プロジェクトで複数のWebアプリケーションを動作させようというのも間違い
プロジェクトを分けなさない


747 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:50:47 ]
>744
"現在の接続ユーザーは " + userlist + "\n"
の部分だが、JTextAreaにまったく反映されないのか?
中身だけが空なのか、どっちだ?

748 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:53:00 ]
JDK 6 Update 4が落とせないんですが何が問題なんでしょうか。

エラーは承認することができないという内容で、いくつかの環境で試しましたが同様です。



749 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:53:30 ]
>747
userlistの中身がからで
現在の接続ユーザーはnullです という表示になっています。

750 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:56:26 ]
>>749
Chatroom#userlistに何も代入していない

751 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 22:02:11 ]
>750
回答ありがとうございます。

userlist.add(clientAddr);

上記の文でアドレスが代入されるものと思っていたのですが、
この文の書き方では代入されていないということでしょうか?

752 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 22:03:12 ]
それはローカル変数のuserlistであってChatroom#userlistではない

753 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 22:28:32 ]
>752

ありがとうございます。入ってると思ってたものが
別のものだったのですね。

助かりました、ありがとうございました。

754 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:29:39 ]
Class Parent {
 private int val;
 public getVal() { return val; }
 public setVal(int val) { this.val = val; }
 public Parent clone() {...}
}

みたいに、clone() を実装したクラスParentがあったとして、
これを継承した子クラス Child を作ります。
で、この Child でも clone() を実装したいのですが、
その Child#clone() はどうやって実装するのが普通ですか?

public Child clone() {
 Child c = new Child();
 c.setVal ( this.getVal() );
 ...
 return c;
}

と、親クラスの Parent#clone() の存在を完全に無視してもいいもんですか?
これだとどうもスマートじゃないような気がして、protected なコンストラクタを
親クラスに追加する、なんて方法も考えたんですけど、
典型的な手法があるのならばご教示ください。

755 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:35:47 ]
>>754
class Parent implements Cloneable { 
 private int val; 
 public getVal() { return val; } 
 public setVal(int val) { this.val = val; } 
 public Parent clone() {
  try{
   return (Parent)super.clone();
  } catch(CloneNotSupportedException e){
   throw new RuntimeException(e);
  }
 }
}
class Child extends Parent {
 public Child clone() {
  return (Child)super.clone();
 }
}

756 名前:デフォルトの名無しさん [2008/02/24(日) 23:40:36 ]
Javaの勉強始めました。

アクセス就職子protectedについて理解が足りないので教えてください。
protectedつけることで、
『自分のクラス内のメソッド 又は 継承されたサブクラス内のメソッドからしかアクセスできない』
そのように直感的に感じたのですが、
間違っているようで。
public class Purotekuto {
public static void main(String[] args) {
Test21 hogehoge = new Test21();
System.out.println( "値を出力:" + hogehoge.protectedInteger );
}}
public class Test21 {
protected int protectedInteger;
Test21() {
this.protectedInteger = 0;
}
public void setValue( int value ) {
this.protectedInteger = value;
}
public int getValue( int value ) {
return this.protectedInteger;
}}
このコードでは、main()から、クラスTest21のメンバ、protectedIntegerにアクセスできずに、
エラーか何かになると思ったのですが、普通に動きました。
自分の考えの何がまずいのでしょうか。。。

757 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:45:28 ]
>754
super.clone() を使うかどうかは状況次第じゃね?
というか、普通はsuper.clone()は使えない方が多いと思う。
帰ってくるのはParentクラスのインスタンスだから、結局は値をコピーしなければならなくなるから。

758 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:46:09 ]
>>754
何のための継承、何のためのオーバーライド。
何がスマートじゃないんだ。感覚的に言われてもな。

ちなみに、cloneを使うなら、Cloneable を implements すること。
// 詳しくは Clonable, Object.clone 参照。

>>756
同じパッケージからもアクセスできるから。以上。



759 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:47:23 ]
>756
もう1つ条件があって、「同一パッケージ内からのアクセス」もOK

760 名前:756 [2008/02/25(月) 00:01:54 ]
758,759 ありがとうございます。

指摘を受けて調べました。
パッケージ化しないことには、ソースはばらばらのパッケージ的な扱いと、勝手に勘違いしていました。
デフォルトのパッケージ、という扱いになるのですね。
勉強になりました。

761 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:09:47 ]
と言うかデフォルトパッケージの使用は避けてくれ。

762 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:11:27 ]
>>757-758
ありがとうございます。
ちょっと理解できてきました。

763 名前:756,760 mailto:sage [2008/02/25(月) 00:18:14 ]
>761
というと、必ず特定のパッケージに入れることを明示することが望ましいということでしょうか。
自分今回痛い目にあったので、761の指示に従って付いてまいりますが。

764 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:48:09 ]
>>763
デフォルトパッケージ以外のパッケージに属するクラスから
一切呼び出しが出来ない。(JDK 1.4 以降)

プログラミングの一般論としても
何らかの名前空間に所属させるのは
良い習慣だと思う。

765 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:00:16 ]
>>754
普通はコピーコンストラクタを作る
Cloneable は Java の失敗作とジョシュアっちが言ってました

766 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 04:11:37 ]
これからjavaを学ぼうと考えています。
JAVAのSDK沢山種類があるようですが、
どれを使用すれば良いでしょうか?

767 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 04:28:17 ]
>>766
多分新しいのを使っとけばいいんじゃないだろうか

768 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 04:54:25 ]
使う方のソースはそれで良いけど宣言する方のソースはアノテーション必要でしょ。



769 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 04:55:33 ]
↑誤爆


770 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 07:44:10 ]
SE(スタンダードエディション)でおk

771 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 08:40:00 ]
>>733
\→\\
それと、カレントドライブの変更まではcdで出来ないけど、
その辺は大丈夫かな?

772 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 09:14:34 ]
Timestamp型の変数から"yyyy/MM/dd"といった形の文字列で
値を取り出すにはどうしたらよいでしょうか?

773 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 09:34:57 ]
String s = new SimpleDateFormat("yyyy/MM/dd").format(timestamp);

774 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 09:37:02 ]
>>772
SimpleDateFormat("yyyy/MM/dd")でformatすれば?

775 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 09:44:18 ]
質問です。
シングルトンを多数作りたいんですが、
private static Singleton instance = new Singleton();
public Singleton getInstance(){return instance;}
private Singleton(){}
といったおきまりパターンを各クラスに書かないと行けませんが面倒です
AbstractSingletonを継承したらgetInstance()で各シングルトンのインスタンスが取れるようになる
みたいな事ができれば便利ですけど、staticフィールドなのでそれもママなりません。
なんか旨い方法はありませんか?

776 名前:デフォルトの名無しさん [2008/02/25(月) 09:49:44 ]
ド素人質問ですみません;;
テキストフィールドに入力された文字列を
ボタンが押されたときに変数com_defに入力する
プログラムを作りたいのですが、
下のようにやるとローカル変数 i は内部クラスからアクセスされます。final で宣言される必要があります。
とエラーが出ます。
対処法を教えてください。よろしくお願いします。
text[i] = new JTextField("",2);
button1[i] = new JButton("変更");
button1[i].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {

int com_def = Integer.parseInt(text[i].getText());

System.out.println(""+com_def);
}
});

777 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 10:01:15 ]
>>773, 774
ありがとうございます。
できました。

778 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 10:11:39 ]
>>775
eclipse ならテンプレートを使って、少し楽が出来る。下のほうに例がある。
ttp://www.eclipsewiki.net/eclipse/index.php?%A5%C6%A5%F3%A5%D7%A5%EC%A1%BC%A5%C8

>>776
メソッドとその内部クラスとで共用で使う変数は、メソッド内 final として、コンパイルを通す。
他にも方法はあると思うけど、それ以上なら、クラス内クラスにしてちゃんと定義しましょ。



779 名前:デフォルトの名無しさん [2008/02/25(月) 16:41:22 ]
String s = "ab" + \r + "cd" + \n + "ef";
正しく直してください。

780 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 16:43:38 ]
String s = "ab\rcd\nef";
直しました。

781 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 16:43:54 ]
String s = "ab\rcd\nef";

782 名前:781 mailto:sage [2008/02/25(月) 16:44:30 ]
かぶった...orz

783 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 16:46:12 ]
780,781 ありがとうございます。

784 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 16:47:23 ]
qa3808666 かぶってる...

785 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 17:24:32 ]
それはかぶってるんじゃなくてマルチポストだろう…

786 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 17:47:04 ]
tomcatのjsp-examplesにあるFORM認証のサンプルについて質問です。
まず操作を1->5の順で行った結果を書きます。

1.hostname:port/jsp-examples/security/protected/index.jspにアクセスするとFORM認証機能が働きlogin.jspが表示される。
2.login.jsp -> Username/Passwordを間違えて入力->error.jspが表示される。
3.error.jsp -> "try again"をクリック -> login.jspが表示される。
4.login.jsp -> Username/Passwordを正しく入力 -> login.jspが再表示される。
5.login.jsp -> Username/Passwordを正しく入力 -> HTTPステータス 404 - /jsp-examples/security/protected/j_security_check

4でUsername/Passwordを正しく入力しているので1のindex.jspに飛ぶことを期待したのですが、login.jspが再表示されました。
login.jspの出力内容がブラウザに表示された時に、ソースを表示してみると
□2のlogin.jsp
<form method="POST" action='j_security_check;jsessionid=74394043647C95BAC48CC67ECDFFEFB7' >
□4のlogin.jsp
<form method="POST" action='j_security_check' >
比較してみると、4のソースではセッションIDが付加されていない為に、本来の遷移先のURLを見失ってしまっている、ということでしょうか?

jspソースファイルを見ると、login.jspもerror.jspもresponse.encodeURL()の結果をセットしていました。
login.jspのリクエスト箇所
<form method="POST" action='<%= response.encodeURL("j_security_check") %>' >
error.jspからlogin.jspを表示するリンク箇所
<a href='<%= response.encodeURL("login.jsp") %>'>again</a>.

今のままだとerror.jspからブラウザの戻るボタンで前画面(login.jsp)に戻らないと、認証後に期待したURLへ遷移してくれません。
error.jspにあるアンカータグでlogin.jspに戻った時も同じ動きにさせたいのですが、どのように修正すれば対応できるでしょうか?

787 名前:786 mailto:sage [2008/02/25(月) 17:51:39 ]
携帯のブラウザでも見るので「JavaScriptは使わない」という前提でお願いします。

788 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 18:37:01 ]
自作のある圧縮アーカイブの解凍ストリームを作ろうと思っています。
その圧縮形式はライブラリを持っており、InflaterInputStreamを利用すると比較的に楽に実現できると考えたのですが、
read()やread(byte[],int,int)など、いずれにせよユーザーが決めるバッファのサイズで解凍を行う必要があるため、今回のような解凍する側で単一バイト読み込み時に出力されるデータを決めるライブラリを持った圧縮形式ではどのように行うべきなのか分かりません。
解凍したデータもバッファリングして、ユーザーのサイズに合わせて出力すれば実現はできると思うのですが、何か他にいい方法はないものかと思い質問しました。
Inflaterのソースも読んでみたのですが、肝心の部分はnativeメソッドになっており結局どのような実装なのか分かりませんでした。良い方法がございましたら教えてください。



789 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 19:24:42 ]
>>788
>解凍したデータもバッファリングして、ユーザーのサイズに合わせて出力すれば実現はできると思うのですが

それしかないのでは・・・
1バイトだけ返すread()を実装すればあとはデフォルトの実装があるので、
class MyInputStream extends InputStream {
 private byte[] buf;
 private int pos, size;
 public int read() throws IOException {
  if (pos == size) {
   // 解凍データをbufに詰めてsizeをセット
   pos = 0;
  }
  return buf[pos++];
 }
}
これだけでも一応動くよ
InflaterInputStreamをどう利用しようとしてるのかよくわからんが、あれはzlibストリーム専用

790 名前:789 mailto:sage [2008/02/25(月) 19:27:03 ]
×return buf[pos++];
○return buf[pos++] & 255;
でした・・・

791 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 20:59:08 ]
>>775

邪道かもしれんが。 なんか旨い方法、ということなら。

Enum の中に書く定数は1つ1つがシングルトンだ。
全定数に共通のメソッドも振る舞いが異なるメソッドも実装できるぞ。


792 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/02/25(月) 21:04:53 ]
Javaにはプリミティブと参照が混在しています。
Listなどを使う時には参照型しか使えないのですが、
いっそすべてのintをIntegerに書き換えた方がいいでしょうか?
プリミティブ型の扱いをみなさんどうしていますか?
おれはRubyからJavaに来たので数字が参照型じゃないというのに
すごく違和感を感じます。ましてや混在しているというのは非常事態です。

今すごく悩んでいます。
みなさんがどうしているかを知りたいです。

793 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:09:13 ]
>>789
ネットに繋がらなくて返事が遅くなってしまいました。
聞いていた立場で申し訳ないです。
Inflaterを利用しようと思ったのは、形式に共通点が多く、いくつかをオーバーライドすればできそうな気がしたためです。
確かに本来の用途から外れますので使用すべきではありませんね。

やはりバッファかますことにします。
親切にどうもありがとうございました。

794 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:10:35 ]
>>792
せっかくプリミティブ型があるのにわざわざオブジェクトにする必要はないと思います。
コストの問題ももちろんですが、何より扱いにくいです。

795 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:18:04 ]
>>792

Integer って、オブジェクトだとは言っても、中のデータを書き換えられないから不便だよ。
List などには int を入れても auto boxing されるんだから、int のままでいいんじゃないかなあ。

みなさんがどうしているか、に関しては、「気にしていない」だと思う。


796 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:18:13 ]
>>792
そういう言語だから受け入れるしかない
Rubyは理想を重視した分遅くなってるし
C#はプリミティブ型の扱いを変えて両立させてるけどその分複雑になってたりする

797 名前:デフォルトの名無しさん [2008/02/25(月) 21:42:46 ]
Strint[] a = {"A","B"};
aの要素数を1にするtruncateみたいなものはありませんか?


798 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:54:32 ]
配列じゃなくてリストじゃ駄目なん?



799 名前:デフォルトの名無しさん [2008/02/25(月) 22:01:35 ]
>>798
Strint[] a; という配列でやりたいです。
Strint[] a = {"A","B"};
ここで処理して"A"が不要だと分かって、
a = {"B"};
とすればよいのでしょうか?
以前のaはa = {"B"};する直前にガベコされるのでしょうか?
それとも内部でtruncateみたいなことされて、aのアドレスは変わらないのでしょうか?

800 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/02/25(月) 22:04:44 ]
>>795
配列のautoBoxingがないです。
例えば

void methodA(int a)
にInteger型を放り込んだらこれはBoxingされますが、

void methodB(int[] a)
にInteger[]型を放り込むのはエラーになります。

配列からListを作る時にも参照型が強制されるので不利かと思いました。
(例えばArrayList<int>はエラーになる)

>>796
JRubyもダメでしょうか?(速度に関して)

801 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:05:33 ]
>>799
a = {"B"};
でよい。{"A","B"}はGCまかせ。
ちなみにGCは、不要になったら即実行される訳じゃないよ。

802 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:09:09 ]
>>801
ありがとうございます。ガベコに任せます。

803 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:09:22 ]
>>801
それ、初期代入でしかできないんじゃね?

804 名前:デフォルトの名無しさん [2008/02/25(月) 22:12:12 ]
>>803
そうでした。
Strint[] a; という配列でやりたいです。
Strint[] a = {"A","B"};
ここで処理して"A"が不要だと分かって、
Strint[] aTemp = {"B"};
のように、もう1つ変数が必要ですか?

805 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:16:45 ]
aTempの要素数はどうするの?
ArrayListを作って必要な要素だけ追加していって後で配列に変換したほうが早い
配列でやるにしてもどうせ同じようなことを自分でやることになる

806 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:17:13 ]
String[] a = {"A", "B"};
a = new String[1];
a[0] = "B";
でよくね?

807 名前:798, 803, 806 mailto:sage [2008/02/25(月) 22:18:52 ]
>>805
んだなぁ。
ArrayList<String> a = new ArrayList<String>();
a.add("A"); a.add("B");
a.remove(0);
とかでいいと思った。

808 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:25:09 ]
>>806
そうできるんですね。ありがとうございます。
>>807
STLってまだよく分からないんです。でもありがとうございました。



809 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:27:18 ]
STLw
それはおいといて,>>806でいいんだったら
String[] a = { "B" };
と全く変わらないよ

810 名前:798, 803, 806 mailto:sage [2008/02/25(月) 22:28:13 ]
STLはC++のライブラリのことじゃねーの?w
ちなみに配列への変換は
String[] array = a.toArray(new String[a.size()]);
でいいと思う






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<275KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef