zoukankan      html  css  js  c++  java
  • Domino中java代理利用jdom生成XML

    首先要把jdom-1.0.jar这个包放到notes客户端和Domino服务器端的java库路径下:...\jvm\lib\ext,并分别在服务器和客户端的安装路径下更改notes.ini的javaUserClasses参数。

        假设代理的名称为xmlJava,用ajax方式传入若干参数,调用该代理,url形如:/xxx.nsf/xmlJava?openagent&param1=aaa&param2=bbb&param3=ccc,最后用PrintWriter返回xml形式的数据给浏览器解析。

        JavaAgent.java如下:

    import java.io.PrintWriter;
    import lotus.domino.AgentBase;
    import lotus.domino.AgentContext;
    import lotus.domino.Document;
    import lotus.domino.Session;
    /**
     * @author Kenny
     * Nov 6, 2009
     */
    public class JavaAgent extends AgentBase {

     public void NotesMain() {
      Session session = null;
      AgentContext agentContext = null;
      Document context = null;
      PrintWriter pw = null;
      try {
       session = getSession();
       agentContext = session.getAgentContext();
       context = agentContext.getDocumentContext();
       String param = context.getItemValueString("Query_String_Decoded");
       //得到浏览器的参数,就是url的?后面的部分,
       //如openagent&param1=aaa&param2=bbb&param3=ccc
       String[] ps = param.split("\\&|\\=");
       //用特定的字符拆分,这里用&和=来拆分,得到参数的数组,这里ps[2]=aaa,ps[4]=bbb,ps[6]=ccc
       pw = getAgentOutput();
       Xml xml = new Xml();
       //生成xml的方法,注意一定要另写一个类来实现,否则jdom与Domino的Document对象会有冲突!!!
       xml.createXML(pw,ps);
       pw.close();
      } catch(Exception e) {
       System.out.println("JavaAgent method NotesMain() run error: " + e.toString());
      } finally {
       try {
        if(pw != null) pw.close();
        if(context != null) context.recycle();
        if(agentContext != null) agentContext.recycle();
        if(session != null) session.recycle();
       } catch(Exception e) {
        System.out.println("NotesMain() recycle objects error: " + e.toString());
       }   
      }
     }
    }

        生成XML的实现类Xml.java如下:

    import java.io.PrintWriter;
    import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.output.XMLOutputter;

    /**
     * @author Kenny
     * Nov 6, 2009
     */
    public class Xml {

     public void createXML(PrintWriter pw,String[] params){
      Element root = null;
      Document doc = null;
      try{
       root = new Element("list");//创建根节点
       doc = new Document(root);//创建XML对象
       /*
        * 这里可以放上与关系数据库交互得到的数据,此处略去
        */
       for(int i = 0;i<params.length;i++){
        //添加节点,此处仅作示例,具体jdom生成xml方法参考Google
        root.addContent(new Element("value").setText(params[i]));
       }
       //下面这句很重要,一定要,否则返回的是普通的字符串,在客户端将无法解析成XML对象
       pw.println("Content-type:text/xml");
       XMLOutputter XMLOut = new XMLOutputter();
       XMLOut.output(doc, pw);
       pw.close();
      }catch(Exception e){
       System.out.println("Xml.java method createXML() run error: " + e.toString());
      }finally{
       try{
        if(pw != null) pw.close();
       }catch(Exception e){
        System.out.println("createXML() recycle objects error: " + e.toString());
       }
      }
     }
    }

        最后,在浏览器端,用JavaScript对得到的responseXML对象进行解析(具体方法参考Google),就可以得到相应的数据了。以上代码在Domino R8.5下测试通过。

  • 相关阅读:
    第五周课堂测试补充
    20162327WJH2016-2017-2《程序设计与数据结构》课程总结
    20162327WJH实验五——数据结构综合应用
    20162327WJH实验四——图的实现与应用
    20162327 《程序设计与数据结构》第十一周学习总结
    20162327WJH第三次实验——查找与排序2
    20162327 《程序设计与数据结构》第九周学习总结
    20162327WJH第二次实验——树
    20162327 《程序设计与数据结构》第七周学习总结
    20162327WJH使用队列:模拟票务站台代码分析
  • 原文地址:https://www.cnblogs.com/hannover/p/1839795.html
Copyright © 2011-2022 走看看