使用java servlet从html表单加载数据,更新数据库并在表中的同一页面上显示数据

时间:2016-11-17 20:33:51

标签: java html ajax servlets html-table

我需要一些帮助。 我有一个由Java Servlet和html表单组成的小应用程序。 用户将一些数据放入html表单中,单击提交按钮后,java servlet将获取其post方法中的数据(将其加载到数据库中)。直到现在一切正常。我正在使用java servlet和tomcat。 我现在要做的是在html上的同一页面上的表格中显示数据。我发现,这可以通过ajax get方法实现。但不知何故,我无法做到正确。 这里简化了我的应用程序代码: Java Servlet:

@WebServlet(name = "MyServlet", urlPatterns = { "/MyServlet" })
public class MyServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse    response) throws ServletException, IOException {
response.setContentType("text/html");
// getting the values submitted by the user from the html form
String name = request.getParameter("name");
String surname = request.getParameter("surname");
// here goes some logic to load data in the database
// data from database is recieved as an array and is then converted to 
// json 
// here I can only print the whole json retrieved from DB 
// and it is displayed on another page with myurl/MyServlet
 response.setContentType("application/json");
 PrintWriter out = response.getWriter();
 response.setCharacterEncoding("UTF-8");
 out.println(json);

}
public void doGet(HttpServletRequest request, HttpServletResponse   response) throws IOException{
// nothing happens here
}

在我的html表单中,我有以下内容(此处仅提供最重要的内容):

<form action="MyServlet" method="post">
<input class="form-control" type="text" name="name" id="name">
<input class="form-control" type="text" name="surname" id="surname">
<input type="submit" class="btn btn-info" id="MyS"value="MyServlet">
<table class="table" id="table">
<tr>
    <th>name</th>
    <th>surname</th>
</tr>

用户输入存储在数据库中,一切正常。 问题是,我没有得到任何回复,我希望在表格中显示用户提供的所有数据,每次提交后都应该更新,用户应该保持在同一页面上(实际上并不知道,如何做这个)。 从数据库中我得到一个我可以转换为JSON的数组,所有这些信息都应该显示在一个表中。 我试着像这样写一些ajax.get(我在javascript中是一个真正的新手):

<script>
<script type="text/javascript">
$("#MyS").click(function() {

}
$.ajax({
    url: "/MyServlet",
    type: "POST",
    dataType: '{json: json}',
    data: myvalue,

    success: function(data) {  
        $('#table').append(data);
    },
});
</script>

但是没有数据显示在表格或某处。 我很乐意得到一些提示,我做错了什么,应该如何正确完成? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

使用这些行执行它并告诉我您在浏览器的控制台中得到了什么回复:

$.ajax({
    url: "/MyServlet",
    type: "POST",
    dataType: '{json: json}',
    data: myvalue,
    success: function(data) 
    {  
        console.log( data ); // logs this on success
        $('#table').append(data);
    },
    **error: function (textStatus, errorThrown) 
    {
        console.log( textStatus ); // log this on error
        console.log( errorThrown );
    }**
});