在Java中将数据插入数据库而不进入下一个屏幕?

在Java中将数据插入数据库而不进入下一个屏幕?,java,jsp,servlets,Java,Jsp,Servlets,我使用JSP和servlet首先在JSP页面中显示一个表单,然后将所有参数插入servlet中的一个表中。下面是我正在使用的一些代码: <form action="ClassServlet" method="post"> <fieldset> <label for="year">Year</label> <input type="text" name="yea

我使用JSP和servlet首先在JSP页面中显示一个表单,然后将所有参数插入servlet中的一个表中。下面是我正在使用的一些代码:

         <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>

代码运行得非常好,但作为新手,我想知道是否有任何可能的方法在一个页面上完成相同的任务。如果是,那怎么办?请提供帮助?

您需要的是一个名为ajax的流程

您不希望转到新页面,而是希望向服务器发送消息以进行插入,但不进行页面更改

请看一看如何将jquery与servlet结合使用,因此在javascript中的流程类似于以下内容

$.post('/servlet');
然后在该servlet中,只需执行insert SQL语句


请看一个简短的示例以进一步说明。

您要寻找的是一个称为ajax的过程

您不希望转到新页面,而是希望向服务器发送消息以进行插入,但不进行页面更改

请看一看如何将jquery与servlet结合使用,因此在javascript中的流程类似于以下内容

$.post('/servlet');
然后在该servlet中,只需执行insert SQL语句


请看一个简短的示例以进一步说明。

在java脚本中使用XmlHttpRequest,您可以将输入和输出都放在同一个页面上

下面的代码片段应该适合您

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

在提交按钮的单击事件中使用此代码。。。然后,它会将请求发送到“ClassServelet”,并在警报框中显示输出。

使用java脚本中的XmlHttpRequest,可以在同一页面上同时显示输入和输出

下面的代码片段应该适合您

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

在提交按钮的单击事件中使用此代码。。。然后它会将请求发送到“ClassServelet”,并在警报框中显示输出。

有几种技术,我只能推荐

您可以在一个servlet中完成这一切,如下所示:

    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();
  • 在HTTP GET(正常页面调用)上,填充数据模型=do
    request.setAttribute(“TeacherId”,TeacherId)
    并将其与表单、视图一起转发到JSP
  • 在HTTPPOST上(从表单返回),执行SQL插入,对于新的情况,调用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();

有几种技术,我只能推荐

您可以在一个servlet中完成这一切,如下所示:

    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();
  • 在HTTP GET(正常页面调用)上,填充数据模型=do
    request.setAttribute(“TeacherId”,TeacherId)
    并将其与表单、视图一起转发到JSP
  • 在HTTPPOST上(从表单返回),执行SQL插入,对于新的情况,调用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();

你听说过Ajax吗?是的,但从未尝试过(实际上我是第一次使用J2ee)。Ajax解决了你的问题。了解Ajax并了解如何将其添加到您的项目中。您听说过Ajax吗?是的,但从未尝试过(实际上我是第一次使用J2ee)。Ajax解决了您的问题。了解Ajax并了解如何将其添加到项目中。