1

我从 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();

我可以使用相对路径执行此操作,以便它在本地和部署的实例上都可以工作吗?

4

2 回答 2

1

您可以将 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");
于 2012-08-08T01:58:12.773 回答
0

你的意思是这样吗?

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

localhost 是 127.0.0.1 的别名,它始终是“本地计算机”。

ServletRequest.getServerPort() 会让你知道用户连接的端口。

根据发生这种情况的位置,您可能真正想要使用的是 ServletRequest.getRequestDispatcher(),它绕过网络层,并留在您的 servlet 容器中。

您可以包装 HttpResponse,并将其发送到 RequestDispatcher,然后提取使用以下内容生成的字符串:

http://goo.gl/kRW1b
于 2012-08-07T15:43:35.133 回答