Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 小程序-服务器通信,我怎么能做到呢?_Java_Web Services_Applet_Client Server_Rmi - Fatal编程技术网

Java 小程序-服务器通信,我怎么能做到呢?

Java 小程序-服务器通信,我怎么能做到呢?,java,web-services,applet,client-server,rmi,Java,Web Services,Applet,Client Server,Rmi,我有一个小程序,我必须向web应用程序发送请求,以从数据库中的服务器获取数据。我正在处理对象,服务器用对象响应我是非常有用的 小程序如何与服务器通信 我认为web服务方法、RMI和。。。让我高兴,但哪一个是最好和可靠的?只要您的小程序与服务器通信,您就可以使用序列化对象。您只需要在applet jar和服务器上维护相同版本的对象类。这并不是最开放或可扩展的方式,但就开发时间而言,它很快,而且非常可靠 这里有一个例子 实例化与servlet的连接 URL servletURL = new URL(

我有一个小程序,我必须向web应用程序发送请求,以从数据库中的服务器获取数据。我正在处理对象,服务器用对象响应我是非常有用的

小程序如何与服务器通信


我认为web服务方法、RMI和。。。让我高兴,但哪一个是最好和可靠的?

只要您的小程序与服务器通信,您就可以使用序列化对象。您只需要在applet jar和服务器上维护相同版本的对象类。这并不是最开放或可扩展的方式,但就开发时间而言,它很快,而且非常可靠

这里有一个例子

实例化与servlet的连接

URL servletURL = new URL("<URL To your Servlet>");
URLConnection servletConnect = servletURL.openConnection();
servletConnect.setDoOutput(true); // to allow us to write to the URL
servletConnect.setUseCaches(false); // Write the message to the servlet and not from the browser's cache
servletConnect.setRequestProperty("Content-Type","application/x-java-serialized-object");
现在读读回复

ObjectInputStream in = new ObjectInputStream(servletConnection.getInputStream());
MyRespObject myrespObj;
try
{
    myrespObj= (MyRespObject) in.readObject();
} catch (ClassNotFoundException e1)
{
    e1.printStackTrace();
}

in.close();
在servlet中

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
  MyRespObject myrespObj= processSomething(request);
  response.reset();
  response.setHeader("Content-Type", "application/x-java-serialized-object");
  ObjectOutputStream outputToApplet;
  outputToApplet = new ObjectOutputStream(response.getOutputStream());
  outputToApplet.writeObject(myrespObj);
  outputToApplet.flush();
  outputToApplet.close();
}

private MyRespObject processSomething(HttpServletRequest request)
{
  ObjectInputStream inputFromApplet = new ObjectInputStream(request.getInputStream());
  MyCustomObject myObject = (MyCustomObject) inputFromApplet.readObject();
  //Do Something with the object you just passed
  MyRespObject myrespObj= new MyRespObject();
  return myrespObj;
}
请记住,您传递的两个对象都需要实现可序列化

 public Class MyCustomObject implements java.io.Serializable
 {

非常感谢,但是我能问一下,哪一个更好?要与服务器或序列化对象连接的web服务?我正在尝试使用web服务,但ws客户端在连接到服务器(web服务)时出现问题!!!理想情况下,我认为您需要一个Web服务,因此任何应用程序都可以访问它,而无需担心维护序列化对象的当前副本。如果它只供您的组使用,我不明白为什么您不能只使用序列化对象。序列化对象-更易于实现,无需xml解析,无需Web服务托管。Webservice—更灵活,可能需要更多的开发时间。这真的是一个你需要什么的问题,简单还是灵活。嗨,真的谢谢…,我纠正了连接到web服务的问题,但我有一个让我沮丧的问题,我如何从web服务方法返回自定义对象--车辆--的数组列表!!!??我做到了,但问题是,在客户端我收到了对象的arraylist!!!如果你知道如何解决它,请帮助我…我不知道你到底在问什么,你是在问如何将arraylist转换为vehicle类型的对象?您有两个选项,即仅使用泛型(Vehicle)强制转换或使用泛型功能。要使用泛型,您可以在这里查看1.5教程。如果您使用的是旧版JRE 1.5之前的版本,那么您将无法使用泛型,并且必须执行显式强制转换。如果您可以发布任何代码来帮助理解您的问题,请执行。嗨,不,问题不是这样的,问题不是铸造,我有一个web服务,必须运行查询数据库以获取车辆位置信息并创建车辆对象,并将它们(车辆对象)放入ArrayList@WebMethod public ArrayList getVehicles(){//sample VehileReport v=new VehileReport(“123”,“20km”);ArrayList list=new…list.add(v);return list;}在客户端我运行此。。。
 public Class MyCustomObject implements java.io.Serializable
 {