我正在研究"从JSP到FLEX的迁移,并将java作为后端。我是java和JSP的新手。
我一直在从java servlet获取值,它接受httprequest,并且有一个名为forward(request,response)
的函数,它作为JSP页面响应,其中包含所需的值。
现在我需要更改它,只从该servlet获取数据,并在flex中使用它。
问题:
case1:当使用httpservice时,它将结果作为字符串,但无法作为对象获取
case2:如果我使用RemoteObject,它需要javaservlet中的方法来获取返回值,而现有servlet中没有这个方法。
我能得到关于这个问题的建议吗。
谢谢
case1:不再使用forward,您可以设置要返回的数据类型,例如:
response.setContentType("application/json");
servlet中的返回数据是通过将数据写入流来完成的,比如:
PrintWriter out = response.getWriter();
out.print(object);
但我做这件事已经有一段时间了,所以你可能会面临一些小问题。。。
案例2:如果您使用servlet,那么使用HTTPService是正确的,RemoteObject将不起作用,它的使用方式不同。。。。
现在,如果可以的话,我建议使用与servlet不同的东西——从java服务器到Flex获取数据——我喜欢使用GraniteDS。
我只会说明我看到的一些好处,以防你感兴趣:
它易于设置:-在java中,您只需添加一个graniteDS库,两个配置文件(granate+cervices-config-xmls)将一个granateservlet配置添加到web.xml-在flex中还有granite库和服务-config.xml
设置好后,使用它也非常容易——您有一个Java中带有方法(或简单bean或ejb)的类,它只返回任何类型的对象!Java 就是这样
在flex中,在这种情况下,您使用RemoteObject,您只需调用该远程java方法,在结果处理程序中,您可以获得数据Granite将负责序列化+传输+反序列化,并只为您提供Object(要么是动态的{},甚至是精确的类类型)