2010-09-01 15 views
6

Wiem, że jest tu kilka powiązanych pytań, ale żadne z nich, które w rzeczywistości odnoszą się do mojego pytania, nie zawierają odpowiedzi. Lub przynajmniej zaakceptowana odpowiedź. Szczęśliwi, że się mylę, jeśli ktoś może wskazać mi to pytanie. Również proszę o ponowne zgłoszenie, jeśli mam pominięte oznaczenia.Wywołanie serwletu ze strony JSP przy użyciu jQuery Ajax

Moje pytanie, jak mówi tytuł, polega na tym, że chcę wywołać serwlet z mojej strony JSP i zwrócić ciąg znaków lub html.

Moja nazwa serwletu to MyFirstServlet.

Proszę, proszę bardzo, bądź konkretny w każdej odpowiedzi, ponieważ jestem kompletnym użytkownikiem JSP, Java i Servlet noobie.

Dziękuję bardzo z góry.

Odpowiedz

8

Najpierw utwórz klasę Servlet, która zwraca żądaną odpowiedź na podstawie żądania. Może to być HTML, XML lub JSON. Proponuję użyć do tego celu JSON, ponieważ jest to najłatwiejsze do wyprodukowania w Javie i możliwe do wykorzystania w JavaScript. Możesz użyć na przykład Google Gson do konwersji z pełnowartościowego obiektu Java na ciąg JSON (i odwrotnie). Na przykład.

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

Po zakończeniu serwletu, po prostu odwzoruj go w zwykły sposób na web.xml. Na przykład. na url-pattern z /firstServlet.

Następnie w jQuery można użyć polecenia $.getJSON(), aby uzyskać JSON z podanego zasobu. Pierwszym argumentem jest adres URL, który jest oczywiście firstServlet. Drugim argumentem jest funkcja wywołania zwrotnego, w której można pracować na zwróconych danych odpowiedzi. Podałem parametr żądania foo dla celów czysto demonstracyjnych, nie jest to obowiązkowe.

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

Oczywiście można zrobić więcej, niż tylko wyświetlać prosty alert. Na przykład. manupulating/traversing HTML DOM na bieżącej stronie na podstawie zwróconych danych.

ja pisał dwie odpowiedzi z praktycznymi przykładami, zanim tutaj, można go znaleźć przydatne także:

Powiązane problemy