マンガでよめる痔のこと・薬のこと

サーブレットで電卓をつくりたいのですが、
参考になる本やサイトをぜひ教えてください。
よろしくお願いします。
ちなみに私はJAVA~JSPあたりを勉強しはじめて間もないプログラミング初心者ですm(_ _)m

このQ&Aに関連する最新のQ&A

A 回答 (4件)

まぁ課題とのことですので、



電卓として使えるか、使えないか。

は別で、サーブレットの基礎を勉強するのなら

・ブラウザで入力された値をサーブレットで渡す。
・サーブレットは受け取った値を計算して返す。
・ブラウザは計算結果を返す。

といったところで、

ブラウザ←→サーブレット

の値のやり取りを勉強できればいいのではないでしょうか?
(まぁ、どういう人が考えた課題だ?とは思う課題内容ですが。(笑)
プログラムのサンプル=電卓と考えちゃう人なんでしょうね。(笑))

脱線しました。

javaの第一歩「JAVAでHello World」左側からサーブレット編やJSP編を選べばまず最初の表示までの流れが分かり易く説明されてます。
http://www.hellohiro.com/

もう少し細かく説明した「TECHSCORE」左側からJ2EEを選んでサーブレットのとろこを読むといいでしょう。
http://www.techscore.com/index.html

もし本気で勉強するのなら、本や解説サイトを読むだけでなく、
実際に書いて、
動かして、
動かないから直して…
を繰り返すことです。

参考URL:http://www.hellohiro.com/
    • good
    • 0
この回答へのお礼

おお、具体的なサイトをご紹介くださってありがとうございます。
沢山情報が掲載されている充実したサイトですね!じっくり読んで勉強したいと思います!

>もし本気で勉強するのなら、本や解説サイトを読むだけで>なく、
>実際に書いて、
>動かして、
>動かないから直して…
>を繰り返すことです。

そうですよね。
プログラムを学ぶこと自体が初めてで、
予想以上につまづきまくりなのですが、
何度も試行錯誤を繰りかえして
考え方を理解しないと身につかないですよね!
アドバイス有り難いです。ありがとうございました!!

お礼日時:2005/07/18 13:38

そうですね・・・確かにJavaスクリプト向きですね。



気を取り直して・・・
まず電卓フォームはJSPで作りましょうか。
一つのテキストエリア、5つのボタン。
数字のボタンもほしいところですが、結構大変になりそうなのでそれは今後の課題と言うことで・・・
まず、テキストエリアに数字を入力します。
そこで演算ボタンを押したら、そのときの数値を変数Aに代入します。
いったんテキストエリアをクリアします(0をセットすればいいかな?)
又は次の数字を押し始めたところでクリアしてもいいでしょう。
そしてつぎに演算ボタンを押したらそのときのテキストエリアをBとします。
演算子をCに代入して、サーブレットにPOSTします。
サーブレットでABCから結果を求めて、JSPにディスパッチ(Forward)します。
その数値をテキストエリアにSet・・・

あんまりうまくないかな?
    • good
    • 0
この回答へのお礼

大変参考になります!
具体的な例をあげてくださったおかげで、なんとなく、こんな感じでつくればよいのかな~?というイメージができてきました。
ご丁寧なアドバイス本当にありがとうございました!^^

お礼日時:2005/07/18 13:47

#1です。



なるほど、課題ですか。
だったら、問題を確認した方がいいかもしれませんよ。

なにか条件がついていないですか?

単に「サーブレットを使って電卓を作りなさい」だけなら、私ならHTML+JavaScriptで作ってテストしたあと、サーブレットでそれを出力しておしまいにしますけど。
(一応使ったことになるはず)

その方がテスト等も楽ですからね。

授業の内容などによって何が正解か違いそうです。
    • good
    • 0
この回答へのお礼

再びご回答をくださりありがとうございます。

>HTML+JavaScriptで作ってテストしたあと、サーブレット>でそれを出力しておしまいにしますけど。

なるほど、大変参考になります。
とくに条件はついてないので、きっと一番効率のよいやり方ですね。
自分で考えてやれとだけ言われています。
皆様からのご回答を参考にしてやってみます!!

  

お礼日時:2005/07/18 13:26

そんなサンプル世の中にありますかね~。



隣の家に行くのに自動車を使うようなものですから、わざわざそんなものを作る人がいるとは思えないですけど。

サーブレットやJSPは簡単にいうと、サーバー側でHTMLを作ってクライアントに送るというものです。

ボタンを押すたびに、サーバーとの通信を行うのならサーブレットなどを使う意味がありますが、そうでないのなら単純にHTML+JavaScriptで可能なものです。

HTML+JavaScriptで可能なものをわざわざサーブレットで作る人はいないと思うのですが。。。

あっ、それと念のために説明しておきますが、JAVAとJavaScriptは名前は似てますが全くの別物です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
じつは、JSPサーブレット・JAVAなどを学校で勉強していて
今回のはその課題です…。何かとっかかりとして参考になる本かサイトがあればと思いまして^^;
HTML+JavaScriptでつくるほうが簡単なものをあえてわざわざサーブレットでつくるというのは難しいものですね…

お礼日時:2005/07/15 15:03

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QIOException ってどういうときに起こるのでしょうか?

IOException ってどういうときに起こるのでしょうか?

http://www.atmarkit.co.jp/fjava/rensai2/javaent12/javaent12.html
を見て勉強しています。

  catch ( IOException e) {
    System.out.println( "キーボードが故障しているのかもしれません" );
  }

と書いてあります。
ハード(キーボード)が故障しているのを Java のプログラムのレベル(ソフトウェア)で感知できるというのがよくわかりません。「

NumberFormatException の方はわかるのですが・・・

Aベストアンサー

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接続だったりするわけですけど、
InputStreamは、その入力元の情報を持っていないので、
データを読み取る際は常に
IOExceptionをキャッチするコードを書かなくてはいけません。
たとえ、絶対にIOエラーが発生しないストリームだとしても。

さらに付け加えるなら、
そもそも「標準入力=キーボード」であるとは限りません。
(一般的にはキーボードであることが多いですが。)
Javaでは、
System.setIn(InputStream)
を呼び出して、標準入力を変えてしまうことができますし、
標準入力を指定してプログラムを実行することができるOSもあります。

追伸1:
例外をキャッチしたときは、
スタックトレースをプリントすることをおすすめします。
catch (IOException e) {
e.printStackTrace();
}

追伸2:
そのプログラムでIOExceptionを発生させる最も簡単な方法は、
readLine()を呼び出す前に
標準入力(System.in)を閉じてしまうことです。
System.in.close();

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接...続きを読む

Qjava 電卓のプログラム

或る程度まで進みましたが、
ソースコードが分からず困っています;;

こんな問題なのですが・・・

課題1
以下の要件を満たす電卓のプログラム
Calculatorクラスを作成し、ソースコードを
示せ。

1.最初に標準入力から文字を1文字入力し
計算の種類や動作を決定する。
必要な入力文字と動作の種類の対応を下記に示す。
入力文字  動作
  +    数値a,bを受け取りa+bの結果を表示する
  -    数値a,bを受け取りa-bの結果を表示する
  *    数値a,bを受け取りa*bの結果を表示する
  /   数値a,bを受け取りa/bの結果を表示する
      ただし、b=0の時は「Infinity」と表示する
  !    数値aを受け取りaの階乗を計算し表示する
  q   終了する
2. 計算の種類が決定した後、標準入力から計算に必要な数字を入力する
3.計算が終了した後、再度、標準入力からの動作の
種類を受け付ける。

こんな感じです。

で、一応ここまで進んでいます。
import java.io.*;
public class Calculator {
public static void main(String[] args) throws IOException {
BufferedReader buf = new BufferedReader(
new InputStreamReader(System.in));
int i = 0;
int answer = 1;
System.out.println("+、-、*、/、!、qから選んで入力してください");
String s = buf.readLine();
System.out.println("数字を二つ入力してください");
int a = Integer.parseInt(buf.readLine());
int b = Integer.parseInt(buf.readLine());
if (s.equals("+")) {
System.out.println(a + b);
}
if (s.equals("-")) {
System.out.println(a - b);
}
if (s.equals("*")) {
System.out.println(a * b);
}
if (s.equals("/")) {
System.out.println(a / b);
}
if (s.equals("!")) {
System.out.println("階乗の計算をします。数字を一つ入力してください");
while (i < a) {
i++;
answer = i * answer;
System.out.println("a!=" + answer);
}
}
if (s.equals("q")) {
//終了する処理
}
}
}

とりあえず、自分でなんとか・・・。
後、残ったのは割り算で
bに0が入力された時にInfinityと表示するのと、
階乗と終了する処理・・・・。
そして、終了の命令があるまで計算を続ける
ソースを書く・・・。

ここからどのようにすればいいのでしょうか・・・
教えてください。お願いします!

或る程度まで進みましたが、
ソースコードが分からず困っています;;

こんな問題なのですが・・・

課題1
以下の要件を満たす電卓のプログラム
Calculatorクラスを作成し、ソースコードを
示せ。

1.最初に標準入力から文字を1文字入力し
計算の種類や動作を決定する。
必要な入力文字と動作の種類の対応を下記に示す。
入力文字  動作
  +    数値a,bを受け取りa+bの結果を表示する
  -    数値a,bを受け取りa-bの結果を表示する
  *    数値a,bを受け取りa*bの結果を表示...続きを読む

Aベストアンサー

まず標準入力から1文字取得します。

System.out.println("+、-、*、/、!、qから選んで入力してください");
String s = buf.readLine();
String answer = "";

次に入力された種類によって必要な数だけ標準入力から数字を取得します。
if( s.equals("+") ) {
int a = Integer.parseInt(buf.readLine());
int b = Integer.parseInt(buf.readLine());
answer = Integer.toString(a + b);
}
if( s.equals("-") ) {
int a = Integer.parseInt(buf.readLine());
int b = Integer.parseInt(buf.readLine());
answer = Integer.toString(a - b);
}
// 省略
if( s.equals("/") ) {
int a = Integer.parseInt(buf.readLine());
int b = Integer.parseInt(buf.readLine());
if( b == 0 ) {
answer = "Infinity";
} else {
answer = Integer.toString(a / b);
}
}
if( s.equals("!") ) {
int a = Integer.parseInt(buf.readLine());
int value = 0;
for( int i = 0; i < a; i++ ) {
value *= (i + 1);
}
answer = Integer.toString(value)
}
System.out.println(answer);

answerをStringにすることで"Infinity"も出力することができます。
ただし全ての条件でInteger.toStringを行わないといけませんが。


qを入力されたときに終了する
例えば以下のメソッドでは return int; を必ず書きます。
public int sum(int a, int b) {
return a + b;
}
ここで戻り値がvoidのメソッドのときに途中で終了したい場合は
public void ave(int a, int b) throws Exception {
if( b == 0 ) {
return; //戻り値なし
}
System.out.println(a / b);
}

return;で処理を終了します。

つまり
if( s.equals("q") ) {
System.out.println("処理を終了します。");
return;
}
となります。

最後に終了の命令があるまで計算を続けるには"q"が入力されるまで無限ループさせればいいので
while( true ) {
System.out.println("+、-、*、/、!、qから選んで入力してください");
// 省略
System.out.println(answer);
}

まず標準入力から1文字取得します。

System.out.println("+、-、*、/、!、qから選んで入力してください");
String s = buf.readLine();
String answer = "";

次に入力された種類によって必要な数だけ標準入力から数字を取得します。
if( s.equals("+") ) {
int a = Integer.parseInt(buf.readLine());
int b = Integer.parseInt(buf.readLine());
answer = Integer.toString(a + b);
}
if( s.equals("-") ) {
int a = Integer.parseInt(buf.readLine());
int b = Integer.parseInt(buf.readLine(...続きを読む

QJava-jspの画面入力値保持について

画面にテキスト、ラジオボタン、リストボックス とボタンがあります。
ボタンを押すと、JAVAで処理を行い、jspのviewで表示します。

1.テキスト、ラジオボタン、リストボックスなどに値が入力、設定されている状態で
ボタンを押して処理後にテキスト、ラジオボタン、リストボックスの値が
変わらないようにしたいのですが、
その場合、たとえば、入力、設定値をセッションになどに格納しておき
jspの所で、セッションから値を設定すると言うような方法になるのでしょうか?

2.ボタン押して処理後、ラジオボタン、リストボックスの選択値も
  変えないようにしたいのですが、
  これはどのように実現するのが、適切なのでしょうか?


以上、よろしくお願いします。

Aベストアンサー

ボタンというのはフォームのサブミットボタンのことですよ?
つまり、画面遷移が起きることを前提とすると(元の同じ画面に戻るのも含みます)

テキスト、ラジオボタン、リストボックスの状態を「要求パラメータ」として
送信し、それを次画面に反映するというのが最も一般的な方法です。

フレームワーク struts のアクションフォーム&JSPカスタムタグを使うと比較的楽に
そういう画面が作れますが、多くのフレームワークでも大差ありません。
簡単な画面なら素のサーブレート+JSPでも十分作れます。

セッションでもできますが、 セッションはログイン情報などの保持など、
限定された範囲で使うのが普通です。また、結局セッションに最新の
テキスト、ラジオボタン、リストボックスの状態を送るには、「要求パラメータ」
を送信する必要があります。

AJAXを使うという方法もあります。この場合、ボタンは AJAX 処理だけを行い
画面遷移を起こさないので、サーバ側で画面のテキスト、ラジオボタン、
リストボックスの状態をもつ必要はありません。

QJSPからクラス(サーブレット)を呼び出す方法

JSPからクラス(サーブレット)を呼び出そうとしてるんですが
以下のエラーになってしまいます。
The requested resource (/Hello) is not available.

ネットで調べてみたら、パスの指定の仕方が悪いんじゃないかって感じがするので
色々パスを弄ってみましたが、ずっとavailableになります。
わかる方いらっしゃったらアドバイスよろしくお願いします。

※usebeanはこのエラーの前の段階で、getとset両方動くのを確認しています。
※「http://localhost:8080/javaroad/Hello」を直接WEBブラウザのURLに入れたら動きました。

【フォルダ構成 (Tomcat 6.0\webappsの直下) 】

javaroad
---------- index.jsp
---------- WEB-INF
-------------------- web.xml
-------------------- classes
---------------------------- HelloServlet.class

【index.jsp】
<%@ page contentType="text/html;charset=Shift_JIS" %>
<jsp:useBean id="GSBean" class="Testaaa.GetSetBean" />
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<form method="post" action="/Hello">
<input type="text" name="name1" maxlength="10" style="ime-mode: disabled">
<jsp:setProperty name="GSBean" property="userID" param="name1" />
<br><br>
<input type="submit" value="submit">
</form>
</body>
</html>

【web.xml】
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">

<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/Hello</url-pattern>
</servlet-mapping>

</web-app>

【HelloServlet.class】
import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {

response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<BODY>");
out.println(new java.util.Date());
out.println("</BODY>");
out.println("</HTML>");
}

以下試して駄目だったパスの一覧です。
<form method="post" action="Hello">
<form method="post" action="/Hello">
<form method="post" action="../servlet/Hello">
<form method="post" action="HelloServlet">
<form method="post" action="/HelloServlet">
<form method="post" action="../servlet/HelloServlet">
<form method="post" action="WEB-INF\classes/HelloServlet">
<form method="post" action="http://localhost:8080/javaroad/Hello">

JSPからクラス(サーブレット)を呼び出そうとしてるんですが
以下のエラーになってしまいます。
The requested resource (/Hello) is not available.

ネットで調べてみたら、パスの指定の仕方が悪いんじゃないかって感じがするので
色々パスを弄ってみましたが、ずっとavailableになります。
わかる方いらっしゃったらアドバイスよろしくお願いします。

※usebeanはこのエラーの前の段階で、getとset両方動くのを確認しています。
※「http://localhost:8080/javaroad/Hello」を直接WEBブラウザのURLに入れたら動...続きを読む

Aベストアンサー

<form method="get" action="Hello">

ではないでしょうか。

Qフォーム上で押されたボタンによってサーブレットの処理を変えたい

Urizakaです。
さて、さっそく質問です。
JSPの同一フォーム上に「登録」「修正」「削除」のボタンを置き、その押された
ボタンによってサーブレット内での処理が切り替わる(具体的には、違う
SQL文を実行し、違うJSPページをgetRequestDispatcherメソッドで生成
する)ようにしたいのですが、どのようにすればよいのでしょうか?
もちろんそれぞれの処理に対して別々のサーブレットを作り、javaScript
でそれぞれのサーブレットへ飛ぶように制御するという処理も考えたことは
考えたのですが、できれば一つのサーブレットで済ませたいと考えたもので
…宜しくお願いします。

Aベストアンサー

お恥ずかしい限りです。
前述の例、動くわけがありませんね(汗)

2つめの例、書きなおします。

---------------------------------------------------

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=button name=MyClick value=登録 onClick="func('Toroku');">
<input type=button name=MyClick value=修正 onClick="func('Shusei');">
<input type=button name=MyClick value=削除 onClick="func('Sakujo');">
<input type=hidden name=MySubmit>
</form>

<script language="JavaScript">
function func(MyCommand){
document.MyForm.MySubmit.value=MyCommand;
document.MyForm.submit();
}
</script>

■Servletでの処理
// リクエストの取得
String MyAction = req.getParameter("MySubmit");

// 処理の実行
if (MyAction.equals("Toroku")){...}
if (MyAction.equals("Shusei")){...}
if (MyAction.equals("Sakujo")){...}



---------------------------------------------------

こんな感じでどうでしょうか。
ちなみにこうやって書いておくと、フォームのボタンからじゃなくても
アンカーをクリックすることで同じ効果が出せそうな……

<a href="JavaScript:func('Toroku')">登録</a>

あ、でもまたボロが出そうなのでこの辺で(^_^;)

お恥ずかしい限りです。
前述の例、動くわけがありませんね(汗)

2つめの例、書きなおします。

---------------------------------------------------

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=button name=MyClick value=登録 onClick="func('Toroku');">
<input type=button name=MyClick value=修正 onClick="func('Shusei');">
<input type=button name=MyClick value=削除 onClick="func('Sakujo');">
<input type=hidden name=M...続きを読む

Q「httpステータス404」というエラーが出ます。

「httpステータス404」というエラーが出ます。

java初心者です、宜しくお願い致します。
EclipseでServletを書いてやりましたが、以下のようなエラーが出ます、
原因はなんでしょうか、宜しくお願い致します。
「httpステータス404-/Servlet%E7%B7%B4%E7%BF%92/ ServOutput」

Aベストアンサー

Not Found
という意味です。
そのファイルが無い。あるいはリンクが間違っています。
詳しくは参考URLをみてください。

参考URL:http://ja.wikipedia.org/wiki/HTTP_404

QonClickで関数呼出し後に、結果に応じてsubmitを実行する方法

JavaScriptで、
function func() {
 if (a==0) {
  alert("処理しない");
  return false;
 }
 return true;
}
と、a=0ならfalseを返し、それ以外ならtrueを返す関数を定義しています。

そして、FORMタグで
<FORM NAME="FormName" ACTION="next.html">
<INPUT TYPE="button" VALUE="next" NAME="button1" onClick="return func();submit();">
</FORM>
と記述しています。
要は、ボタンを押下した際にfunc関数がtrueを返せば、next.htmlに
遷移させたいのですが、上記記述では、遷移しません・・・
onClick部分にonClick="return func(),submit();"と記述した場合、
func関数の実行結果がtrueでもfalseでも遷移してしまいます。
そこで、なんとなくonClick="return func()&&submit();"と記述してみたところ、
func関数がtrueの時のみうまく遷移するようになりました。

これは偶然そう動作しているのでしょうか、それとも上記は正しい記述方法なのでしょうか?
正しい記述方法ならいいのですが、上記以外に正式な記述方法があれば
教えていただけないでしょうか?

※TYPE="submit"にすればいいとは思うのですが、buttonで実現したいと
考えております。

JavaScriptで、
function func() {
 if (a==0) {
  alert("処理しない");
  return false;
 }
 return true;
}
と、a=0ならfalseを返し、それ以外ならtrueを返す関数を定義しています。

そして、FORMタグで
<FORM NAME="FormName" ACTION="next.html">
<INPUT TYPE="button" VALUE="next" NAME="button1" onClick="return func();submit();">
</FORM>
と記述しています。
要は、ボタンを押下した際にfunc関数がtrueを返せば、next.htmlに
遷移させたいのですが、上記記述では、遷移しませ...続きを読む

Aベストアンサー

3つのパターンをみる限り、理由は以下の通りと思います。
1.セミコロン(;)で区切った場合、
この場合、「return func();」と「submit();」とは別の文です。returnはその時点の値を戻して、それ以降の動作を打ち切ってしまいます。よって、onClickイベントはfuncメソッドの戻り値(true/false関係なく)を戻して、そこで終了、それ以降のsubmitは実行しないとなります。

2.カンマ(,)で区切った場合、
この場合、「return func(),submit();」が1つの文となります。この「,」は、左右の式を評価して、右式を結果とする演算子です。よって、funcメソッド、submitメソッド両方を評価するため、funcメソッドの戻り値に関係なく、submitされます。

3.&&で区切った場合、
論理演算子「&&」は、左右ともにtrue(0以外)の場合のみtrueとする演算子です。また、2項論理演算子は左式から評価し、左式だけで全体の結果がわかる場合、右式を評価しません。よって、funcメソッドがfalseを戻した場合、その時点でsubmitを評価しなくても演算結果は必ずfalseとなるのでそこで打ち切られ、trueを戻した場合、submitを評価しないと演算結果を得られないため、遷移したわけです。「&&」を「||(論理和)」に変更すると逆の結果得たと思います。

さて、では3の「&&」が正しいかと言われたら、文法上は正しいです。ただし、他人がみてわかるとは思えません。
そこで、以下の記述はいかがでしょう。読んでみてソースを理解できますか。


<FORM NAME="FormName" ACTION="next.html">
<INPUT TYPE="button" VALUE="next" NAME="button1" onClick="func()">
</FORM>

(中略)

// funcの定義
function func() {
 if (a==0) {
  alert("処理しない");
  return ;
 }
 document.FormName.submit();
}

要は、ボタンを押されたら、funcを呼び出せ。
funcでは、aが0ならば、そこで終了しろ。
そうでなければ、documentオブジェクト内のFormNameと言う名前のオブジェクトのsubmitメソッドを呼べ。
です。

3つのパターンをみる限り、理由は以下の通りと思います。
1.セミコロン(;)で区切った場合、
この場合、「return func();」と「submit();」とは別の文です。returnはその時点の値を戻して、それ以降の動作を打ち切ってしまいます。よって、onClickイベントはfuncメソッドの戻り値(true/false関係なく)を戻して、そこで終了、それ以降のsubmitは実行しないとなります。

2.カンマ(,)で区切った場合、
この場合、「return func(),submit();」が1つの文となります。この「,」は、左右の式を評価して、右...続きを読む

QjavaでDBから取得したデータのJSP表示

JAVAでDBから取得し
ArrayList shikakuCdList = shikakuCd_Data();
request.setAttribute("shikakuCdList", shikakuCdList);

JSPでコンボボックスに表示しようと思います
<% ArrayList bumonlist = (ArrayList)request.getAttribute("bumonCdList");%>


<% for ( int i = 0; i < bumonlist.size(); i++ ){%>
<option value=" (1)ここの記述方法も  "></option>
<% }%>

という記述にしていますが、うまく動きません。
よろしくお願いします。

Aベストアンサー

><% for ( int i = 0; i < bumonlist.size(); i++ ){%>
><option value=" (1)ここの記述方法も  "></option>
><% }%>
この部分ですが、

もし、shikakuCd_Data()の返すArrayListの中身が
JavaBean(下記はTestBean)であれば、

<% for ( int i = 0; i < bumonlist.size(); i++ ){%>
<% TestBean test = (TestBean)bumonlist.get(i); %>
<option value="<%= test.ゲッター %>"></option>
<% }%>

もしくは、useBeanアクションをつかい、
coreライブラリのforEachタグを使って出力する方法もあります。
こちらの方法がお勧めですが。

Qテキストボックスに数字しか入力できないようにするには?

タイトルの通りなのですが、あるテキストボックスに数字しか入力できないようにしたいのですが可能でしょうか?また、

「あいうえお 12345 「」:・、¥・」

というような文字列をコピーし、そのテキストボックスにペーストした際にも数字の12345だけが残るといった事も実現したいのですが…

どなたかご存知の方いらっしゃいましたら教えて頂けると幸いです。

Aベストアンサー

>英数字

では、こんな感じで

<input type="text" onKeyup="this.value=this.value.replace(/[^0-9a-z]+/i,'')">

Qeclipse でjspからJavaを実行するには

eclipse 3.4
tomcat 4.1
j2sdk1.4.2
sysdeo 3.2.1

を使用し開発を行おうとしています。

なんとかeclipse上からtomcatを起動し、localhost:8080 を指定してjspの画面は出るようになったのですが、jspからJAVAを呼ぼうとすると
エラーになってしまいます。

呼び出し部分は
<form action="servlet/javahello.FileUploadServlet" method="post" enctype="multipart/form-data" name="form1">
名前:
<input type="text" name="name">
<br>
ファイル:
<input type="file" name="file1">
<br>
<br>
<input type="submit" name="Submit" value="送信">
<input type="reset" name="submit" value="リセット">
</form>

とし、javaファイルは
eclipse上のプロジェクト(tomcat_test)のWEB-INF/src/配下に
servlet/javahelloを作ってFileUploadServlet.javaを入れています。

http://localhost:8080/tomcat_test/servlet/javahello.FileUploadServletを実行すると
エラーは以下のようなエラーで
HTTP Status 404 - /tomcat_test/servlet/javahello.FileUploadServlet

javaファイルが見つけられていないと思うのですが、
jspからjavaを見に行く時はどのように参照しにいくのでしょうか。

宜しくお願いします。

eclipse 3.4
tomcat 4.1
j2sdk1.4.2
sysdeo 3.2.1

を使用し開発を行おうとしています。

なんとかeclipse上からtomcatを起動し、localhost:8080 を指定してjspの画面は出るようになったのですが、jspからJAVAを呼ぼうとすると
エラーになってしまいます。

呼び出し部分は
<form action="servlet/javahello.FileUploadServlet" method="post" enctype="multipart/form-data" name="form1">
名前:
<input type="text" name="name">
<br>
ファイル:
<input type="file" name="file1">
...続きを読む

Aベストアンサー

>action="servlet/javahello.FileUploadServlet"
↑へのアクション先が存在しないから404エラーが発生していると思います。

これはurlって言うかjavaのクラスファイルを指定していませんか?
web.xmlで<servlet>や<servlet-mapping>でクラスファイルとurlの設定を行っていますか?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング