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

时间:2013-12-02 00:04:18

标签: java json

我有一个名为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"}
谢谢

4 个答案:

答案 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和请求基础结构。