2011-05-03 64 views
6

Tôi muốn gọi servlet với một số tham số và nhận phản hồi. Mã được viết bằng Java. Cách tốt nhất (sạch nhất) để làm điều đó là gì?Cách gọi một servlet từ mã Java

Ngoài ra, tôi có thể gọi một servlet và tiếp tục với mã withoud chờ servlet để kết thúc (đóng kết nối và "quên nó")?

+0

Bạn có thể vứt bỏ yêu cầu của mình thành một 'Chủ đề' riêng biệt nếu bạn muốn tiếp tục với các phần khác của ứng dụng. Xem thêm: http://stackoverflow.com/questions/4349854/calling-a-servlet-from-a-java-application – Catchwa

+0

"Cách tốt nhất (sạch nhất) để làm điều đó" những gì * tốt nhất * hoặc * cleanest * có nghĩa là. – Raedwald

Trả lời

4

Better sử dụng Apache HttpClient API để xử lý và giao tiếp với servlet

http://hc.apache.org/httpcomponents-client-ga/index.html

Các tính năng:

  1. Param là dễ dàng để vượt qua và phân tích phản ứng.
  2. Nó cho phép thậm chí giao tiếp qua Proxy
  3. nguồn mở
  4. Nó cũng hỗ trợ asyncronous và nhiều hơn nữa Vui lòng tham khảo url ở trên.
4

Ví dụ từ here:

import java.net.*; 
import java.io.*; 

public class URLConnectionReader { 
    public static void main(String[] args) throws Exception { 
    URL yahoo = new URL("http://www.yahoo.com/"); 
    URLConnection yc = yahoo.openConnection(); 
    BufferedReader in = new BufferedReader(
          new InputStreamReader(
          yc.getInputStream())); 
    String inputLine; 

    while ((inputLine = in.readLine()) != null) 
     System.out.println(inputLine); 
    in.close(); 
    } 
} 

Theo quan điểm của servlet chỉ là một URL trên một số máy chủ. Đối với không chờ đợi một phản ứng - đọc về các chủ đề Java. Nhưng bạn không thể đóng kết nối HTTP mà không cần đợi servlet kết thúc vì điều này có thể làm cho servlet thất bại. Chỉ cần chờ phản hồi trong một chuỗi riêng biệt và loại bỏ nó nếu nó không quan trọng.

+0

Tôi có phải chờ phản hồi không (nếu giải pháp nếu sử dụng sợi chỉ, câu trả lời vẫn là có - tôi phải đợi câu trả lời). Điều gì về truyền tham số cho servlet? tôi có phải bild url của bản thân mình (bằng cách sử dụng '?' và '&') hoặc có một cách sạch hơn? –

2

Bạn có thể sử dụng Apache HttpClient Apache HttpClient

này cũng đã Non-blocking I/O chức năng có sẵn NIO extensions

Dưới đây là một Tutorial cho Apache HttpComponents.

Bạn cũng có thể thử Jetty hoặc Async Http Client

+1

tôi thực sự không thích những người downvote không có bình luận. Dưới đây là một upvote để cân bằng lực lượng. – Nico

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