Java代理程序实现web方式管理邮件组成员

说到java大家并不陌生,java对于开发人员来说基础最早的开发语言之一,也是应用最多的,同时我们也知道,domino跟java是完美结合,domino可以根据自己的需求能优化很多功能级应用,同时我们介绍一下,通过B/S方式管理邮件组成员,添加程序后,如果添加的人员不在domino目录下,在保存的时候会在控制台输出,方便查找邮件投递故障。具体见下:

1.我们首先创建用户

clip_p_w_picpath002

创建邮件组,并且在邮件组内添加人员。

clip_p_w_picpath004

我们将user01、user02添加到group-01组内。

clip_p_w_picpath006


编辑好代理程序后,我们需要创建表单

clip_p_w_picpath008


然后

clip_p_w_picpath010

确认完以上信息后,接下来我们创建代理程序,在此我们通过java程序来实现。

为了保证不影响应用系统,建议创新新的数据库来新建表单及代理程序。

然后用desinger打开该数据库

clip_p_w_picpath012

编辑代理程序

clip_p_w_picpath014

import lotus.domino.*;
import java.io.PrintWriter;
import java.util.Vector;
import java.lang.StringBuffer;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
Document note=agentContext.getDocumentContext();
String querystring=note.getItemValueString("query_string");
String[] queryArray=querystring.split("&");
querystring=queryArray[1].split("=")[1];
System.out.println("请求内容是:"+querystring);
Database db=session.getDatabase(agentContext.getCurrentDatabase().getServer(), "names.nsf");
if(db.isOpen()){
}
View personview=db.getView("_People");
View groupview=db.getView("Groups");
Document doc=groupview.getFirstDocument();
Document tempdoc=null;
Document persondoc=null;
StringBuffer sb=new StringBuffer();
while(doc!=null){
tempdoc=doc;
if(doc.getItemValueString("ListName").equals(querystring)){
doc.appendItemValue("CN=Gavin/O=gavi000");
doc.save();
Vector v=session.evaluate("@name([ABBREVIATE];members)",doc);
/*
for(int i=0;i<v.size();i++){
persondoc=personview.getDocumentByKey(v.get(i),true);
if(persondoc==null){
//MsgBox tempdoc.ListName(0) &"组下的"& key2(1) &"不在domino列表里!"
System.out.println(doc.getItemValueString("ListName")+"组下的"+v.get(i)+"不在domino列表里!");
}else{
}
}*/
if(v.size()>0){
for(int i=0;i<v.size()-1;i++){
sb.append(v.get(i)+",");
}
sb.append(v.get(v.size()-1));
}
break;
}
doc=groupview.getNextDocument(doc);
tempdoc.recycle();
}
PrintWriter pw = getAgentOutput();
pw.println("Content-Type:text/plain;charset=gbk");
pw.println(sb.toString());
// (Your code goes here)
} catch(Exception e) {
e.printStackTrace();
}
}
}

首先我们要通过web去访问的话,先要创建表单及内部自定义的信息

新建名称为web_group的表单

定义显示主题,因为我们主题需要在页面居中,所以应用到了center参数,

<center>显示内容</center>

编辑好,显示内容将在也面的中间显示;

接着定义需要搜索的的邮件组输入框---域值,然后显示邮件组成员的maillist,及搜索键、保存键盘

clip_p_w_picpath016

Maillist定义文本及文本框的大小

clip_p_w_picpath018

文本需要换行来输入信息,可根据自己的需求来定义

clip_p_w_picpath020

定义搜索键的参数

clip_p_w_picpath022


xmlhttp=createXMLHttpRequest();
if(xmlhttp){
xmlhttp.open("GET","javajson?openagent&query="+document.forms[0].Mailgroup.value+"&t="+Math.random(),true);
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
document.forms[0].Maillist.value=xmlhttp.responseText.replace(/,/g,"\r\n");
}
}
xmlhttp.send();
}else
alert("xmlhttp no found");


clip_p_w_picpath024


function createXMLHttpRequest(){
//var h=new ActiveXObject("Msxml2.XMLHTTP");
var h = new XMLHttpRequest();
return h;
}

clip_p_w_picpath026

Document forms[0].submit();

接下来我们访问

clip_p_w_picpath028


clip_p_w_picpath030


clip_p_w_picpath032


clip_p_w_picpath034

接下来我们添加用户,然后如果添加的用户不在domino目录下保存,就会在控制台提示

clip_p_w_picpath036

clip_p_w_picpath038