0

1)HTTPGETリクエストをシミュレートするリンクがHTMLページにあります(クエリ文字列を手動で指定します。このページは基本的に、doGet()メソッドでデータベースアクセスが行われるサーブレットを呼び出します。SQLクエリはクエリの一部として送信されます。ストリング。

http://localhost:8080/prelim_db_test_19_3_2013/md?q=select * from test.mobiletestはMySQL DBでmobileあり、はテーブルです)。

2)次に、結果はArrayListに格納されます。

ArrayList <mobile> mylist=new ArrayList<mobile> ();
mylist.add(new mobile(rs.getInt("id"),rs.getString("name")));

ここで、mobileは単にクラス変数としてのクラス(およびコンストラクターも)idですname

3)次に、次のArrayListように別のJSPに転送されます。

request.setAttribute("answer", mylist);
request.getRequestDispatcher("info.jsp").forward(request, response);

4)2番目のJSPでは<c:forEach>、テーブルの内容を繰り返して印刷するために簡単に使用します。

<c:forEach items="${answer}" var="i">
    <tr>
        <td>${i.id}</td>
        <td>${i.name}</td>
    </tr>
</c:forEach>

それでも、プロジェクトを実行すると、例外がスローされます。

javax.el.PropertyNotFoundException: Property 'id' not found on type mobile

この行で:

request.getRequestDispatcher("info.jsp").forward(request, response);

結果がコンソールに出力されるとき、DBアクセス自体は正常に機能することに注意してください(したがって、サーブレットもクエリ文字列で呼び出されます)。これがEclipseでの私のプロジェクトのセットアップです(セットアップ方法に問題がある場合):

ここに画像の説明を入力してください

私はここで何が間違っているのですか?

編集 mobile.java

public class mobile {
 int id;
 String name;
public mobile(int i,String n) {
    id=i;
    name=n;
}
}
4

2 に答える 2

1

モバイルクラスでは、フィールドにセッターとゲッターを配置する必要があります。そうすると、jspでアクセスできるのはあなただけです。セッターとゲッターを保持していなかったと思います。

于 2013-03-20T14:59:33.133 に答える
0

@PSRと@CaptainGouLashが正しく指摘しているように、クラス変数にJSTL経由でアクセスできるように、ゲッターとセッターを設定する必要があります。

参照: @CaptainGouLashによって指摘されたこれに加えてこれ

于 2013-03-20T15:51:17.680 に答える