1

そのため、単純なフォームを使用してユーザーから入力を取得し、データベースから必要な情報を取得して投稿しようとしています。ただし、HTML ページでは、送信ボタンはフォームをクリアするだけです。以下は、アクションで参照される html ファイルと java ファイルです。データベースと対話するファイルが見つからないことはわかっていますが、私の問題はこれら 2 つのうちの 1 つにあると思います。必要に応じて後で投稿できます。私の質問は、「アクション」でサイトに移動するのではなく、送信ボタンがフォームをクリアするのはなぜですか?

<form>
        <FORM METHOD=POST ACTION = "http://uml.cs.uga.edu:8080/michael_crosby_courses/Schedule">
        Class 1: <input type=text name="Class1"><br>
        Class 2: <input type=text name="Class2"><br>
        Class 3: <input type=text name="Class3"><br>
        Class 4: <input type=text name="Class4"><br>
        <input type=submit>
</form>





import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Schedule extends HttpServlet {

public void doPost(HttpServletRequest  req, HttpServletResponse res) throws ServletException, IOException {

    PrintWriter toClient = res.getWriter();
    String field;
    String val;
    Vector classes = null;
    Vector totalHours = null;
    String query = null, query2 = null;
    String class1 = null, class2 = null, class3 = null, class4 = null;
    int i, sum=0;

    res.setContentType("text/html");

    toClient.println("<html>");
    toClient.println("<title>MyEcho</title>");
    toClient.println("<body>");

    Enumeration values = req.getParameterNames();

    if( values.hasMoreElements() ) {

        class1 = req.getParameter("Class 1");
        class2 = req.getParameter("Class 2");
        class3 = req.getParameter("Class 3");
        class4 = req.getParameter("Class 4");
        toClient.println("<P><P><B>Your Schedule:</B></P></P>");
        query = "select * from csci_section where number = " + class1 + " or number = " + class2 + " or number = " + class3 + " or number = " + class4 + ";";

    }

    query2 = "select credit from csci_section where number = " + class1 + " or number = " + class2 + " or number = " + class3 + " or number = " + class4 + ";";

    if( query == null )

        toClient.println("<P><P><B>No query given;  resubmit </B>");

    else if(1==1) {             //if the request did not return anything, i.e. the number given is not a class

    } else{

        toClient.println("<P><B>Running search for classes: </B>" + class1 + ", " + class2 + ", " + class3 + ", " + class4 + ", "  + "<P><P>" );

        classes = AccessMySQL.Execute( query );
        totalHours = AccessMySQL.Execute(query2);
        toClient.println("<P><P><B>Received classes: </B></P></P>");

        for( i = 0; i < classes.size(); i++ ){ //prints out info

            toClient.println( "<p><tt>" + (String)classes.elementAt( i ) + "</tt></p>" );

        }

        for(i=0; i < totalHours.size(); i++){
            sum += Integer.parseInt((totalHours.elementAt(i)).toString());
        }
        toClient.println("<p><tt>The total number of class hours is: " + sum + "</tt></p>" );
    }

    toClient.println( "</body>" );
    toClient.println("</html>");

    toClient.close();


} //closes doPost

}

4

1 に答える 1

2

<form>タグが2つあるからです。最初のもの(アクションなし)は、ブラウザーユーザーが使用するものです。それを削除すると、期待どおりに動作し始めるはずです。

<form>  <-- Remove this one
    <FORM METHOD=POST ACTION = "http://uml.cs.uga.edu:8080/michael_crosby_courses/Schedule">
于 2012-11-14T19:05:22.423 に答える