2010-09-01 10 views
6

Je sais qu'il y a pas mal de questions connexes ici, mais aucune de celles qui se rapportent réellement à ma question n'a de réponse jointe. Ou au moins une réponse acceptée. Heureux d'avoir tort si quelqu'un peut me diriger vers la question. Aussi s'il vous plaît repasser si j'ai tagué.Appel d'une servlet à partir d'une page JSP en utilisant jQuery Ajax

Ma question, comme le titre l'indique, est que je veux appeler une servlet à partir de ma page JSP et retourner une chaîne, ou html.

Mon nom de servlet est MyFirstServlet.

Pourriez-vous s'il vous plaît, s'il vous plaît être très précis dans les réponses que je suis un complet JSP, Java et Servlet noobie.

Merci beaucoup d'avance.

Répondre

8

Créez d'abord une classe Servlet qui renvoie la réponse souhaitée en fonction de la demande. Ce peut être HTML, XML ou JSON. Je suggère d'utiliser JSON pour cela, car c'est le produit le plus facile à produire en Java et consommable en JavaScript. Vous pouvez utiliser par exemple Google Gson pour convertir un objet Java complet en une chaîne JSON (et vice versa). Par exemple.

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)); 
} 

Une fois que le servlet est terminée, la carte juste en web.xml la manière habituelle. Par exemple. sur un url-pattern de /firstServlet. Puis, dans jQuery, vous pouvez utiliser $.getJSON() pour obtenir JSON à partir de la ressource donnée. Le premier argument est l'URL, qui est évidemment firstServlet. Le deuxième argument est la fonction de rappel dans laquelle vous pouvez travailler sur les données de réponse renvoyées. J'ai passé le paramètre de demande foo à des fins de démonstration pure, ce n'est pas obligatoire.

$.getJSON('firstServlet?foo=bar', function(data) { 
    alert('Success: ' + data.success + '\n' 
     + 'Message: ' + data.message + '\n' 
     + 'Param: ' + data.param); 
}); 

Vous pouvez bien sûr en faire plus que simplement afficher une simple alerte. Par exemple. manupuler/traverser le DOM HTML dans la page courante en fonction des données retournées.

J'ai posté deux réponses avec des exemples pratiques avant ici, vous pouvez le trouver utile ainsi:

Questions connexes