我正在尝试使用 JSP、Servlet 和 JDBC 学习 jQuery Ajax。
什么都在尝试:我在 JSP 中有两个文本框。当我在第一个中输入内容并点击 Tab 时,在其模糊事件中,我对一个 servlet 进行 getJson() 调用,该 servlet 又调用一个 JDBC 处理程序(我已经独立测试过并且工作正常,因此不包括在此处)。在 servlet 中,我正在设置内容类型,使用 Gson 库将从 JDBC 检索到的数据转换为 Json 并返回它。
主要问题是,当我点击选项卡和文本框的 onblur 事件调用它执行 getJson 但 servlet 没有得到执行,因为在 Eclipse 中我已将 println() 放入 Servlet。它不会在 Eclipse 控制台上打印任何内容。是否应该在控制台上放任何东西(因为它是从 JS 调用的)?因为没有从 Servlet 返回数据,所以 getJson 中的回调成功函数也没有被执行(我在 IE F12 工具中确认了这一点,并在其中添加了警报)。
我的 JSP
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript" src="scripts/jquery-1.9.0.min.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script>
function doTransact()
{
$.getJSON('AjaxController?text='+$("#inText").val(),
function(data)
{
//alerting to check whether callback function is in
//fact getting called or not
alert(data.text);
$("#outText").valdata.text);
}
);
}
</script>
</head>
<body>
Type here:<input onblur="doTransact();" type="text" id="inText"></input>
<br />
Get here:<input type="text" id="outText"></input>
</body>
</html>
为了响应 getJSON 请求,我编写了 AjaxController servlet 并添加了:
package com.exp.controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.exp.dao.AjaxDAO;
import com.google.gson.Gson;
public class AjaxController extends HttpServlet
{
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
System.out.println("done");
response.setContentType("application/json");
AjaxDAO adao = new AjaxDAO();
String text = adao.setGetText(request.getParameter("text"));
//printing on console to check whether Servlet is in fact gettiing called or not
System.out.println("In Ajax Controller");
if(text!=null)
{
PrintWriter out = response.getWriter();
String convertedJson = new Gson().toJson(text);
out.println(convertedJson);
}
}
}
我已经正确配置了 web.xml,AjaxController 没有被调用的原因是什么?谁能发现它?还是我做错了?而且这种方式是好的做法还是我应该遵循其他方法?
编辑
这是调试时间视图的样子: