【发布时间】:2017-10-30 14:22:22
【问题描述】:
我是 java servlet 和 dataTables 的新手,我很难让我的 java servlet 执行:
我正在使用带有 tomcat 8.0.27 和 DataTables 10.1.16 的 netbeans 8.2 IDE
我的 NetBeans 结构如下所示:
战争看起来像这样:
我的 index.jsp 看起来像这样:
DataTable 定义(在 html 头部)
<script lang='javascript'>
$(document).ready(function () {
$('#memberList').dataTable( {
"processing": true,
"serverSide": true,
"ajax": {
"url": "${pageContext.request.contextPath}/SubSearch",
"type": "GET"
}
});
});
</script>
Html Body:
<body>
<h1>Member TXN Display</h1>
<div>
(Enter Search Criteria)<br/>
<form action="${pageContext.request.contextPath}/SubSearch" method="post" >
<input type="text" id="SearchCritiera" style="width:322px">
<input type="submit" value="FIND">
<table id="memberList">
<thead>
<tr>
<th>Member #</th>
<th>Last Name</th>
<th>First Name</th>
</tr>
</thead>
</table>
</form>
</div>
</body>
</html>
context.xml 看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/MemberTXN"/>
单击提交(查找)按钮会调用 servlet,但是,'ajax' 似乎根本没有命中。我在 servlet 中有断点,当我在“调试”模式下运行时,由于 document.ready 代码,我预计会遇到这些断点,但没有骰子。
Servlet 代码:
package member;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.gson.*;
/**
*
* @author Ainsworth
*/
@WebServlet(name = "SubSearch", urlPatterns = {"/SubSearch"})
public class SubSearch extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code>
* methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
JsonObject jMembers = new JsonObject();
jMembers.addProperty("Echo","1");
jMembers.addProperty("TotalRecords", 7);
jMembers.addProperty("TotalDisplayRecords", 7);
JsonArray data = new JsonArray();
JsonArray row = new JsonArray();
row.add("123456789");
row.add("Trump");
row.add("Donald");
data.add(row);
row = new JsonArray();
row.add("123456799");
row.add("Clinton");
row.add("Hillary");
data.add(row);
row = new JsonArray();
row.add("123456809");
row.add("Shcumer");
row.add("Chuck");
data.add(row);
row = new JsonArray();
row.add("123456819");
row.add("Warren");
row.add("Elizabeth");
data.add(row);
row = new JsonArray();
row.add("123456829");
row.add("Sanders");
row.add("Bernie");
data.add(row);
row = new JsonArray();
row.add("123456839");
row.add("DeVoss");
row.add("Betsy");
data.add(row);
row = new JsonArray();
row.add("123456849");
row.add("Meyers");
row.add("Seth");
data.add(row);
jMembers.add("Data", data);
response.setContentType("application/Json");
response.getWriter().print(jMembers.toString());
}
/**
* Handles the HTTP <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}
}
这是提交按钮的输出:
如果有人能指出我的方法的错误,我将非常感激
【问题讨论】:
-
我已将 Servlet 代码添加到说明中。注意:最初我没有打扰代码有效的 Json。这当然是模拟数据,但正如您所见,当使用提交键调用 servlet 时,输出与预期的一样。
标签: java ajax jsp servlets datatables