Domino Servlet示例

更新时间:2023-07-22 21:03:58 阅读: 评论:0

Domino Servlet示例
国字脸男生发型
Domino R5Java Servlet的支持使您在开发Notes应用时有了更多的选择。例如,您可以使用Servlet代替Domino代理(Agent)访问Domino对象,完成服务器端的处理。
----本篇文章提供了有关Domino Servlet 的开发和运行配置,包括:
----Servlet 的特点,与Agent的区别,DominoServlet的支持
Domino服务器运行rvlet的配置
----Servlet的开发,通过两个rvlet例子,介绍如何使用Servlet访问Domino对象。
----本篇文章设想读者熟悉JavaScriptJava, Servlet, 了解Domino应用程序设计。
Servlet特点以及与Agent的区别
----Servlet是运行在服务器上的fishoilJava程序,提供类似于CGI应用和Domino Agent的功能。Servlet的主要优点是只装载入内存一次,而AgentCGI程序是每次调用时都需装载入内存。Srvlet一次装载入内存后,以后所有调用都使用该实例。例如,针对连接数据库的任务,您可以选择Servlet来保持一个永久连接传输数据,提高运行效率。
----尽管AgentServlet提供类似功能,但它们的实现差别很大。Agent存在于Domino数据库而Servlet在文件系统下。这立即带来了两个问题:分布和安全。Agent可以充分利用它所在的数据库,因此,可通过复制分布到其它服务器。同样,Domino安全模式控制Agent的访问。相反,Servlet存在于文件系统,因此由服务器、文件和目录安全来控制Servlet的访问。Servlet缺省是以服务器安全权限来运行,但也可以某一特定Internet用户名字和口令来运行。最后,除非使用WinNT目录复制,否则您必须拷贝或安装Servlet到其它需要的服务器。
关于Servlet开发环境JSDK
----标准Domino Designer的开发环境并不支持Servlet开发,因此您必须使用第三方IDESUN命令行JDKshishi开发Servlet代码。
----开发Servlet所需的JSDK可从SUN免费得到,另外JSDKDomino安装的标准部分,jsdk.jar位于D安装根目录。例如,您的Domino服务器安装在D盘的r5rver目录下,则JSDKD:\r5rver\jsdk.jar
----注意:Jar文件是标准JAVA文件的压缩。类似于Winzip,PKZipWindows CAB文件。
----Domino 4.6.x 支持 Domino 5.0 5.0.2b 以后版本支持 JSDK 2.0。最新版本支持情况请参考随软件的产品发布信息。
设置Domino服务器运行Servlet
----Domino R5 有自己的Servlet管理者,但也可使用第三方Servlet引擎,推荐使用IBM WebSphereDomino通信录的服务器文档含有Servlet设置部分。具体设置是:
----打开Domino通信录names.nsf数据库——打开“服务器文档”——below什么意思进入“Internet协议”项——进入“Domino Web引擎”项——编辑“Java Servlets”选项组,如下图:
这些选项的描述如下:
Java rvlet 支持-------------启用/禁用。可选项是:禁用、Domino Servlet 管理者和第三 Servlet支持。
Servlet URL 路径-------------访问ServletURL,例如/rvlet
类路径 ---------------------Servlet所在的目录,相对于Domino 数据目录。例如domino\rvlet,实际是Domino 数据目录下的domino\rvlet
Servlet 文件扩展------------URL文件扩展名,用来告诉Domino它是一个Servlet,以逗号分隔。
会话状态跟踪----------------启用/禁用指示Servlet管理者是否将中止空闲的会话。
空闲超时时间----------------一个空闲会话在被中止前的时间(分钟)。此参数只有在启用“最大活动会话”时才有效。
最大活动会话----------------最大活动Servlet会话数。
会话持续----------------------启用/禁用。指示会话信息是否存入磁盘。
----一旦Domino服务器配置成“启用”Servlet,以下与Servlet有关的行将出现在Domino数据目录下的Domino配置文件(dominof) 中:
# Java Servlet Settings
ServerInit rvlet:ServletInit d:\r5rver\Data
Service /rvlet/* rvlet:ServletService*
ServerTerm rvlet:ServletTerm
----Domino 支持JVMServlet Manager(包括Domino自己的和第三方的)。当Servlet“启用”时,JVMDomino HTTP服务器启动之前装载;如果使用Domino Servlet Manager,在JVM装载之后,Domino HTTP服务器启动时装载Servlet;如果使用第三方Servlet Manager,则只装载JVM
----用户从浏览器访问rvlet 时,URL为:myrver/rvlet/ rvletname。例如,输入 myrver/rvlet/HelloWorld 运行 HelloWorld rvlet
----WEB服务器启动时装载Servlet,此刻后Servlet将在内存中,开始工作。但是,Servlet代码改变后,Domino HTTP服务器必须退出并重新启动,新代码才会起作用。
 
Servlet properties 文件
----Servlet可由两种方法装载:第一种是Servlet Manager HTTP启动时按rvlets.properties 文件指定的参数装载Servlet,第二种是客户第一次调用Servlet时装载ServletServletHTTP任务停止运行时从内存被清除。
----您应当尽可能使用第一种。在HTTP任务启动时就装载Servlet,以后用户请求不用再装载,相应时间和延迟就小。
----rvlets.properties是一个TXT格式的配置文件,用来指定装载Servlet时的标准参数,位于Domino数据目录,例如:D:\r5rver\data\rvlets.properties。您可以使用TXT编辑器创建它。
----rvlet properties 文件包括Servlet别名,初始化参数,URL扩展映射,WEB服务器启动时需装载的Servlet
----本篇文章设想读者熟悉JavaScriptJava, Servlet, 了解Domino应用程序设计。
语法如下:
----Servlet 别名------rvlet.<alias-name>.code=<class-name>
----初始化参数------rvlet.<alias or class name>.initArgs=<name1=value1>,<name2=value2>
----Servlet代码中可以使用InitParameter方法访问这些数据。
----URL 扩展映射---rvlet.<alias or class name>.extension=<extension> <extension> ...
----启动时装载------rvlets.startup=<alias or class> <alias or class> ...
----以下是一个rvlets.properties 文件,这里指定TestHelloWorld.class Servlet的别名,指定了初始化参数,启动时装载。
----# Example rvlets.properties file
----de = HelloWorld
----rvlet.Test.initArgs = 1, 2, 3
----rvlets.startup = Test
----有关Servlet配置文件经常出现的错误有:
文件目录放置错误,它必须是在您的Domino数据目录下。
文件扩展名错误,许多编辑器例如Notepad使用TXT扩展名
使用错误文件名,文件名必须是rvlets.properties
大小写错误,文件名如同Servlet名字是大小写敏感的。
Domino Servlet开发示例
----Servlet只装载入内存一次。装载时运行init 方法,以后每一次客户请求Servlet时执行rvice 方法,按照用户的请求执行doPost doGet方法。
Servlet结构
----编写Servlet,使用以下Servlet:
----Javax.rvlet.http.HttpServlet
----Javax.rvlet.GenericServlet
----定义方法描述Servlet功能, 经常用到的方法如下:
----doGet() and doPost() 处理 GET POST 请求.
----bbc chinagetServiceInfo() 提供 rvlet 描述
----init() rvlet 初始化代码
----rvice() 处理请求
----HTTP请求可有两种:get postget方法在URL结尾附加信息,可从环境变量query_string中得到;post以“变量名/变量值”形式发送信息。
----Servlet代码开发时,get post方法使用到JSDK中两个包:javax.rvletjavax.rvlet.httpinperson。代码中需引入它们。
----在您编译rvlet 代码之前, 使用到的rvlet 类需要增加到 CLASSPATH 环境变量中。然后您可以用您喜欢的JAVA编译器编译rvlet 代码。
使用Servlet访问Domino对象示例1
----下面一个例子是ServletDomino的集成,Servlet访问Domino通信录中的对象。
import java.io.*;
import javax.rvlet.*;
唛头import javax.rvlet.http.*;
principal怎么读import lotus.domino.*;
public class Example_2 extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletRespon res)
throws ServletException, IOException{日语幸运
res.tContentType("text/html");
PrintWriter toBrowr = Writer();
toBrowr.println("<HTML");
toBrowr.println("<HEAD>");
toBrowr.println("<TITLE>Example 2</TITLE>");
toBrowr.println("</HEAD>");
toBrowr.println("<BODY>");
toBrowr.println("<H1>Example 2</H1>");
----调用Domino对象的代码必须包含在try/catch 块中(见以下一段代码),首先创建一个NotesThread 对象,然后创建一个新的会话对象。此处创建会话对象的方法中没有参数,即是用服务器的ID访问Domino对象,您也可指定使用某一用户的Internet用户名和口令作为参数,用此用户身份访问Domino对象,从通信录(names.nsf) 数据库的People 视图取得第一个文档。
try {
NotesThread.sinitThread(); /*创建NotesThread对象
Session s = ateSession(); /*创建新会话对象
Databa db = s.getDataba("","names.nsf"); /*访问通信录数据库
View vw = db.getView("People"); /*访问视图People
Document doc = vw.getFirstDocument(); /*获得第一个文档
ToBrowr.Title()); /*获得数据库标题
toBrowr.println("<TABLE>");
while (doc != null)
{
toBrowr.println("<TR><TD>");
toBrowr.ItemValueString("LastName"));
toBrowr.println("</TD></TR>");
doc = vw.getNextDocument(doc); /*获得下一个文档
}
toBrowr.println("</TABLE>");
vw.recycle();
db.recycle();
s.recycle();
}
catch (NotesException n) {
----toBrowr行代码发送数据库标题给请求的客户端浏览器。while (doc!=null) 行开始循环搜索视图中所有文档,将文档中的“Last Name ”值显示在浏览器上,完毕后释放Domino对象使用得内存。
----最后,显示任何Notes 错误并在finally 块中中止NotesThread对象。
System.out.println("Exception ID: " + n.id);
System.out.println("Exception description: " + n.text);
}
finally
{
NotesThread.stermThread(); }
toBrowr.println("</BODY></HTML>");
}
}
下图显示了运行结果。
 
使用Servlet访问Domino对象示例2
----前面是ServletDomino对象的结合,下面一个实例是ServletDomino表单的结合。我们先分析代码,然后跟踪表单的建立过程。
----下面代码是一个Servlet处理经表单确认后传送到服务器的变量/变量值。变量数值从表单中取得,用来向Domino数据库中添加文档。代码从标准行开始,然后从表单中取出FName, LName, Email Phone字段值。
import javax.rvlet.*;
import javax.rvlet.http.*;
import lotus.domino.*;
import java.io.PrintWriter;
import java.io.IOException;
public class Example_3 extends HttpServlet
{
public void doGet(HttpServletRequest req, HttpServletRespon res)
throws ServletException, IOException
{
res.tContentType("text/html");
PrintWriter pw = Writer();
pw.println("<html>");
pw.println("<head>");
pw.println("<title>Example 3</title>");
pw.println("</head>");
pw.println("<body>");
pw.println("<h1>Thank you!</h1>");
String fname = Parameter("FName"); /*获得表单中的字段值
String lname = Parameter("LName");
String email = Parameter("Email");
String phone = Parameter("Phone");
----下一步,正如前一个Servlet例子,创建一个Domino对象的会话,访问Domino通信录。这里我们只处理数据库能找到的情况。
try
{
NotesThread.sinitThread();
Session s = ateSession();
Databa db = s.getDataba("","names.nsf");
if (db != null)
{
----然后创建一个新文档,设置新文档的表单值,用我们取得的变量数值作为新文档中字段的值。
Document doc = db.createDocument(); /*创建一个新文档
placeItemValue("Form", "Person"); /*使用表单Person
placeItemValue("FirstName", fname);
placeItemValue("LastName", lname);
placeItemValue("OfficePhoneNumber", phone);
placeItemValue("MailAddress", email);
----然后我们保存文档,释放文档,数据库和会话对象占用的系统资源。(会话对象释放之前,如果数据库找不到,将出现错误信息。)
doc.save(true);
le();
db.recycle();
}
el
{
pw.println("An error was encountered.");
}
s.recycle();
}
----最后,我们处理与Domino有关的exception,中止线程,显示信息到浏览器。
catch (NotesException n)
{
pw.println("Notes Error: " + n.id);
pw.println("Description: " + n.text);
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
cskaNotesThread.stermThread();
}
pw.println(fname + " " + lname + " has been registered.");
pw.println("</body></html>");
}
}
----现在注意Domino表单建立过程。


上图是 Domino Designer 表单设计窗口,在标单设计中增加一个新的 HTML 标签指定执行该Servlet,增加一个 Submit 键,点击表单中的 Submit 键,执行 Javascript 代码确认表单,执行该Servlet
----以下是HTML代码,位于表单的顶部,将该表单重定向到Servlet
[</form>
<form name="NotesNetExample" action="your_rver_name/rvlet/Example_2">]
----这里指定NotesNetExample作为表单名,当用JavaScript访问表单的元素或表单确认时将用到此名字。action中指示表单确认时执行什么。
----下图在IE中显示了该表单的调用,输入用户的FirstNameLastNameOfficePhoneNumberMailAddress后,点击表单中的Submit 键,表单确认时数据将发送到服务器,执行Servlet,登记此用户。

本文发布于:2023-07-22 21:03:58,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/185579.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:表单   服务器   文档   代码   对象   运行
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图