最近遇到这样一个问题,现在的项目要和另外一个项目整合出一个共同点,做成一个小的系统,通过URL方式调用现在系统的方法实现查询一些数据的功能 ,现有系统用struts1做的,我想这样实现:在action中写一个方法,然后通知外部调用者通过一个URL带参数访问我的Action,我给他返回一个xml格式的字符串,可是我现在有点想不明白,如果这样的话 我在action中就要用输出流来写xml 那我的actionmapping要forward到哪里去呢?或者是这个action直接return null;有类似经验的朋友帮我解答一下,谢谢!今天加班了,呵呵,也祝和我一块加班的朋友加班快乐~~休息的朋友,玩的快乐~~补充一下:如果对方用ajax的方式调用 能实现么?也就是用ajax调用另外一个系统的action~~

解决方案 »

  1.   

    比如A系统的action为   www.helloa.com/a.do  B系统的action为 www.hellob.com/b.do那么a请求b就直接将form提交到www.hellob.com/b.do   b的action就直接向流里面写入xml, 然后return null,a接受到xml之后进行数据处理就好了  public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
          try {
            request.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=utf-8");
            // 返回
    PrintWriter out = response.getWriter();
            out.println("xmlcontent");
    out.flush();
          } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
          } catch (IOException e) {
                e.printStackTrace();
          }
          return null;
    }这个是我做过的项目通信的代码片段   
      

  2.   

    补充:  客户用ajax调用也是可以实现的      另外也可以使用HTTPClient来发送请求和接受响应
      

  3.   

    拿到out对象后和在servlet里一样处理,只是最后return null;
    你返回的是xml数据,用ajax调用没有问题