0

JSP とサーブレットを使用して、最初にフォームを JSP ページに表示し、次にすべてのパラメータをサーブレットのテーブルに挿入しています。ここに私が使用しているコードの一部があります:

         <form action="ClassServlet" method="post">
        <fieldset>
            <label for="year">Year</label>
             <input type="text" name="year" id="year" class="text ui-widget-content ui-corner-all" /> 
             <label for="subject">Subject</label> <input type="text" name="subject" id="subject" value="" class="text ui-widget-content ui-corner-all" />
            <label for="name">Name of your class</label> <input type="text" name="name1" id="name1" value="" class="text ui-widget-content ui-corner-all" />
             <input type="hidden"   name="teacher" id="teacher"
            <%
              out.println("value=\""+TeacherId+"\""); 
             %>               
              class="text ui-widget-content ui-corner-all" />
             <input type="submit" value="Add">

        </fieldset>
    </form>

サーブレットの場合:

                PreparedStatement ps = null;

        ps = con.prepareStatement("insert into TB_classes( CLASS_ID , CLASS_TEACHER_ID , CLASS_NAME , CLASS_YEAR ,  CLASS_SUBJECT) values (? , ? , ? , ? ,?) ");

        ps.setString(1, "3");
        ps.setString(2, request.getParameter("teacher"));
        ps.setString(3, request.getParameter("name1"));
        ps.setString(4, request.getParameter("year"));
        ps.setString(5, request.getParameter("subject"));

        ps.executeUpdate();

コードは完全に正常に動作していますが、これに慣れていないので、1 つのページで同じタスクを実行する方法があるかどうかを知りたいと思いました。はいの場合、どのように?助けてください?

4

3 に答える 3

2

私が推奨できる技術はいくつかあります。

次のように、1 つのサーブレットですべてを実行できます。

  • HTTP GET (通常のページ呼び出し) で、データモデル= dorequest.setAttribute("TeacherId", teacherId);を入力し、フォーム、ビューで JSP に転送します。
  • HTTP POST (フォームから戻る) で、SQL INSERT を実行し、新しいケースでは doGet を呼び出します。

フォームで を使用します${TeacherId}

データベース自体から新しいレコード ID を取得します。MySQL では、INT AUTO_INCR フィールドになります。生成された主キーは、次のように取得できます。

    ps = con.prepareStatement("insert into TB_classes"
        + "( CLASS_TEACHER_ID , CLASS_NAME , CLASS_YEAR ,  CLASS_SUBJECT) "
        + "values (? , ? , ? ,?)");

    ps.setString(1, request.getParameter("teacher"));
    ps.setString(2, request.getParameter("name1"));
    ps.setString(3, request.getParameter("year"));
    ps.setString(4, request.getParameter("subject"));

    ps.executeUpdate();

    ResultSet primaryKeysRS = ps.getGeneratedKeys();
    if (primaryKeyRS.next()) {
        int classId = primaryKeyRS.getInt(1);
        ...
    }
    primaryKeysRS.close();
于 2013-06-03T08:57:56.050 に答える
1

JavaスクリプトでXmlHttpRequestを使用すると、同じページに入力と出力の両方を含めることができます。

次のコード スニペットはうまくいくはずです...

var xhReq = new XMLHttpRequest();
xhReq.open("post", "ClassServlet", false);
xhReq.send(null);
var serverResponse = xhReq.responseText;
alert(serverResponse); 

送信ボタンのクリック イベントでこのコードを使用すると、リクエストが「ClassServelet」に送信され、アラート ボックスに出力が表示されます。

于 2013-06-03T08:55:00.503 に答える