我从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();
我可以使用相对路径执行此操作,以便它在本地和已部署的实例上都可以使用吗?
答案 0 :(得分: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");
答案 1 :(得分:0)
你的意思是这样吗?
String urlString = "http://localhost/myservlet/";
localhost是127.0.0.1的别名,它始终是“本地计算机”。
ServletRequest.getServerPort()将通知您用户连接的端口。
根据发生的情况,您真正想要使用的是ServletRequest.getRequestDispatcher(),它绕过网络层,并保留在您的servlet容器中。
您可以包装HttpResponse,并将其发送到RequestDispatcher,然后提取使用以下内容生成的String:
http://goo.gl/kRW1b