当前位置: 首页 > news >正文

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

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

1.我们首先创建用户

clip_image002

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

clip_image004

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

clip_image006


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

clip_image008


然后

clip_image010

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

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

然后用desinger打开该数据库

clip_image012

编辑代理程序

clip_image014

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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_image016

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

clip_image018

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

clip_image020

定义搜索键的参数

clip_image022


1
2
3
4
5
6
7
8
9
10
11
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_image024


1
2
3
4
5
function  createXMLHttpRequest(){
//var h=new ActiveXObject("Msxml2.XMLHTTP");
var  h =  new  XMLHttpRequest();
return  h;
}

clip_image026

Document forms[0].submit();

接下来我们访问

clip_image028


clip_image030


clip_image032


clip_image034

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

clip_image036

clip_image038



本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1401225,如需转载请自行联系原作者

相关文章:

  • 产品与技术(人员)间的职责关系
  • 加强网站安全、重构公司的门户网站项目(C# VS2003)
  • 23张非常精美的圣诞桌面壁纸分享
  • 使用iperf工具进行带宽测试
  • css在线格式化工具/js在线格式化工具
  • nginx 服务器重启命令相关
  • java jni和android java ndk
  • 示例化讲解RIP路由更新机制
  • [Cocoa]iOS 开发者账户,联机调试,发布应用事宜
  • Apache Spark Streaming 使用实例
  • GUI鼠标相关设置
  • NS3编译运行
  • webx学习总结
  • C语言如何跨文件调用函数定义中声明的变量
  • 思科网真应用解决方案
  • [NodeJS] 关于Buffer
  • 【前端学习】-粗谈选择器
  • Angular4 模板式表单用法以及验证
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • Consul Config 使用Git做版本控制的实现
  • ES6系统学习----从Apollo Client看解构赋值
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • php的插入排序,通过双层for循环
  • rc-form之最单纯情况
  • React-flux杂记
  • SOFAMosn配置模型
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Spring Cloud Feign的两种使用姿势
  • Spring框架之我见(三)——IOC、AOP
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 回顾 Swift 多平台移植进度 #2
  • 技术胖1-4季视频复习— (看视频笔记)
  • 那些被忽略的 JavaScript 数组方法细节
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 微信开放平台全网发布【失败】的几点排查方法
  • 因为阿里,他们成了“杭漂”
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • (bean配置类的注解开发)学习Spring的第十三天
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (LeetCode C++)盛最多水的容器
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (WSI分类)WSI分类文献小综述 2024
  • (编译到47%失败)to be deleted
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (十六)一篇文章学会Java的常用API
  • (五)IO流之ByteArrayInput/OutputStream