【问题标题】:Can I invoke the doGet method and retrieve information from a servlet?我可以调用 doGet 方法并从 servlet 检索信息吗?
【发布时间】:2012-03-21 19:56:26
【问题描述】:

我对 servlet 和 doGet 方法有疑问。如果这是一个错误的问题,我很抱歉,希望有人能帮助我。

我有一个 servlet,我使用此代码调用它来执行其中的某些内容:

public static void sendBeingRequestFromSimulator(String param2, String message) throws Exception
   {
      HttpClient client = new HttpClient();
      GetMethod method = new GetMethod(SERVER_URL);

      NameValuePair[] parameterArray = new NameValuePair[3];
      parameterArray[0] = new NameValuePair("param1", "begin");
      parameterArray[1] = new NameValuePair("param2", param2);
      parameterArray[2] = new NameValuePair("msg", message);
      method.setQueryString(parameterArray);
      client.executeMethod(method);
}

这使得 servlet 执行某些代码。然后 servlet 将接收来自其他应用程序的调用,并将存储该信息。

我想知道,是否可以通过调用 doGet 方法或以其他方式访问存储在 servlet 中的信息。

任何帮助将不胜感激

提前致谢。

【问题讨论】:

  • 您可以让 servlet 根据您在请求中发送的查询字符串在其响应中输出各种数据。
  • 感谢@jahroy,现在我的问题是,如何调用 doGet 方法并从响应中获取信息?抱歉,如果这听起来很愚蠢,但我一直在网上寻找,但我无法弄清楚。

标签: java servlets


【解决方案1】:

现在我的问题是,如何调用 doGet 方法并从响应中获取信息?

它可以通过HttpMethod 类上的getResponseXxx() 方法获得。另见其javadoc

例如

// ...
client.executeMethod(method);
int status = method.getStatusCode();
Header[] headers = method.getResponseHeaders();
String body = method.getResponseBodyAsString();

与具体问题无关。 HTTP 客户端 3.x 相当遗留。考虑迁移到 HTTP 客户端 4.x。

【讨论】:

  • 感谢@Balusc,您的代码帮了很多忙,我不得不在 doGet 方法中添加信息,如下所示: response.setContentType("text/html"); PrintWriter out = null;尝试 { out = response.getWriter(); String messageToReturn =Shared.getMessageFromQueue(); out.println(ussdMessage); },它就像一个魅力。
  • 不客气。这确实是在 servlet 中返回响应的方法之一。但是,您似乎返回文本/纯文本。请不要为此滥用 text/html 内容类型,它是用于 <html> 响应,就像 JSP 生成的那样;)
  • 是的,我们的想法是在其中放置一个 xml。最后它进展顺利。再次感谢伙计。
【解决方案2】:

我相信我过去曾使用 URL 类来实现这一点。

您可以使用它的openStream() 方法来获取您可以读取的 InputStream。

返回的 InputStream 应该代表 servlet 写入的输出。

【讨论】:

  • 谢谢@jahroy,你很有帮助。
【解决方案3】:

通常在 Web 应用程序中,从客户端发送的数据将存储在某种数据库中,可以是关系数据库系统,也可以是基于文档的系统,如 couchdb 等。

您的 servlet 方法应该调用服务方法(由您编写),它们会根据需要保存和加载数据。

【讨论】:

  • 感谢@hvgotcodes,但这样做的目的是创建 jUnit 测试并验证 servlet 行为,然后,我不需要也不想将信息存储在数据库中。不过,感谢您的回复。
猜你喜欢
  • 2012-11-12
  • 2015-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-16
  • 2011-08-18
  • 2010-11-14
相关资源
最近更新 更多