【问题标题】:How to pass an object from a java class to servlet?java - 如何将对象从java类传递给servlet?
【发布时间】:2012-10-08 06:40:15
【问题描述】:

我正在使用 Apache 的 HttpClient 从 Java 类调用 servlet。我想将一个对象发送到应该使用序列化保存对象的 servlet。如何将对象发送到 servlet?

public static void main(String[] args) {

        Names names = new Names();
        names.setName("ABC");
        names.setPlace("Bangalore");
        HttpClient httpclient = new DefaultHttpClient();
        HttpGet httpget = new HttpGet("http://localhost:9080/HttpClientPractice/FirstServlet");
//Rest of the code

在上面的代码 sn-p 中,我有另一个类 Names,我想向 servlet 发送一个 Names 对象。现在我只用 URI 调用 servlet,但我想传递对象。

谢谢!

【问题讨论】:

  • 我认为您需要研究 POST 方法来发送这样的数据。我相信使用 GET 方法,您只能发送文本数据。
  • @silverback POST 方法。谢谢!

标签: jakarta-ee servlets httpclient apache-httpcomponents


【解决方案1】:

在您展示的类中使用像 Gson 这样的库将对象转换为 Json 字符串,并将此字符串添加为查询参数 - 向您展示如何使用 Gson 进行操作。

Gson gson = new Gson();
String json = gson.toJson(names);
HttpGet httpget = new HttpGet("http://localhost:9080/HttpClientPractice/FirstServlet?obj="+json);

在你要存储这个对象的类中,做一个fromJson(Gson库中的方法)

Gson gson = new Gson();
Names names = fromJson(json, Names.class);

【讨论】:

  • 知道了!我使用 'HttpPost()' 而不是 'HttpGet()' 并将字符串 json 作为键值对的值发送。
  • 我得到一个 java.lang.ClassNotFoundException: com.google.gson.Gson 用于Gson gson = new Gson() 行。知道为什么会发生这种情况吗?
【解决方案2】:

将对象发送到 URL 的最佳方式是将其作为 XML 或 JSON 发送,而不是序列化对象并发送它。

如果您的方法保持不变,则发送对象的一种方法是将 url 中的对象值附加为查询字符串,例如:
http://localhost:9080/HttpClientPractice/FirstServlet?name=ABC&place=Banglore
另一种方法是将请求方法更改为 POST 并将对象作为 XML 或 JSON 内容发送。

【讨论】:

  • 谢谢,明白了。但要澄清一点。我希望 servlet 序列化我发送的对象,我不想发送序列化对象。
  • @Rajath 所以,你想要一匹小马。为了通过网络发送对象,您必须对其进行序列化。 Java 中没有其他方法。它可能被称为“编组”,“编码”,无论如何,仍然在下面的某个地方有序列化。
猜你喜欢
  • 1970-01-01
  • 2018-01-08
  • 2014-05-25
  • 2019-05-26
  • 2011-03-21
  • 2014-10-07
  • 1970-01-01
  • 2014-09-21
  • 1970-01-01
相关资源
最近更新 更多