0

我正在使用 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>

对于 servlet:

                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();

代码工作得很好但是我是新手,我想知道是否有任何方法可以在一页上完成相同的任务。如果是,那怎么办?请帮忙?

4

3 回答 3

2

有几种技术,我只能推荐。

您可以在一个 servlet 中完成所有操作,如下所示:

  • 在 HTTP GET(普通页面调用)上,填写数据model = do并使用表单viewrequest.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 回答
1

您正在寻找的是一个名为 ajax 的进程。

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

看一下将 jquery 与 servlet 一起使用,因此流程将类似于 javascript 中的以下内容。

$.post('/servlet');

然后在那个 servlet 中,只需执行插入 SQL 语句。

看看这里的简短示例以获得进一步说明。

于 2013-06-03T08:42:27.247 回答