こんばんわ。
JSPにてIF文を使ったDBテーブル表示のWEBを作成したのですが
クローズの行でエラーが表示されてしまいます。
エラー内容は「型の開始が不正」ですというものです。
知識不足で恐縮ですがご教示願います。
<%@page contentType="text/html; charset=Windows-31J"%>
<%@page import="java.sql.*"%>
<%!
// サーブレットのinitメソッドに相当
public void jspInit() {
try {
// JDBCドライバをロード
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (Exception e) {
e.printStackTrace();
}
}
%>
<HTML>
<HEAD>
<TITLE>一覧</TITLE></HEAD>
<CENTER>
<B>一覧</B>
<TABLE border="3" BORDERCOLOR="#9999ff">
<TR>
<TD>年齢</TD>
<TD>電話番号</TD>
</TR>
String year = request.getParameter("年齢");
String namber = request.getParameter("電話番号");
<%
// データベースへのアクセス開始
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
// データベースに接続するConnectionオブジェクトの取得
con = DriverManager.getConnection("jdbc:sqlserver://sqlserverName;DatabaseName=NAME","ID","PW");
// データベース操作を行うためのStatementオブジェクトの取得
stmt = con.createStatement();
if(year.length() >= 0){ %>
// SQL()を実行して、結果を得る
rs = stmt.executeQuery("SELECT * FROM テーブルA where 年齢='"+ paramA +"'");
rs = stmt.executeQuery("SELECT * FROM テーブルB where 年齢='"+ paramA +"'");
<% } else if(namber.length() >= 0){ %>
rs = stmt.executeQuery("SELECT * FROM テーブルA where 電話番号='"+ paramC +"'");
rs = stmt.executeQuery("SELECT * FROM テーブルB where 電話番号='"+ paramC +"'");
<% } %>
// 得られた結果をレコードごとに表示
while (rs.next()){
String aa = rs.getString("名前");
String bb = rs.getString("住所");
%>
<TR bgcolor="#ccffcc">
<FORM method="post" action="Next.jsp">
<input type="hidden" name="num" value="<%= rs.getString("ID")%>">
<%-- 年齢フィールドの表示 --%>
<TD><%= aa %></TD>
<%-- 電話番号フィールドの表示 --%>
<TD><%= bb %></TD>
<TD align="center">
</form>
</TD>
</TR>
<%
}
} catch (Exception e) {
e.printStackTrace();
// エラー表示プログラム
out.write(e.getMessage());
} finally {
// データベースとの接続をクローズ
try { rs.close(); } catch (Exception e) {}
try { stmt.close(); } catch (Exception e) {}
try { con.close(); } catch (Exception e) {}
}
%>
</TABLE>
</BODY>
</HTML>
No.3ベストアンサー
- 回答日時:
kuwazooです。
---------------------------------------------
String year = request.getParameter("年齢");
String namber = request.getParameter("電話番号");
の部分のスクリプトレットで囲まれていないと言う部分が未熟故に分りかねます。
---------------------------------------------
jspでは、簡単に言いますとHTMLタグ(見た目)を書く部分と
プログラムを書く部分が含まれるということはご存知ですか?
で、jspでは、ここはHTML部分、ここはプログラム部分と
見分けて動作するわけです。(簡単に言うと)
見分けてもらう為には、ここは、宣言、ここは式、ここはプログラム
を書いたよ、ここは、HTMLを書いたんだよというふうに
書き方に決まりがあるのです。それを無視すれば、意図した通りには
絶対に動きません。もう一度、どう書いたらどう認識されるか
参考書をごらんになってみると良いかと思われます。
で、問題の、
String year = request.getParameter("年齢");
String namber = request.getParameter("電話番号");
ですが、これは、プログラムですよね?
HTMLとして、表示させる文字ではないですよね?
だとしたら、プログラムを書く場所にルールに従って
書く必要があります。
(※宣言の部分に書いた場合と、プログラムを書く場所に書いた場合
では、動作が違うので、ここも、参考書を見て適宜調整してください。)
とりあえず、今回は、プログラムを書く部分に書いてみて動作を確認してみたらいかがでしょうか?
というわけで、その後の行に <% が書いてありますよね?
これをコメントアウトするか、消してください。そして
String year = request.getParameter("年齢");
の上に書くようにしてください。その他はいじらないでください。
<% ~ %> で囲った部分は、javaプログラムと判断されるルールなので
これで、問題の2行がjavaプログラムとして解釈されるようになったわけです。ご参考になさってください。
※本は、誤植や間違いが多いのでそれをうつして実行しても動かない場合も多々あります。まず基本ルールを叩き込み、それを念頭に置きながら
ソースは見ていったほうが勉強にもなるし、吸収が早いと思われます。
ご回答ありがとうございます☆
とてもご親切かつ丁寧なご説明で分かりやすかったです!
>ここは、宣言、ここは式、ここはプログラム
少しは理解していたつもりでしたが再度、参考書にて
勉強します。。。
ご説明を受けてプログラムを眺めていると
javaプログラムと判断されていない部分に書いていた様です。
もう1度基本ルールを徹底したいと思います。
本当にありがとうございました♪
No.2
- 回答日時:
kuwazooです。
ちょと間違えました。String year = request.getParameter("年齢");
String namber = request.getParameter("電話番号");
のメンバ定義ですが、スクリプトレットで囲まれて
いないような気がするのですがどうでしょうか?
この他にもプログラムを書いている場所で
適切にスクリプトレットで囲まれているかどうか確認してみて下さい。
宣言<%! 宣言文; %>、式<%= 式 %>の部分も適切に記述されているか
確認をしてみて下さい。
プログラムを部分で、javaの環境でコンパイルエラーが
出るようなところはjspでもエラーになります。文法的に
あっているか、記述方法が正しいかどうか今一度ご確認を
してみてください。
この回答への補足
色々、考えてみて作成した所、IFの変更でエラーはでなくなりました。
ありがとうございます。
しかし、レコードが表示されないのですがません。
値を持ってきていない為にIF文が機能していない様に思います。
ご指摘頂いた
String year = request.getParameter("年齢");
String namber = request.getParameter("電話番号");
の部分のスクリプトレットで囲まれていないと言う部分が未熟故に分りかねます。
ご教示頂けませんでしょうか?よろしくお願い致します。
ありがとうございます!
メンバ定義はIF文を書く前には上記の記述で通っていた記憶があるのですがもう1度確認させて頂きたいと思います。
No.1
- 回答日時:
String year = request.getParameter("年齢");
String namber = request.getParameter("電話番号");
のメンバ定義ですが、スクリプトレットで囲まれて
いないような気がするのですがどうでしょうか?
この他にもプログラムを書いている(htmlタグ以外)場所で
適切なスクリプトレットで囲まれているかどうか確認してみて下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
フォーム上で押されたボタンによってサーブレットの処理を変えたい
Java
-
文字列が入っているtdを削除せず非表示にしたい
HTML・CSS
-
getParameterで値が取得できず、困ってます
HTML・CSS
-
-
4
jspからServletを呼び、元のjspページに戻るにはどうしたらよいですか?
Java
-
5
「<c:forEach タグが終了していません」というエラーが出てしまう
Java
-
6
JSPのクラスをコンパイルできない問題
Java
-
7
Java-jspの画面入力値保持について
Java
-
8
Eclipseのアンインストールの仕方
Java
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Eclipseで、プロジェクト名のと...
-
タグが閉じてないというエラー...
-
JSP内でString型からint型に変...
-
getParameterについて
-
eclipseでのsvn認証エラー回避方法
-
エラー:org.springframeworkが...
-
Javaのエラーについてです
-
tomcat起動時エラー
-
シンボルが見つかりませんとい...
-
Eclipse デバッグ エラー処理
-
enum列挙子に使える文字列と使...
-
mysqlのgetConnectionでエラー
-
JBossについて
-
javaサーブレットからのoracle...
-
TomcatとAapcheの連携について...
-
-Xlint:uncheckedオプションと...
-
xmlの読込エラー
-
S2daoのSqlファイルでのDBア...
-
arraylistの呼び出し
-
Java エスケープ文字
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipseで、プロジェクト名のと...
-
シンボルが見つかりませんとい...
-
タグが閉じてないというエラー...
-
Javaのエラーについてです
-
エラー:org.springframeworkが...
-
tomcat起動時エラー
-
JSP内でString型からint型に変...
-
コンパイル時にエラーが出てし...
-
構文エラーのやり直しについて
-
Eclipseで次のエラー箇所にジャ...
-
eclipseをバージョンアップした...
-
「型 ArrayList は総称ではあり...
-
JSP NullPointerException
-
Eclipseの環境について
-
JBossについて
-
eclipseでのsvn認証エラー回避方法
-
JSPのIF文を教えて下さい
-
eclipseでのライブラリの追加に...
-
致命的: StandardServer.await:...
-
Buttonを配列とすることができ...
おすすめ情報