2010-09-01 62 views
6

Tôi biết có một vài câu hỏi liên quan ở đây nhưng không có câu hỏi nào liên quan đến câu hỏi của tôi có câu trả lời kèm theo. Hoặc ít nhất là một câu trả lời được chấp nhận. Thật vui khi được sai nếu ai đó có thể chỉ cho tôi câu hỏi. Ngoài ra, vui lòng gắn thẻ lại nếu tôi đã bỏ lỡ thẻ.Gọi một Servlet từ một trang JSP bằng cách sử dụng jQuery Ajax

Câu hỏi của tôi, như tiêu đề nói là tôi muốn gọi Servlet từ trang JSP của tôi và trả về một chuỗi hoặc html.

Tên Servlet của tôi là MyFirstServlet.

Bạn có thể vui lòng không, hãy rất cụ thể trong bất kỳ câu trả lời nào vì tôi là một Joo hoàn chỉnh, Java và Servlet noobie.

Cảm ơn bạn rất nhiều trước.

Trả lời

8

Đầu tiên tạo một lớp Servlet trả về phản hồi mong muốn dựa trên yêu cầu. Nó có thể là HTML, XML hoặc JSON. Tôi muốn đề nghị sử dụng JSON cho điều này vì đó là sản phẩm dễ dàng nhất trong Java và có thể sử dụng được trong JavaScript. Bạn có thể sử dụng ví dụ Google Gson để chuyển đổi từ một đối tượng Java đầy đủ thành chuỗi JSON (và ngược lại). Ví dụ.

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

Khi servlet hoàn tất, chỉ cần ánh xạ nó theo cách thông thường web.xml. Ví dụ. trên url-pattern của /firstServlet.

Sau đó, trong jQuery, bạn có thể sử dụng $.getJSON() để nhận JSON từ tài nguyên đã cho. Đối số đầu tiên là URL, rõ ràng là firstServlet. Đối số thứ hai là hàm gọi lại trong đó bạn có thể làm việc trên dữ liệu trả về được trả về. Tôi đã chuyển thông số yêu cầu foo cho mục đích trình diễn thuần túy, đây không phải là bắt buộc.

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

Tất nhiên bạn có thể làm được nhiều việc hơn là chỉ hiển thị cảnh báo đơn giản. Ví dụ. manupulating/đi qua DOM HTML trong trang hiện tại dựa trên dữ liệu trả về.

tôi đã đăng hai câu trả lời với các ví dụ thực tế trước đây, bạn có thể tìm thấy nó hữu ích cũng như:

Các vấn đề liên quan