- 浏览: 253023 次
- 性别:
- 来自: 北京
最新评论
-
java_frog:
我之前resteasy用的3.6.0,周末过来降成3.1.0, ...
在本地环境ok,预发环境就老报这个,版本应该也没问题,有碰到过的人吗 -
yugouai:
另外还有可能是拿不到环境变量的,所以crontab的shell ...
linux下crontab定时任务不执行 -
wuchsh2013:
最好不要写在脚本里面,在执行脚本前设置权限。
linux下crontab定时任务不执行 -
原水小子:
给力哈~~~~~~~~~~~~~~
正则表达式限制输入框只能输入数字 -
qizhijun:
请问你找到原因了吗?我也遇到同样的问题。头疼好几天了。
java调用FlashPaper时printing failed for an unknown reason错误
.前言
DOMINO是一个以电子邮件为基础发展起来的标准群件平台,从1982年开始发布第一个版本,至今已经有数十年的历史,正式注册用户过亿。
它最大的优点就是提供了大量内置的如SMTP、POP、LDAP、HTTP、HTTPS等集成的系统服务,所以使用户快速构建跨平台的解决方案成为可能。
整个平台由DOMINOSERVER(DOMINO服务器)、ADMINISTRATOR(DOMINO管理工具)、DESIGNER(DOMINO开发设计工具)、NOTES(DOMINO客户端)组成,在一些针对性应用方面还有LOTUS-WORKFLOW(DOMINO工作流设计系统)、LOTUS-DOMINO.DOC(DOMINO文档管理系统)、LOTUS-QUICKPLACE(DOMINO协作平台)、LOTUS-LEI(DOMINO数据交互系统)、LOTUS-LEARNINGSPACE(DOMINO培训系统)等强有力支持。
2.开发工具分析
5、 已知限制
数据库的最大大小是多少?
最大的 OS 文件大小限制 -(最大为 64GB)
文本域的最大大小是多少?
15KB(存储);15KB,显示在视图列中
RTF 文本域的最大大小是多少?
仅由可用磁盘空间限定,最大为 1GB
RTF 文本域中单个段落的最大大小是多少?
64KB
一个层次结构视图中有几级响应;每一级中有几个文档?
31 级;300,000 个文档
视图、表单等的名字最多允许包含多少个字符?
数据库标题:96 个字节
文件名:在 Windows 和 Unix 平台上的最小限制为 255 和/或由操作系统限定; 本地的 Macintosh 工作站上为 31
域名: 32
视图名: 64
表单名: 32
代理名: 32
一个数据库中可包含多少个域?
t3000(所有域名的总长度限制在 t64K)。可以启用数据库属性“允许数据库中包含多个域”以使得数据库中的唯一命名域可到达 64K。
一个表中可包含多少列? 64
一个表中可包含多少行? 255
可以向一个数据库中添加多少视图?
没有限制;不过,随着视图数目的增加,用于显示其他视图的时间也会增加
可以向一个数据库中添加多少表单?
仅受数据库大小限制。
一个视图中允许有多少列?
289 个 10 字符列;取决于 # 或每列的字符数
可以向一个视图中引入多少文档?
文档合计至少为 350K
一个数据库中可允许有多少个层叠视图? 200
可输入的页边距的最大值(以英寸计)为多少? 46
可输入的页面裁减尺寸的最大值(以英寸计)为多少? 46
可选择/打印的最大字号是多少? 250
一个视图中允许有多少文档?
一个视图索引最大可为 130MB
最多可向“制表文本”中引出多少个文档?
仅受可用磁盘空间限制
一个“存取控制列表”中最多可有多少个项目?
t50 个名字(“存取控制列表”的大小不能超过 32767 字节)
一个“存取控制列表”中最多可有多少个角色? 75 个角色
可允许的标识符最大口令长度为多少? 63 个字符
对于一个多口令标识符,最多可有多少个用户拥有授权口令? 8 个用户
全文索引引擎的保留字
Topic,AND, NOT, OR, CONTAINS, NEAR, ACCRUE, EXACTCASE, TERMWEIGHT, PARAGRAPH, FIELD, SENTENCE.
如果想要绕开此限制,可以通过添加统配符的方式. 例如,如果想搜索"Topic"这个词, 可以添加一个"*"号, 即"Topic*". 或者把这个词用双引号括起来。
6。 Domino CGI变量
公共网关接口CGI是外部应用与HTTP服务器进行交互的标准,当Web用户保存文档或者打开已有文档的时候Domino Web服务器就会使用CGI变量收集用户信息包括用户名称 浏览器 用户的Internet协议 IP 地址。
为了在Web应用中收集这些信息 用户可以采用以下两种选择1)使用与CGI变量相同的名称建立字段2)使用LotusScript代理
Domino所支持的CGI变量表
Domino可以通过字段或者LotusScript代理获取以下CGI变量用户还可以通过HTTP或者HTTPS提前获取CGI变量。
Auth_Type
如果服务器支持用户认证并且可以保护脚本那么这个变量就是可以用于验证用户的特定于协议的认证方法
Content_Type
对于那些具有附加信息的查询例如HTTP POST和PUT这个变量就是数据的内容
Content_Length
由客户所提供的指定内容的长度
Gateway_Interface
服务器用来进行编译的CGI规范版本
HTTP_Accept
由HTTP头信息所规定的客户所能够接受的MIME类型
HTTP_Accept_language
由HTTP头信息所规定的客户所能够接受的语言
HTTP_Referer
用户用来在这里获取页面的URL
HTTPS
指出是否能够为服务器使用SSL模式
HTTPS_CLIENT_CERT_CO
x.509凭证上的公共名称
MMON_NAME
HTTPS_CLIENT_CERT_ISS x.509凭证的发出者
UER_COMMON_NAME
HTTPS_KEYSIZE SSL会话期间的会话键大小 例如40位128位
HTTP_User_Agent
客户用以发送请求的浏览器
Path_Info
由客户提供的额外路径信息相对服务器的HMTL根目录,换句话说是可以通过脚本的虚拟路径名称以及紧随其后作为PATH_INFO发送的额外信息访问脚本
Path_Info_Decoded
返回与Path_Info相同的信息但是会解码字符串例如如果URL所引用的视图名称包含了URL所不允许的字符那么就要对这个名称进行编码 这个CGI变量将会解码这个字符串,Path_Info_Decoded 只能够由Domino应用使用
Path_Translated
服务器可以提供PATH_INFO的经过翻译的版本它将会获取路径并且进行虚拟与物理之间的映射
Query_String
在引用这个脚本的URL中 紧随问号之后的信息
Query_String_Decoded
返回与Query_String相同的内容只是对字符串进行解码例如如果URL所引用的视图名称包含了URL所不允许的字符那么就要对这个名称进行编码 这个CGI变量将会解码这个字符串,Query_String_Decoded只能够由Domino应用使用
Remote_Addr
进行请求的远程主机的IP地址
Remote_Host
进行请求的主机名称
Remote_Ident
这个变量将会设置为从服务器所获取的远程用户的名称使用这个变量,只能够用于日志记录
Remote_User
返回经过认证的用户名称的认证方法
Request_Content
只用于代理包含随HTTP POST请求发送的数据数据通常采用URL编码 由使用&符号连接的名称=值对构成 例如FirstName=John&LastName=Doe,Request_Method 能够用于进行请求的方法 对于HTTP 这个方法可以是GET、HEAD或者POST等
Script_Name
正在执行的脚本的虚拟路径用于自引用URL
Server_Name
服务器的主机名称DNS别名或者IP地址它会出现在自引用URL中
Server_Protocol
这个请求使用的信息协议的名称和修订版本
Server_Port
请求所发送到的端口
Server_Software
运行CGI程序的信息服务器软件的名称和版本
Server_URL_Gateway_
服务器进行编辑的CGI规范的版本
7。 出错处理
在Web开发中,公式必须用异常处理方式保护代码
@IsError,特别是涉及DBColumn和DBLookup的地方
7。1 异常处理
所有过程或函数都需要提供完整的异常处理,以便于出现错误时的排除,原则
上只有涉及到非本系统模块时需要屏蔽错误,如和RTX接口,和硬件接口等情况。
在整个代码Declarations块中声明数据库常量
Const DATABASE_NAME = “test.nsf”’ 为了防止代码的互相调用,可以添加前缀,如COMMON_DATABASE_NAME
在所有过程(或函数)的代码描述以后,直接声明一个常量,最后为异常处理代码
Const FUNCTION_NAME = "Initialize"
On Error Goto EHandle
……
Exit Sub(Function)
EHandle:
Msgbox DATABASE_NAME + "-" + FUNCTION_NAME + "-" + Error + "-" + Cstr(Erl)
End Sub(Function)
结果示例:
test.nsf-Initialize-Object is not set-19
原则上不推荐使用Print显示异常信息,此结果只针对开发者有用,只有需要进行页面跳转时使用print
4.6 为 Web 定制“表单已处理”确认信息
Web 用户提交文档后,Domino 使用缺省的“表单已处理”的确认信息回应用户。要重新设置缺省答复,可将计算文本域添加到表单中,给此域命名为 $$Return,并使用 HTML 作为计算值来创建定制的批准。
显示个人化答复
下面的 $$Return 公式返回答复“Thank you”,并附加上用户姓名:
who:= @If(@Left(From; " ") = ""; From; @Left(From; " "));
@Return("<h2>Thank you, " + who + "</h2><br><h4>
<a href=/register.nsf/Main+View?OpenView>Main View</a>");
7.2 显示定制的错误消息
要定制显示给 Web 用户的错误消息外观,向数据库中添加定制的错误消息表单。如果发生错误条件,且其定制表单存在,则 Domino 使用定制表单来显示错误消息。否则,Domino 使用缺省错误消息表单。添加到数据库的消息表单将覆盖由管理员设置的服务器范围内的消息。
要在表单和错误条件之间创建关联,创建拥有下列名称之一的表单。然后创建名为 MessageString 的可编辑的文本域来保存错误消息。添加要与错误消息一起显示的其他文本、链接以及其他表单对象。
$$ReturnAuthenticationFailure 不能校验用户名称和口令。
$$ReturnAuthorizationFailure 用户对该数据库没有足够的存取级别。
$$ReturnDocumentDeleted 成功删除文档。
$$ReturnGeneralError 出现了其他错误条件。
链接到另一页面
根据提交文档中的域值,在 HTML 中包括链接到另一页面的 URL。下面的 $$Return 公式根据用户选择的范围返回答复。例如:如果用户选择欧洲,则消息“在意大利访问我们的站点”将显示一个链接,可链接到意大利的 Web 站点(假定公式中的“stdAnswer”和“stdFooter”已预先定义。)。
@If(Region="Asia"; stdAnswer + "<h2>Visit our site in <a href=\"<A href='http://www.japan.lotus.com\">Japanhttp://www.japan.lotus.com\">Japan</a></h2>" + stdFooter;
Region="Europe"; stdAnswer + "<h2>Visit our site in <a href=\"<A href='http://www.lotus.com\it_ciao/it_ciao.htm\">Italyhttp://www.lotus.com\it_ciao/it_ciao.htm\">Italy</a></h2>" + stdFooter;stdAnswer + stdFooter);
返回另一页面
要跳转到不同的 Web 页面,可将页面的 URL 用括号括起来放入页面。当用户提交文档时,Web 客户机将显示引用的文档。例如:下面的 $$Return 公式显示 Lotus 日本站点的主页。"[http://www.japan.lotus.com]"
7.3 定制未找到文档提示消息
1)在onload事件执行如下函数即可
function delstr()
{
var obj = document.getElementsByTagName("h2");
for (var i = 0; i < obj.length; i++)
{
var getstr=obj.innerText;
if (getstr.indexOf("未找到文档")!=-1)
{
getstr=getstr.replace("未找到文档","你要想换的字样")
obj.innerText = getstr;
}
}
}
这种方法必須要在页面下载完后才能执行,如果网络太慢就不太好了.
2)在表单打用样式表
h2{display:none}
这种方法无法屏蔽表格< td>中产生的未找到文档字样
3)在标签中加一个< tr>< /tr>不完整标签
使未找文档放于< tr>未找文档< /tr>之间
这种方法会产生一条细线
4)在表单中使用@Elements(@DbColumn)公式来取得符合条件的文档数
并根据是否为0来隐藏视图或显示你定制的语句.
7.4 所有数据提交时的数据校验
强制规定校验函数必须为CheckValue(),必须在对应表单的OnSubmit中添加
Return CheckValue ();
8.安全性规则
8.1 基于ACL的安全控制
区段存取
许多文档中的数据有不同的敏感性你可能希望某些用户不能更新或阅读文档中的某些内容而另外一些用户则可以完全控制达到这个目标的一个方法就是将文档分成不同的区段 并且对区段施加区段存取控制。
ACL权限分析
No Access不能存取者
根本不能够访问此数据库,根本不能进行复制;
Depositor存放者
可以创建文档但不能够阅读编辑或删除包括自己创建的文档在内的所有文档 不能接收到变化;
Reader 读者
能够阅读文档但不能创建编辑或删除文档,能够获得变化 但不能发送变化
Author作者
创建与阅读文档自己的文档,但只能编辑复制新文档。
Editor编辑者
创建阅读与编辑所有的文档以及复制所有新的或变化了的文档
Designer 设计者
可以修改所有的数据库设计元素,可以修改复制公式并且可以创建全文索引,设计者也可以执行允许较低存取级别执行的所有任务。但它不能删除数据库或修改ACL。复制所有新的或变化了的文档,也可以复制对设计的更改设计,但不能复制对ACL的更改。
Manager管理者
可以对数据库做任何操作 可以复制任何变化。
另外在ACL中有两种缺省的服务器组 LocalDomainServers是本地域中的服务器所形成的组,OtherDomainServers是其他域中的服务器所形成的组,它们通常是其他组织的服务器而本组织的用户可能需要去访问它们
要防止未注册的用户访问数据库你应该设置Default为No Access 如果Default需要更高的存取权限那么应该在ACL中创建Anonymous项并且将其设置为 NoAccess。
为了允许来自Web客户的访问,你可能仍然想让匿名用户拥有一些最小的权限来有效地使用数据库例如 你可以授予匿名用户以下权限
Reader允许访问信息数据库;
Author允许访问交互式数据库;
将Default与 Anonymous存取区分开,如果在ACL中没有Anonymous匿名这一项,那么Domino将按缺省的数据库存取级别对匿名用户访问进行设置。
而这种设置有可能超过了匿名用户访问所需要的级别,存取级别定义如下 :Default缺省 在ACL中没有定义的用户
Anonymous匿名 组织中没有有效Notes标识的用户
8.2 基于文档存取的安全控制
文档的创建者通过在文档属性对话框的安全设置能够决定谁可以阅读这个文档,可以选择让那些具有读者或更高权限的用户来阅读文档或者只让有限的用户阅读文档。
文档继承用来创建它的表单的读权限,任何被允许编辑文档的人都可以更改文档的读访问属性
8.3 基于域的安全控制
每一个文档都有一些特殊的域用来控制对它的访问,这些域是读者域 reader fields、作者域author fields与签名域 signed fields。
读者域
读者域可以在表单中创建来设置对文档的读访问限制,一个读者域将列出所有允许对文档进行读访问的名字 它可以用来替代或者与表单/文档安全读存取列表一起工作,如果读访问列表与读者域同时存在那么谁能够阅读文档就由它俩共同决定,读者域不允许对数据库没有读访问权限的用户进行访问。不过它能够让那些在数据库ACL中可以正常阅读文档的某些用户不能够进行读访问。
将一个域设计成读者域并且使它可编辑将允许文档作者看到名字列表列出的名字,可以从地址对话框数据库ACL视图对话框或作者手工输入中获得,有效使用读者域的方法是创建这个域然后列出用户与组来作者可以从中选择。
作者域
可以在表单中创建作者域来给那些不是文档作者的人以作者的权力从而能够编辑文档,作者域也是要包含一个名字列表并且创建方法与读者域相同,作者域只对那些对数据库有作者权限的用户有效。
签名域
在表单中创建签名域将允许文档在保存或邮寄时能够附带上数字签名。数字签名能够保证作者的真实性并且保证文档中的数据没有改变,用户标识符中的私有密钥能够生成签名,Notes通过比较数字签名与公用通讯录中的公开密钥来进行合法性验证。
8.4 基于代理的安全控制
1、作为WEB用户运行
默认情况下,Web用户以代理创建者的权限运行代理。然而在Design选项卡的代理属性中选择“作为WEB用户运行代理”时,可以指定WEB用户代表自己(自己指创建者)运行代理。如果选定这个选项,系统会提示用户输入相关用户名和密码(已登录则不用)。
然后根据用户名检查数据库ACL中的权限。 仅仅通过Notes客户(不是WEB用户)就可以创建代理。只有共享代理才能运行在WEB客户上。WEB无调度机制,因此运行在WEB上的代理无法在预定义的时间运行。如果在代理创建过程中有设置代理何时运行,则该代理只适用于从Notes客户运行的代理。代理操作对象选项则对所有代理有效。并且代表session.currentusername的不同。
WEB不支持以下四个选项:
*视图中所有未读文档 *视图中所有文档 *已选定的文档 *粘贴的文档
在具体应用上比如设置了自动回复邮件,如果不是作为WEB用户运行,那么回复邮件就会标明发信者是代理签名者而不是真实用户。
2、设置运行时安全性等级 3、查看和运行此代理的缺省权限
以上两项一般设置选择第二安全等级
4、允许有公共权限的用户查看和运行此代理(只要可以访问此数据库的用户都可以查看和运行此代理)
DOMINO是一个以电子邮件为基础发展起来的标准群件平台,从1982年开始发布第一个版本,至今已经有数十年的历史,正式注册用户过亿。
它最大的优点就是提供了大量内置的如SMTP、POP、LDAP、HTTP、HTTPS等集成的系统服务,所以使用户快速构建跨平台的解决方案成为可能。
整个平台由DOMINOSERVER(DOMINO服务器)、ADMINISTRATOR(DOMINO管理工具)、DESIGNER(DOMINO开发设计工具)、NOTES(DOMINO客户端)组成,在一些针对性应用方面还有LOTUS-WORKFLOW(DOMINO工作流设计系统)、LOTUS-DOMINO.DOC(DOMINO文档管理系统)、LOTUS-QUICKPLACE(DOMINO协作平台)、LOTUS-LEI(DOMINO数据交互系统)、LOTUS-LEARNINGSPACE(DOMINO培训系统)等强有力支持。
2.开发工具分析
5、 已知限制
数据库的最大大小是多少?
最大的 OS 文件大小限制 -(最大为 64GB)
文本域的最大大小是多少?
15KB(存储);15KB,显示在视图列中
RTF 文本域的最大大小是多少?
仅由可用磁盘空间限定,最大为 1GB
RTF 文本域中单个段落的最大大小是多少?
64KB
一个层次结构视图中有几级响应;每一级中有几个文档?
31 级;300,000 个文档
视图、表单等的名字最多允许包含多少个字符?
数据库标题:96 个字节
文件名:在 Windows 和 Unix 平台上的最小限制为 255 和/或由操作系统限定; 本地的 Macintosh 工作站上为 31
域名: 32
视图名: 64
表单名: 32
代理名: 32
一个数据库中可包含多少个域?
t3000(所有域名的总长度限制在 t64K)。可以启用数据库属性“允许数据库中包含多个域”以使得数据库中的唯一命名域可到达 64K。
一个表中可包含多少列? 64
一个表中可包含多少行? 255
可以向一个数据库中添加多少视图?
没有限制;不过,随着视图数目的增加,用于显示其他视图的时间也会增加
可以向一个数据库中添加多少表单?
仅受数据库大小限制。
一个视图中允许有多少列?
289 个 10 字符列;取决于 # 或每列的字符数
可以向一个视图中引入多少文档?
文档合计至少为 350K
一个数据库中可允许有多少个层叠视图? 200
可输入的页边距的最大值(以英寸计)为多少? 46
可输入的页面裁减尺寸的最大值(以英寸计)为多少? 46
可选择/打印的最大字号是多少? 250
一个视图中允许有多少文档?
一个视图索引最大可为 130MB
最多可向“制表文本”中引出多少个文档?
仅受可用磁盘空间限制
一个“存取控制列表”中最多可有多少个项目?
t50 个名字(“存取控制列表”的大小不能超过 32767 字节)
一个“存取控制列表”中最多可有多少个角色? 75 个角色
可允许的标识符最大口令长度为多少? 63 个字符
对于一个多口令标识符,最多可有多少个用户拥有授权口令? 8 个用户
全文索引引擎的保留字
Topic,AND, NOT, OR, CONTAINS, NEAR, ACCRUE, EXACTCASE, TERMWEIGHT, PARAGRAPH, FIELD, SENTENCE.
如果想要绕开此限制,可以通过添加统配符的方式. 例如,如果想搜索"Topic"这个词, 可以添加一个"*"号, 即"Topic*". 或者把这个词用双引号括起来。
6。 Domino CGI变量
公共网关接口CGI是外部应用与HTTP服务器进行交互的标准,当Web用户保存文档或者打开已有文档的时候Domino Web服务器就会使用CGI变量收集用户信息包括用户名称 浏览器 用户的Internet协议 IP 地址。
为了在Web应用中收集这些信息 用户可以采用以下两种选择1)使用与CGI变量相同的名称建立字段2)使用LotusScript代理
Domino所支持的CGI变量表
Domino可以通过字段或者LotusScript代理获取以下CGI变量用户还可以通过HTTP或者HTTPS提前获取CGI变量。
Auth_Type
如果服务器支持用户认证并且可以保护脚本那么这个变量就是可以用于验证用户的特定于协议的认证方法
Content_Type
对于那些具有附加信息的查询例如HTTP POST和PUT这个变量就是数据的内容
Content_Length
由客户所提供的指定内容的长度
Gateway_Interface
服务器用来进行编译的CGI规范版本
HTTP_Accept
由HTTP头信息所规定的客户所能够接受的MIME类型
HTTP_Accept_language
由HTTP头信息所规定的客户所能够接受的语言
HTTP_Referer
用户用来在这里获取页面的URL
HTTPS
指出是否能够为服务器使用SSL模式
HTTPS_CLIENT_CERT_CO
x.509凭证上的公共名称
MMON_NAME
HTTPS_CLIENT_CERT_ISS x.509凭证的发出者
UER_COMMON_NAME
HTTPS_KEYSIZE SSL会话期间的会话键大小 例如40位128位
HTTP_User_Agent
客户用以发送请求的浏览器
Path_Info
由客户提供的额外路径信息相对服务器的HMTL根目录,换句话说是可以通过脚本的虚拟路径名称以及紧随其后作为PATH_INFO发送的额外信息访问脚本
Path_Info_Decoded
返回与Path_Info相同的信息但是会解码字符串例如如果URL所引用的视图名称包含了URL所不允许的字符那么就要对这个名称进行编码 这个CGI变量将会解码这个字符串,Path_Info_Decoded 只能够由Domino应用使用
Path_Translated
服务器可以提供PATH_INFO的经过翻译的版本它将会获取路径并且进行虚拟与物理之间的映射
Query_String
在引用这个脚本的URL中 紧随问号之后的信息
Query_String_Decoded
返回与Query_String相同的内容只是对字符串进行解码例如如果URL所引用的视图名称包含了URL所不允许的字符那么就要对这个名称进行编码 这个CGI变量将会解码这个字符串,Query_String_Decoded只能够由Domino应用使用
Remote_Addr
进行请求的远程主机的IP地址
Remote_Host
进行请求的主机名称
Remote_Ident
这个变量将会设置为从服务器所获取的远程用户的名称使用这个变量,只能够用于日志记录
Remote_User
返回经过认证的用户名称的认证方法
Request_Content
只用于代理包含随HTTP POST请求发送的数据数据通常采用URL编码 由使用&符号连接的名称=值对构成 例如FirstName=John&LastName=Doe,Request_Method 能够用于进行请求的方法 对于HTTP 这个方法可以是GET、HEAD或者POST等
Script_Name
正在执行的脚本的虚拟路径用于自引用URL
Server_Name
服务器的主机名称DNS别名或者IP地址它会出现在自引用URL中
Server_Protocol
这个请求使用的信息协议的名称和修订版本
Server_Port
请求所发送到的端口
Server_Software
运行CGI程序的信息服务器软件的名称和版本
Server_URL_Gateway_
服务器进行编辑的CGI规范的版本
7。 出错处理
在Web开发中,公式必须用异常处理方式保护代码
@IsError,特别是涉及DBColumn和DBLookup的地方
7。1 异常处理
所有过程或函数都需要提供完整的异常处理,以便于出现错误时的排除,原则
上只有涉及到非本系统模块时需要屏蔽错误,如和RTX接口,和硬件接口等情况。
在整个代码Declarations块中声明数据库常量
Const DATABASE_NAME = “test.nsf”’ 为了防止代码的互相调用,可以添加前缀,如COMMON_DATABASE_NAME
在所有过程(或函数)的代码描述以后,直接声明一个常量,最后为异常处理代码
Const FUNCTION_NAME = "Initialize"
On Error Goto EHandle
……
Exit Sub(Function)
EHandle:
Msgbox DATABASE_NAME + "-" + FUNCTION_NAME + "-" + Error + "-" + Cstr(Erl)
End Sub(Function)
结果示例:
test.nsf-Initialize-Object is not set-19
原则上不推荐使用Print显示异常信息,此结果只针对开发者有用,只有需要进行页面跳转时使用print
4.6 为 Web 定制“表单已处理”确认信息
Web 用户提交文档后,Domino 使用缺省的“表单已处理”的确认信息回应用户。要重新设置缺省答复,可将计算文本域添加到表单中,给此域命名为 $$Return,并使用 HTML 作为计算值来创建定制的批准。
显示个人化答复
下面的 $$Return 公式返回答复“Thank you”,并附加上用户姓名:
who:= @If(@Left(From; " ") = ""; From; @Left(From; " "));
@Return("<h2>Thank you, " + who + "</h2><br><h4>
<a href=/register.nsf/Main+View?OpenView>Main View</a>");
7.2 显示定制的错误消息
要定制显示给 Web 用户的错误消息外观,向数据库中添加定制的错误消息表单。如果发生错误条件,且其定制表单存在,则 Domino 使用定制表单来显示错误消息。否则,Domino 使用缺省错误消息表单。添加到数据库的消息表单将覆盖由管理员设置的服务器范围内的消息。
要在表单和错误条件之间创建关联,创建拥有下列名称之一的表单。然后创建名为 MessageString 的可编辑的文本域来保存错误消息。添加要与错误消息一起显示的其他文本、链接以及其他表单对象。
$$ReturnAuthenticationFailure 不能校验用户名称和口令。
$$ReturnAuthorizationFailure 用户对该数据库没有足够的存取级别。
$$ReturnDocumentDeleted 成功删除文档。
$$ReturnGeneralError 出现了其他错误条件。
链接到另一页面
根据提交文档中的域值,在 HTML 中包括链接到另一页面的 URL。下面的 $$Return 公式根据用户选择的范围返回答复。例如:如果用户选择欧洲,则消息“在意大利访问我们的站点”将显示一个链接,可链接到意大利的 Web 站点(假定公式中的“stdAnswer”和“stdFooter”已预先定义。)。
@If(Region="Asia"; stdAnswer + "<h2>Visit our site in <a href=\"<A href='http://www.japan.lotus.com\">Japanhttp://www.japan.lotus.com\">Japan</a></h2>" + stdFooter;
Region="Europe"; stdAnswer + "<h2>Visit our site in <a href=\"<A href='http://www.lotus.com\it_ciao/it_ciao.htm\">Italyhttp://www.lotus.com\it_ciao/it_ciao.htm\">Italy</a></h2>" + stdFooter;stdAnswer + stdFooter);
返回另一页面
要跳转到不同的 Web 页面,可将页面的 URL 用括号括起来放入页面。当用户提交文档时,Web 客户机将显示引用的文档。例如:下面的 $$Return 公式显示 Lotus 日本站点的主页。"[http://www.japan.lotus.com]"
7.3 定制未找到文档提示消息
1)在onload事件执行如下函数即可
function delstr()
{
var obj = document.getElementsByTagName("h2");
for (var i = 0; i < obj.length; i++)
{
var getstr=obj.innerText;
if (getstr.indexOf("未找到文档")!=-1)
{
getstr=getstr.replace("未找到文档","你要想换的字样")
obj.innerText = getstr;
}
}
}
这种方法必須要在页面下载完后才能执行,如果网络太慢就不太好了.
2)在表单打用样式表
h2{display:none}
这种方法无法屏蔽表格< td>中产生的未找到文档字样
3)在标签中加一个< tr>< /tr>不完整标签
使未找文档放于< tr>未找文档< /tr>之间
这种方法会产生一条细线
4)在表单中使用@Elements(@DbColumn)公式来取得符合条件的文档数
并根据是否为0来隐藏视图或显示你定制的语句.
7.4 所有数据提交时的数据校验
强制规定校验函数必须为CheckValue(),必须在对应表单的OnSubmit中添加
Return CheckValue ();
8.安全性规则
8.1 基于ACL的安全控制
区段存取
许多文档中的数据有不同的敏感性你可能希望某些用户不能更新或阅读文档中的某些内容而另外一些用户则可以完全控制达到这个目标的一个方法就是将文档分成不同的区段 并且对区段施加区段存取控制。
ACL权限分析
No Access不能存取者
根本不能够访问此数据库,根本不能进行复制;
Depositor存放者
可以创建文档但不能够阅读编辑或删除包括自己创建的文档在内的所有文档 不能接收到变化;
Reader 读者
能够阅读文档但不能创建编辑或删除文档,能够获得变化 但不能发送变化
Author作者
创建与阅读文档自己的文档,但只能编辑复制新文档。
Editor编辑者
创建阅读与编辑所有的文档以及复制所有新的或变化了的文档
Designer 设计者
可以修改所有的数据库设计元素,可以修改复制公式并且可以创建全文索引,设计者也可以执行允许较低存取级别执行的所有任务。但它不能删除数据库或修改ACL。复制所有新的或变化了的文档,也可以复制对设计的更改设计,但不能复制对ACL的更改。
Manager管理者
可以对数据库做任何操作 可以复制任何变化。
另外在ACL中有两种缺省的服务器组 LocalDomainServers是本地域中的服务器所形成的组,OtherDomainServers是其他域中的服务器所形成的组,它们通常是其他组织的服务器而本组织的用户可能需要去访问它们
要防止未注册的用户访问数据库你应该设置Default为No Access 如果Default需要更高的存取权限那么应该在ACL中创建Anonymous项并且将其设置为 NoAccess。
为了允许来自Web客户的访问,你可能仍然想让匿名用户拥有一些最小的权限来有效地使用数据库例如 你可以授予匿名用户以下权限
Reader允许访问信息数据库;
Author允许访问交互式数据库;
将Default与 Anonymous存取区分开,如果在ACL中没有Anonymous匿名这一项,那么Domino将按缺省的数据库存取级别对匿名用户访问进行设置。
而这种设置有可能超过了匿名用户访问所需要的级别,存取级别定义如下 :Default缺省 在ACL中没有定义的用户
Anonymous匿名 组织中没有有效Notes标识的用户
8.2 基于文档存取的安全控制
文档的创建者通过在文档属性对话框的安全设置能够决定谁可以阅读这个文档,可以选择让那些具有读者或更高权限的用户来阅读文档或者只让有限的用户阅读文档。
文档继承用来创建它的表单的读权限,任何被允许编辑文档的人都可以更改文档的读访问属性
8.3 基于域的安全控制
每一个文档都有一些特殊的域用来控制对它的访问,这些域是读者域 reader fields、作者域author fields与签名域 signed fields。
读者域
读者域可以在表单中创建来设置对文档的读访问限制,一个读者域将列出所有允许对文档进行读访问的名字 它可以用来替代或者与表单/文档安全读存取列表一起工作,如果读访问列表与读者域同时存在那么谁能够阅读文档就由它俩共同决定,读者域不允许对数据库没有读访问权限的用户进行访问。不过它能够让那些在数据库ACL中可以正常阅读文档的某些用户不能够进行读访问。
将一个域设计成读者域并且使它可编辑将允许文档作者看到名字列表列出的名字,可以从地址对话框数据库ACL视图对话框或作者手工输入中获得,有效使用读者域的方法是创建这个域然后列出用户与组来作者可以从中选择。
作者域
可以在表单中创建作者域来给那些不是文档作者的人以作者的权力从而能够编辑文档,作者域也是要包含一个名字列表并且创建方法与读者域相同,作者域只对那些对数据库有作者权限的用户有效。
签名域
在表单中创建签名域将允许文档在保存或邮寄时能够附带上数字签名。数字签名能够保证作者的真实性并且保证文档中的数据没有改变,用户标识符中的私有密钥能够生成签名,Notes通过比较数字签名与公用通讯录中的公开密钥来进行合法性验证。
8.4 基于代理的安全控制
1、作为WEB用户运行
默认情况下,Web用户以代理创建者的权限运行代理。然而在Design选项卡的代理属性中选择“作为WEB用户运行代理”时,可以指定WEB用户代表自己(自己指创建者)运行代理。如果选定这个选项,系统会提示用户输入相关用户名和密码(已登录则不用)。
然后根据用户名检查数据库ACL中的权限。 仅仅通过Notes客户(不是WEB用户)就可以创建代理。只有共享代理才能运行在WEB客户上。WEB无调度机制,因此运行在WEB上的代理无法在预定义的时间运行。如果在代理创建过程中有设置代理何时运行,则该代理只适用于从Notes客户运行的代理。代理操作对象选项则对所有代理有效。并且代表session.currentusername的不同。
WEB不支持以下四个选项:
*视图中所有未读文档 *视图中所有文档 *已选定的文档 *粘贴的文档
在具体应用上比如设置了自动回复邮件,如果不是作为WEB用户运行,那么回复邮件就会标明发信者是代理签名者而不是真实用户。
2、设置运行时安全性等级 3、查看和运行此代理的缺省权限
以上两项一般设置选择第二安全等级
4、允许有公共权限的用户查看和运行此代理(只要可以访问此数据库的用户都可以查看和运行此代理)
发表评论
-
生成AES密钥,网摘自留
2015-01-26 15:46 1140import java.security.NoSu ... -
转 BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
2014-11-14 20:37 705BeanUtils.copyProperties与Proper ... -
tar命令--摘
2014-04-18 11:21 571tar 解压缩命令 tar -c: ... -
spring为ApplicationContext提供有三种实现(举例) (转)
2013-08-01 08:42 738spring为ApplicationContext提供的3种实 ... -
转:F5 APACHE WEBLOGIC取用户真实IP的问题
2012-10-23 08:32 1624应用环境如下: F5负载均衡16台apache,然后转到后台 ... -
查看端口被哪程序占用
2011-04-22 16:39 928怎么查看端口占用情况? 开始--运行--cmd ... -
转:struts2上传文件
2010-07-12 14:34 1360上传文件是很多Web程序都具有的功能。Struts2本身没有提 ... -
转:Spring中任务调度cronExpression配置说明
2010-06-25 12:56 715cronExpression配置说明 字段 允许值 ... -
flv 播放器
2009-10-11 15:36 1501flv 播放器 <script type="t ... -
javadoc,在 Java 的注释上做文章-(转)
2009-07-21 18:58 831前言 一. Java 文档 ... -
转---MySQL导出导入数据库命令
2009-07-21 13:48 12101.mysql导出整个数据库 mysqldump ... -
myeclipse7.5注册码
2009-07-20 16:43 5341前几天装了一个myeclipse7.5,每天弹要注册,于是在网 ... -
IBM WebShere Portal主题与皮肤开发
2009-07-06 15:50 4509所谓主题与皮肤,主要指门户系统的界面风格与显示方式。在企业门户 ... -
IE与FireFox的js和css
2009-07-01 10:56 984png透明 AlphaImageLoader filter:p ... -
wpf和wdf的区别
2009-06-25 17:46 2157wpf&&wdf是两 ... -
top、clientTop、scrollTop、offsetTop
2009-06-17 20:49 877<html> <head> < ... -
marquee
2009-06-15 19:09 1088功能: 使文字或者图片 ... -
marquee参数详解
2009-06-15 19:08 20322008-04-25 09:51(文字滚动)参数详解 文字 ... -
onmousemove、onmouseover、 onmouseup及onclick的区别
2009-06-15 15:28 2042时间上 onmousemove 事件触发后,再触发 onmou ... -
eclipse快捷键
2009-06-03 16:18 779Eclipse 常用快捷键 Eclipse ...
相关推荐
Lotus Domino基础知识,1.1 Lotus历史 1.2 Domino&Notes;系统架构 1.3 Domino&Notes;应用
1. **Lotus Domino介绍**:Lotus Domino是IBM推出的一款企业级应用服务器,它集成了电子邮件、协作工具、数据库和Web服务器功能。其强大的Notes/Domino平台支持多种应用开发,包括表单、视图、代理、数据库和设计...
【DOMINO公式大全中文说明】:DOMINO公式是LOTUS DOMINO开发中不可或缺的一部分,它是一种强大的工具,用于处理和操作DOMINO应用的数据。本文档提供了详细的DOMINO公式的中文解释,帮助开发者更快地理解和应用这些...
接下来,将对Domino群集的基础知识进行详细介绍。 首先,Domino群集能够提供几大优点,包括: 1. 高可用性:通过群集配置,确保关键数据库和服务的连续性。如果群集中的某个服务器发生故障,其他服务器可接管工作,...
本文将由IBM Lotus技术支持工程师曹小勤为我们详细介绍Domino故障的分析和恢复策略。 故障分析是解决问题的第一步,它包括了故障数据的收集和分析。在Domino系统出现问题时,首先应终止所有相关进程,以释放资源并...
Domino管理大百科一书详细介绍了Domino的各方面管理知识,包括其起源、与其他平台的对比分析、安装、应用部署、日常维护、数据库复制管理等。 Lotus Domino起源于1980年代,是由Lotus公司开发的Notes/Domino平台中...
1. **API介绍**:Domino提供了丰富的应用程序接口(API),如Notes C API、LotusScript、Java API(JNDI, JDOM)等,允许开发者通过各种编程语言与Domino服务器进行交互。 2. **Notes C API**:C API是底层接口,...
### Domino邮件系统介绍 #### Domino邮件系统的架构及功能概述 Domino邮件系统是由IBM公司推出的一款企业级电子邮件解决方案,它不仅提供了强大的邮件处理能力,还支持多种通信协议,包括NRPC(Notes Remote ...
### 第二课:介绍Domino Administrator 这节课主要讲解Domino Administrator工具的使用,它是管理Domino环境的核心工具。内容包括管理员界面的导航、服务器监控、用户和组管理、数据库管理和设置等。学员将学会如何...
接下来我们将详细介绍Linux环境下安装Domino的方法和关键知识点。 首先,为了在Linux系统上安装Domino,我们需要下载适合Linux版本的Domino软件包。根据提供的文件内容,这里我们使用的Domino版本是R8.5.2。下载好...
以下将详细介绍如何在Domino环境中获取在线用户,以及相关知识点。 1. **Lotus Domino架构基础**: Lotus Domino是一款基于IBM的协作平台,它提供了电子邮件、日历、任务管理等功能,并支持Web应用程序的开发。其...
2. "Part 3_Views and Navigation.pdf" - 这份PDF文件很可能详细介绍了Domino数据库中的视图(Views)和导航(Navigation)概念。视图是Domino数据库中数据的一种组织方式,允许用户按不同标准对记录进行排序和过滤...
本文将详细介绍如何将运行在Windows 2000操作系统的Domino 5.08服务器升级到Domino 6.53版本,这是IBM推荐的一种升级路径,旨在提高服务器性能,兼容新应用,并优化用户体验。 首先,理解升级背景至关重要。在本次...
本文将详细介绍 Domino Servlet 的开发和运行配置,包括 Servlet 的特点、与 Agent 的区别、Domino 对 Servlet 的支持、Servlet 的开发和运行配置等。 一、Servlet 的特点 Servlet 是运行在服务器上的 Java 程序,...
本文将详细介绍 Domino 6.0 的安装步骤及关键配置要点。Domino 6.0 是一款由 IBM 开发的企业级邮件服务器和协作平台,广泛应用于企业内部通信与文档管理。通过图文并茂的方式,帮助用户顺利完成 Domino 6.0 的安装与...
我们将首先了解NSD(Notes System Diagnostic)工具,它是Domino系统诊断的主要工具,然后详细介绍Domino的故障恢复机制,以及如何配置和使用这些功能来应对和预防故障。 **NSD工具及其组成** NSD是Lotus Domino...
本文主要介绍了使用 Java 访问 Domino 对象的基本编程方法。Domino 对象包括数据库、视图、文档等,可以通过 Java 程序来访问和操作。 首先,需要了解 Java 对 Domino 对象的访问是通过调用 lotus.domino 包来实现...
其次,"基于Linux平台的Domino Server安装与配置.doc"则详细介绍了如何在Linux操作系统中安装和配置Domino服务器。Linux以其稳定性和开源特性,常被用作Domino服务器的基础平台。安装过程包括下载安装包,安装软件,...