2

テキスト ボックスまたはテキスト領域からテキストを取得し、そのデータをテーブルに挿入できることを知っています。どうすれば逆にできるでしょうか。つまり、何らかの条件に基づいて、データベースからすべてのデータを特定のテキスト フィールドまたは領域に戻すにはどうすればよいでしょうか。


更新

私はミニプロジェクトをしなければなりません。その人事情報システム プロジェクトです。ID に基づいて従業員の詳細を更新できなければなりません。私がこれまでに設計し、構想した方法は次のとおりです。 ID のドロップダウン リストがあります。1 つを選択し、フォーム ハンドラーを使用して [OK] をクリックします。次に、従業員を追加するときに作成したフォームを表示するサーブレットに転送します。これらのテキスト フィールドは空白ではなく、上記の従業員を追加したときに挿入したデータで構成されています。では、これらの列の値を抽出してテキスト フィールドに戻すにはどうすればよいでしょうか。フィールド値を列属性名として設定して実験しましたが、表示されるのは値ではなく名前だけです。たとえば、(データベースで指定されているように) value=firstname を設定すると、テキストフィールドのデータは「firstname」になります。従業員の実際の名前ではありません。多分私はそれについて間違った方法で行っています。誰かがこれらの値を取得する方法を正確に教えてもらえますか?

4

3 に答える 3

1

サーブレットのdoGet()メソッドを使用してリクエストを前処理します(ブラウザでこのサーブレットのURLを呼び出す必要があります)。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Employee employee = getItSomehow();
    request.setAttribute("employee", employee);
    request.getRequestDispatcher("/WEB-INF/edit.jsp").forward(request, response);
}

JSP ELを使用して、HTML入力フィールドのvalue属性に表示します。

<input name="firstname" value="${employee.firstname}" />

ただし、これによりXSS 攻撃への扉が開かれます。fn:escapeXml()それを防ぐためにJSTLを使用してください。

<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
...
<input name="firstname" value="${fn:escapeXml(employee.firstname)}" />

参照:

于 2010-11-24T11:23:08.103 に答える
0

BalusC には良い答えがあるようですが、getItSomehow() メソッドについてもう少し詳しく説明したいと思います。使用しているデータベースを指定していないため、mysql を使用している場合の方法の例を示します。

[ステップ 1]: 簡単な Google 検索で正しい jdbc を取得する方法がわかります

    try{
        Class.forName("com.mysql.jdbc.Driver");
    }
    catch (ClassNotFoundException e){
        throw new AssertionError(e);
    }

[ステップ 2]: これで、データベースへの接続が確立され、ステートメントの準備が整います。

        String url = "jdbc:mysql:///"+database_name;
        Connection con = DriverManager.getConnection(url);

        Statement stmnt = con.createStatement();

[ステップ 3]: 最後に、select ステートメントを実行します。

        ResultSet rs = stmnt.executeQuery(
             "SELECT "+ "values you want to retrieve separated by commas"
           +" FROM "+ "table name"
           +" WHERE "+ "condition eg. id=123";

ResultSet オブジェクトに一連の結果を取得したので、それを解析して、要求したデータを取得できます。以下を使用できます。

        if(rs.next()){
               employee.setXXXX(rs.getString("XXXX"));
               employee.setYYYY(rs.getString("YYYY"));
         }
于 2010-12-16T16:03:08.940 に答える
0

次の方法で JSP のデータを取得できます。

  1. Bean オブジェクトのデータを取得する
  2. リクエストオブジェクトにBeanオブジェクトを設定
  3. リクエストを JSP にディスパッチする

次のコードに従います。

<%
    forumbean bean=(forumbean)request.getAttribute("userdata");
    String name=bean.getName();
    out.print("<input type='text' id='name' name='name' value='"+name+"'>");
%>

式言語を使用して、scriplet タグを回避することもできます。

于 2011-06-19T13:13:52.583 に答える