簡體   English   中英

如何在不指定完整URL的情況下使用URL連接調用localhost servlet?

[英]How to invoke localhost servlet with URL Connection without specifying full url?

我從jsp調用本地servlet,該servlet僅返回一個json字符串:

URL url = new URL("http://myapp.appspot.com/myservlet");
URLConnection conn = url.openConnection();
conn.setConnectTimeout(5000);
InputStream is = conn.getInputStream();

StringWriter writer = new StringWriter();
IOUtils.copy(is, writer, "UTF-8");

String jsonStr = writer.toString();

我可以使用相對路徑來做到這一點,以便它既可以在本地又可以在已部署實例上工作嗎?

您可以將JSTL與標記一起使用

<c:import>   

另外,對於您發布的代碼,您可以使用

   String requestURL = request.getRequestURL().toString();
   String servletPath = request.getServletPath();
   String serverPath = requestURL.substring(0,requestURL.indexOf(servletPath));
   URL url = new URL(serverPath + "/myservlet");

你的意思是這樣嗎?

String urlString = "http://localhost/myservlet/";

localhost是127.0.0.1的別名,該別名始終是“本地計算機”。

ServletRequest.getServerPort()將讓您知道用戶連接的端口。

根據發生這種情況的地方,您真正想要使用的是ServletRequest.getRequestDispatcher(),它繞過網絡層,並保留在Servlet容器中。

您可以包裝HttpResponse,然后將其發送到RequestDispatcher,然后提取使用類似以下內容生成的String:

http://goo.gl/kRW1b

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM