2010-09-01 17 views
6

Ich weiß, dass es eine ganze Reihe verwandter Fragen gibt, aber keine, die sich tatsächlich auf meine Frage beziehen, haben eine Antwort. Oder zumindest eine akzeptierte Antwort. Ich bin froh darüber falsch zu liegen, wenn mich jemand auf die Frage hinweisen kann. Auch bitte neu schreiben, wenn ich vermisst habe.Aufrufen eines Servlets von einer JSP-Seite mit jQuery Ajax

Meine Frage, wie der Titel sagt, ist, dass ich ein Servlet von meiner JSP-Seite aufrufen und eine Zeichenfolge oder HTML zurückgeben möchte.

Mein Servlet-Name ist MyFirstServlet.

Könnten Sie bitte, bitte seien Sie sehr spezifisch in Antworten, wie ich eine vollständige JSP, Java und Servlet Noobie bin.

Vielen Dank im Voraus.

Antwort

8

Erstellen Sie zunächst eine Servlet-Klasse, die auf der Grundlage der Anforderung die gewünschte Antwort zurückgibt. Es kann HTML, XML oder JSON sein. Ich würde vorschlagen, dafür JSON zu verwenden, da das in Java am einfachsten zu produzieren und in JavaScript konsumierbar ist. Sie können zum Beispiel Google Gson verwenden, um von einem vollwertigen Java-Objekt in einen JSON-String zu konvertieren (und umgekehrt). Z.B.

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOexception { 
    // Populate response data somehow. Can be a String, Javabean or Collection/Map of either. 
    Map<String, Object> data = new HashMap<String, Object>(); 
    data.put("success", true); 
    data.put("message", "Hello World!"); 
    data.put("param", request.getParameter("foo")); 
      
    // Write response data as JSON. 
    response.setContentType("application/json"); 
    response.setCharacterEncoding("UTF-8"); 
    response.getWriter().write(new Gson().toJson(data)); 
} 

Sobald das Servlet beendet ist, wo es sich gerade in web.xml die übliche Art und Weise. Z.B. auf einem url-pattern von /firstServlet.

Dann können Sie in jQuery $.getJSON() verwenden, um JSON von der angegebenen Ressource zu erhalten. Das erste Argument ist die URL, die offensichtlich firstServlet ist. Das zweite Argument ist die Callback-Funktion, mit der Sie die zurückgegebenen Antwortdaten bearbeiten können. Ich habe den Anforderungsparameter foo für reine Demonstrationszwecke übergeben, dies ist nicht zwingend erforderlich.

Sie können natürlich mehr tun, als nur eine einfache Warnung anzuzeigen. Z.B. das HTML-DOM auf der aktuellen Seite basierend auf den zurückgegebenen Daten zu verwalten/zu durchlaufen.

ich zwei Antworten mit praktischen Beispielen geschrieben haben, bevor hier, können Sie es nützlich finden auch:

Verwandte Themen