Java 如何从另一个Servlet页面调用Servlet?

Java 如何从另一个Servlet页面调用Servlet?,java,json,Java,Json,我有一个名为X.java的servlet,它将一些数据写入JSON结构,如下所示: { "name":"JOHN" } 我还有另一个servlet叫Y.java。它必须调用X.java并读取变量k中X servlet:的JSON结构,然后Y应再次写出该变量k,如下所示: { "name":"Hi John" } 如果不使用Javascript,我如何做到这一点 我需要从第Y页调用第X页,如下所示: 只需使用纯java。我的代码: URL url = new URL( "myUrl/X");

我有一个名为X.java的servlet,它将一些数据写入JSON结构,如下所示:

{ "name":"JOHN" }
我还有另一个servlet叫Y.java。它必须调用X.java并读取变量k中X servlet:的JSON结构,然后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”}


谢谢

我猜servlet X映射到某个URL,两个servlet(X和Y)提供某种服务。。。为什么不从Y使用一个公共HTTP客户端库来调用X呢


Ps:抱歉所有的“猜测”,但是您能提供更多的细节吗?

在Y servlet中,使用请求调度程序包含X servlet。当包含Xservlet时,使用定制的HttpServletResponseWrapper来存储ServletX返回的Json

试试这个, J2EE中有九个对象是隐式对象,其中一个是会话,您可以在X.java(第一个servlet)进行处理,然后将结果放入会话,然后使用
servletcontext.getRequestDispatcher().forward()
或servletcontext.getRequestDispatcher().redirect()将您的请求转发到Y.java。 forward()和redirect方法有一些区别,请在此处读取它们


选择合适的方法供您使用,我想您需要使用forward()方法。

所有这些想法,虽然可能可行,但都是疯狂的


相反,将X servlet调用的例程放入它自己的类和方法中,然后简单地调用它。没有理由为了获取您的内容而跳过请求调度器的障碍。将servlet的核心重构为可重用组件,并直接调用它,完全绕过整个HTTP和请求基础结构。

将其写出什么?您是否在问如何读取文件?如何发送HTTP请求?它不是一个文件,它只是一个X.java页面,Y.java可以调用它来读取X{JSON structure}的内容并显示Y.java的结果。。这可能吗??或者你能给我什么建议?那么你是在问如何调用在不同类中定义的普通函数?我需要通过在Y中调用X-url来获取JSON,因为X和Y是相同的servlet上下文,所以我认为使用请求分派器INCLUDE和定制HttpServletResponseWrapper是最好的选择。