• 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下测试通过。

  • 相关阅读:
    Spring boot 基于注解方式配置datasource
    Java任务调度框架之分布式调度框架XXL-Job介绍
    mysql使用联合索引提示字符长度超限制解决办法
    程序访问一个地址时候报400错误,浏览器访问正常怎么解决
    JDK8stream将list转Map对象报错java.lang.IllegalStateException
    如何应对互联网行业的「中年危机」?
    SpringMVC访问出错No converter found for return value of type
    怎么设置tomcat在get请求的中文也不乱码?两种情况下配置
    使用tomcat方式实现websocket即时通讯服务端讲解
    服务端向客户端推送消息技术之websocket的介绍
  • 原文地址:https://www.cnblogs.com/hannover/p/1839795.html
Copyright © 2020-2023  润新知