0

JSP、サーブレット、JDBC を使用して jQuery Ajax を学習しようとしています。

すべてが試していること: JSP に 2 つのテキスト ボックスがあります。最初のものに何かを入力して Tab を押すと、そのぼかしイベントで getJson() 呼び出しをサーブレットに行い、JDBC ハンドラーを呼び出します (これは個別にテストし、正常に動作しているため、ここには含まれていません)。サーブレットではコンテンツタイプを設定し、JDBCから取得したデータをGsonライブラリを使ってJsonに変換して返しています。

主な問題は、タブを押してテキストボックスの onblur イベントを呼び出すと、getJson が実行されますが、Eclipse でサーブレットに println() を配置したため、サーブレットが実行されないことです。Eclipseコンソールには何も出力されません。コンソールに何かを配置することになっていますか(JSから呼び出されるため)? サーブレットからデータが返されないため、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 サーブレットを作成して追加しました。

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 が呼び出されない理由は何でしょうか? 誰でもそれを見つけることができますか?それとも、間違った方法でやっていますか?また、この方法は良い方法ですか、それとも他のアプローチに従う必要がありますか?

編集

これは、デバッグ時間ビューがどのように見えるかです:

ここに画像の説明を入力

4

1 に答える 1