我有一个名为X.java的servlet,它将一些数据写为JSON结构,如下所示:
{ "name":"JOHN" }
我有另一个名为Y.java的servlet。它必须调用X.java并读取X servlet的JSON结构:在变量k中,然后Y应该再次写出变量k,如:
{ "name":"Hi John" }
如何在不使用Javascript的情况下执行此操作 我需要从页面Y调用页面X:
使用纯java。我的代码:
URL url = new URL( "myUrl/X");
HttpURLConnection connectionx = (HttpURLConnection) url.openConnection();
connectionx.setRequestMethod("GET");
connectionx.setRequestProperty("Content-Type","application/json");
connectionx.setRequestProperty("Accept", "application/json");
connectionx.setInstanceFollowRedirects(false);
InputStream myInput = connectionx.getInputStream();
BufferedReader reader = new BufferedReader( new InputStreamReader(myInput));
String line;
String returnString = null;
while ((line = reader.readLine()) != null) {
returnString += line;
}
输出是第一个JSON:{"name:": "John"}
谢谢
答案 0 :(得分:0)
我想servlet X映射到某个URL,两个servlet(X和Y)提供某种服务 ...为什么不使用Y中的通用HTTP客户端库来调用X?
Ps:抱歉所有的“猜测”,但你能提供更多细节吗?
答案 1 :(得分:0)
在Y servlet中,使用请求调度程序来包含X servlet。当你包含X servlet时,使用自定义的HttpServletResponseWrapper来存储由servlet X返回的Json。就是这样。
答案 2 :(得分:0)
试试这个,
有九个对象是J2EE中的隐式对象,其中一个是session,你可以做的是当X.java(第一个servlet)进行处理然后将该结果放入会话然后使用servletcontext.getRequestDispatcher().forward()
或servletcontext .getRequestDispatcher()。redirect()将您的请求转发给Y.java。
forward()和redirect方法在这里读取它们有一些区别
http://javapapers.com/jsp/difference-between-forward-and-sendredirect/
http://www.coderanch.com/t/365084/Servlets/java/whats-difference-redirect
并选择适合您的方法,我猜您需要使用forward()方法。
答案 3 :(得分:0)
所有这些想法虽然可能是可行的,但却是疯了。
相反,将您的X servlet调用的例程放入其自己的类和方法中,并简单地调用它。没有理由为了获取您的内容而跳过请求调度程序的障碍。将servlet的核心重构为可重用的组件并直接调用它,完全绕过整个HTTP和请求基础结构。