处理页面html<html>
  <head> 
    <title>对接结果</title>
  </head>
  
  <body>
    <%
     String subcat = RequestUtil.getString(request,"subcat","0");
     String themecat = RequestUtil.getString(request,"themecat","0");
     String menucat = RequestUtil.getString(request,"menucat","0");
     out.print("<BR>选中主题分类:"+subcat);
     out.print("<BR>选中体裁分类:"+themecat);
     out.print("<BR>选中目录组配分类:"+menucat);
     String id=(String)session.getAttribute("sessionid");
     String[] ids=null;
     ids=id.split("\\,");
     boolean butted=false;
     if(id==null )
       {
        out.write("<br/><table align='center' width='400px' border='0' cellpadding='2' cellspacing='1' class='table'><tr><td class='main_title'>TecamoCMS 提示信息!</td></tr>");
        out.print("<tr><td align='center'>参数不正确! <a href='#' onclick='window.close()'>关闭</a></td></tr></table>");
     out.print("</body></html>");
       }
     else 
       {
        out.write("<br/><table align='center' width='400px' border='0' cellpadding='2' cellspacing='1' class='table'><tr><td class='main_title'>TecamoCMS 提示信息!</td></tr>");
        try 
     {
        ButtDAO buttdao = new ButtDAO();
     for(int i=0;i<ids.length;i++)
     {
    
    
     ButtModel buttmodel=(ButtModel)buttdao.getByids(ids[i]);
     Map hashMap=new HashMap();
     hashMap.put("objectid","0");
     String content=buttmodel.getBody();
          hashMap.put("content", content);
          hashMap.put("title", buttmodel.getTitle());
          hashMap.put("filenum", buttmodel.getFilenum());
          hashMap.put("keywords", buttmodel.getKeywords());
          hashMap.put("pubdate", DateUtil.getFormatString(buttmodel.getPubdate(),"yyyy-MM-dd"));
             String publisher=buttmodel.getPublisher();
             if(publisher=="")
             {
              publisher="广东省新闻出版局";
             }
             hashMap.put("publisher",publisher);
     hashMap.put("subcat", subcat);
     hashMap.put("themecat", themecat);
     hashMap.put("menucat", menucat);
    
     butted=buttdao.isbuttarchive(hashMap);   //两次
    
     ReportedDao repDao = new ReportedDao();
     ReportedModel repmdl=new ReportedModel();
     long aid=Long.parseLong(ids[i]);
     repmdl.setButted(butted);
     repmdl.setArchiveId(aid);
     repDao.inbutted(repmdl);
    
     if(butted)
     {
     out.write("<tr><td bgcolor='ffffff' align='center' ><br/>");
          out.write(buttmodel.getTitle()+"<BR>对接成功!");
          out.write("<br/></td></tr>");
     }
     }
    
     }
    
     catch (Exception e) 
     {
     out.write("<tr><td bgcolor='ffffff' align='center' ><br/><br/>");
     out.write("出现异常,对接失败!");
     out.write("<br/><br/></td></tr>");
     out.write("<tr><td class='form_input'><br/><br/>");
     out.write( e.getMessage() );
     out.write("<br/><br/></td></tr>");
     e.printStackTrace();
     }
     out.write(" <tr>");
     out.write(" <td bgcolor='ffffff' align='center' >");
     out.write(" <a href='#' onclick='window.close();'>确定</a>");
     out.write(" </td>");
     out.write(" </tr>");
     out.write("</table>");
       }
    
    
    %>
  </body>
</html>java函数isbuttarchive
public boolean isbuttarchive(Map hashMap){
String sResult=null;
String sTargetEndpointAddress="http://211.75.66.12/wcm/services/trswcm:importGovInfoService";
Service service=new Service();
Call call=null;
String _userName="广东省新闻出版局";
Map _hashMap=new HashMap();
_hashMap=hashMap;
try{
call=(Call)service.createCall();
call.setTargetEndpointAddress(new java.net.URL(sTargetEndpointAddress));
call.setOperationName(new QName("http://service.wcm.trs.com","importGovInfoDocuments"));
Object[] parameters={_hashMap,_userName};
sResult=(String)call.invoke(parameters);
System.out.println(sResult);
return true;
}catch(Exception e){
e.printStackTrace();
return false;
}
}sessionid的格式是xxxxxxxxxx,xxxxxxxxx,xxxxxxxxx 可以是一个也可以多个,用一个数组通过spilt(",")切开存放,通过循环给每个id做处理,但现在出现每个id执行两次,哪位高手帮我看看。

解决方案 »

  1.   

    servlet和struts都出来这么久了
    还在jsp写java代码 
      

  2.   

    不需要框架  花1小时看MVC
    逻辑写在servlet里,把要显示的东西送到JSP,就完了,不需要框架
      

  3.   

    你的方案呢?有些代码,根本没法改,他只需要挪到servlet里就可以了
      

  4.   

    ids=id.split("\\,");把ids打印出来,有可能它本身就有重复的.
      

  5.   


    System.out.println("1");
    butted=buttdao.isbuttarchive(_hashMap);   //两次
    System.out.println("2");我在这里加了两个输出,控制台输出的结果是这样的:
    1
    1
    <REPORTS><IS-SUCCESS>true</IS-SUCCESS><TITLE><![CDATA[导入成功]]></TITLE><REPORT><IS-SUCCESS>true</IS-SUCCESS><TITLE><![CDATA[66917]]></TITLE><TYPE>3</TYPE></REPORT></REPORTS>
    2
    <REPORTS><IS-SUCCESS>true</IS-SUCCESS><TITLE><![CDATA[导入成功]]></TITLE><REPORT><IS-SUCCESS>true</IS-SUCCESS><TITLE><![CDATA[66918]]></TITLE><TYPE>3</TYPE></REPORT></REPORTS>
    2
      

  6.   

    1122什么的,我都看晕了
    System.out.println(sResult); 这个返回值有哪些?你改成下面再输出看看
    System.out.println("aa");
    butted=buttdao.isbuttarchive(_hashMap);   //两次
    System.out.println("bb");
      

  7.   

    我测试了一下你的代码,应该没有问题,你在一些方法里面多print试试。
      

  8.   

    我只测试了你的butted=buttdao.isbuttarchive(_hashMap); ,不过我没有测试你的for(……),不好意思。
      

  9.   

    这个是对接功能,通过soap对接到其他平台,这个是测试服务器返回的信息,不关事的,数字代表第几条
      

  10.   

    1
    <REPORTS><IS-SUCCESS>true</IS-SUCCESS><TITLE><![CDATA[导入成功]]></TITLE><REPORT><IS-SUCCESS>true</IS-SUCCESS><TITLE><![CDATA[66917]]></TITLE><TYPE>3</TYPE></REPORT></REPORTS>
    2
    <REPORTS><IS-SUCCESS>true</IS-SUCCESS><TITLE><![CDATA[导入成功]]></TITLE><REPORT><IS-SUCCESS>true</IS-SUCCESS><TITLE><![CDATA[66918]]></TITLE><TYPE>3</TYPE></REPORT></REPORTS>这个有可能是 butted=buttdao.isbuttarchive(hashMap);,它返回的就是两个结果,而不是执行了两次.你首先要确定它的返回值是唯一的吗。
      

  11.   

    好奇怪,butted=buttdao.isbuttarchive(_hashMap);之前的代码会执行两次,然后后面包括butted=buttdao.isbuttarchive(_hashMap)的代码又会执行两次,为什么会这样
      

  12.   

    是不是url的问题?自己调用了自己?
      

  13.   


    System.out.println(publisher);
    _hashMap.put("subcat", subcat);
    _hashMap.put("themecat", themecat);
    _hashMap.put("menucat", menucat);
    System.out.println("a");
    butted=buttdao.isbuttarchive(_hashMap);   //两次
    System.out.println("b");
    ReportedDao repDao = new ReportedDao();
    ReportedModel repmdl=new ReportedModel();
    System.out.println("c");
    long aid=Long.parseLong(ids[i]);
    repmdl.setButted(butted);
    System.out.println("d");
    repmdl.setArchiveId(aid);
    repDao.inbutted(repmdl);
    System.out.println("e");我添加了一些输出语句,结果是
    广东省新闻出版局
    a
    广东省新闻出版局
    a
    <REPORTS><IS-SUCCESS>true</IS-SUCCESS><TITLE><![CDATA[导入成功]]></TITLE><REPORT><IS-SUCCESS>true</IS-SUCCESS><TITLE><![CDATA[66930]]></TITLE><TYPE>3</TYPE></REPORT></REPORTS>
    b
    <REPORTS><IS-SUCCESS>true</IS-SUCCESS><TITLE><![CDATA[导入成功]]></TITLE><REPORT><IS-SUCCESS>true</IS-SUCCESS><TITLE><![CDATA[66929]]></TITLE><TYPE>3</TYPE></REPORT></REPORTS>
    b
    c
    d
    c
    d
    e
    e
      

  14.   


    但是你这个输出明明显示是
    butted=buttdao.isbuttarchive(_hashMap)外输出一次,
    butted=buttdao.isbuttarchive(_hashMap)内System.out.println(sResult)输出了两次
      

  15.   

    url是人家服务器的地址,没错,能返回正确信息就没错,如果url错误是没信息返回的。
      

  16.   

    不是这样,是调用isbuttarchive(_hashMap)一次就输出一次,两次就两次,我看测试服务器里的新闻确实是多对接了一次。
      

  17.   


    Map hashMap=new HashMap();你把这句放在循环体外试试。别着急,慢慢想。
      

  18.   


    for(int i=0;i<ids.length;i++)
                            {
                                
                                
                                ButtModel buttmodel=(ButtModel)buttdao.getByids(ids[i]);
                                Map hashMap=new HashMap();
                                hashMap.put("objectid","0");
                                String content=buttmodel.getBody();
                                hashMap.put("content", content);
                                hashMap.put("title", buttmodel.getTitle());
                                hashMap.put("filenum", buttmodel.getFilenum());
                                hashMap.put("keywords", buttmodel.getKeywords());
                                hashMap.put("pubdate", DateUtil.getFormatString(buttmodel.getPubdate(),"yyyy-MM-dd"));
                                String publisher=buttmodel.getPublisher();
                                if(publisher=="")
                                {
                                    publisher="广东省新闻出版局";
                                }
                                hashMap.put("publisher",publisher);
                                hashMap.put("subcat", subcat);
                                hashMap.put("themecat", themecat);
                                hashMap.put("menucat", menucat);
                                
                                butted=buttdao.isbuttarchive(hashMap);   //两次
                                
                                ReportedDao repDao = new ReportedDao();
                                ReportedModel repmdl=new ReportedModel();
                                long aid=Long.parseLong(ids[i]);
                                repmdl.setButted(butted);
                                repmdl.setArchiveId(aid);
                                repDao.inbutted(repmdl);
                                
                                if(butted)
                                {
                                    out.write("<tr><td bgcolor='ffffff' align='center' ><br/>");
                                    out.write(buttmodel.getTitle()+"<BR>对接成功!");
                                    out.write("<br/></td></tr>");
                                }
                            }
    ReportedDao repDao = new ReportedDao();
                                ReportedModel repmdl=new ReportedModel();
       
    这俩句也放在循环体外试试,怀疑是在循环体出的问题。
      

  19.   


    ButtDAO buttdao = new ButtDAO();
            ButtModel buttmodel=new ButtModel();
            Map _hashMap=new HashMap();
            ReportedDao repDao = new ReportedDao();
    ReportedModel repmdl=new ReportedModel();
         for(int i=0;i<ids.length;i++)
         {
        
         buttmodel=buttdao.getByids(ids[i]);
        
         _hashMap.put("objectid","0");
         String content=buttmodel.getBody();
              _hashMap.put("content", content);
              _hashMap.put("title", buttmodel.getTitle());
              _hashMap.put("filenum", buttmodel.getFilenum());
              _hashMap.put("keywords", buttmodel.getKeywords());
              _hashMap.put("pubdate", DateUtil.getFormatString(buttmodel.getPubdate(),"yyyy-MM-dd"));
                 String publisher=buttmodel.getPublisher();
                 if(publisher=="")
                 {
                  publisher="广东省新闻出版局";
                 }
                 _hashMap.put("publisher",publisher);
                 System.out.println(publisher);
         _hashMap.put("subcat", subcat);
         System.out.println(subcat);
         _hashMap.put("themecat", themecat);
         System.out.println(themecat);
         _hashMap.put("menucat", menucat);
         System.out.println("a");
         butted=buttdao.isbuttarchive(_hashMap);   //两次
         System.out.println("b");
        
         System.out.println("c");
         long aid=Long.parseLong(ids[i]);
         repmdl.setButted(butted);
         System.out.println("d");
         repmdl.setArchiveId(aid);
         repDao.inbutted(repmdl);
         System.out.println("e");
    提到外面结果还是一样
      

  20.   

    控制台显示广东省新闻出版局
    subcat
    themecat
    a
    广东省新闻出版局
    subcat
    themecat
    a
    <REPORTS><IS-SUCCESS>true</IS-SUCCESS><TITLE><![CDATA[导入成功]]></TITLE><REPORT><IS-SUCCESS>true</IS-SUCCESS><TITLE><![CDATA[66941]]></TITLE><TYPE>3</TYPE></REPORT></REPORTS>
    b
    c
    d
    e
    <REPORTS><IS-SUCCESS>true</IS-SUCCESS><TITLE><![CDATA[导入成功]]></TITLE><REPORT><IS-SUCCESS>true</IS-SUCCESS><TITLE><![CDATA[66942]]></TITLE><TYPE>3</TYPE></REPORT></REPORTS>
    b
    c
    d
    e
      

  21.   

    你在控制台输出“publisher”看看是什么?
    是不是不是""啊???
      

  22.   

    publisher输出是  广东省新闻出版局
      

  23.   

    session是在服务器里,不在客户端
      

  24.   


    public boolean isbuttarchive(Map hashMap){
            String sResult=null;
            String sTargetEndpointAddress="http://211.75.66.12/wcm/services/trswcm:importGovInfoService";
            Service service=new Service();
            Call call=null;
            String _userName="广东省新闻出版局";

    Map _hashMap=new HashMap();     
    // 去掉直接在写成“Object[] parameters={hashMap,_userName};”
            _hashMap=hashMap;
            
                  try{
                call=(Call)service.createCall();
                call.setTargetEndpointAddress(new java.net.URL(sTargetEndpointAddress));
                call.setOperationName(new QName("http://service.wcm.trs.com","importGovInfoDocuments"));
                Object[] parameters={_hashMap,_userName};
                sResult=(String)call.invoke(parameters);

    System.out.println(sResult);// 这里又输出了一次?!!是否正确。

                return true;
            }catch(Exception e){
                e.printStackTrace();
                return false;
            }
        }
      

  25.   

    不是想显示什么效果,是每个id执行isbuttarchive(_hashMap)两次,等于把一条新闻上传了两次。现在不知道哪里错了
      

  26.   

    循环出错了,我在循环里写纯输出语句,一个id循环两次
    System.out.println("a");
    System.out.println("b");    
    System.out.println("c");
    System.out.println("d");
    System.out.println("e");
    结果会是
    a
    b
    e
    d
    e
    a
    b
    c
    d
    e
      

  27.   

    out.print("<BR>"+ids.length);输出的是1
      

  28.   


    这代码看下去会死人的,建议楼主把业务和表现分开,了解下MVC的模式。