Servlet properties 文件
|
----
Servlet
可由两种方法装载:第一种是Servlet Manager 在HTTP启动时按servlets.properties
文件指定的参数装载Servlet,第二种是客户第一次调用Servlet时装载Servlet。Servlet在HTTP任务停止运行时从内存被清除。
|
----
您应当尽可能使用第一种。在HTTP任务启动时就装载Servlet,以后用户请求不用再装载,相应时间和延迟就小。
|
----
servlets.properties是一个TXT格式的配置文件,用来指定装载Servlet时的标准参数,位于Domino数据目录,例如:D:/r5server/data/servlets.properties。您可以使用TXT编辑器创建它。
|
----
servlet properties 文件包括Servlet别名,初始化参数,URL扩展映射,WEB服务器启动时需装载的Servlet。
|
----
本篇文章设想读者熟悉JavaScript,Java, Servlet, 了解Domino应用程序设计。
|
语法如下:
|
----
Servlet 别名------servlet.<alias-name>.code=<class-name>
----
初始化参数------servlet.<alias or class name>.initArgs=<name1=value1>,<name2=value2>
----
Servlet代码中可以使用ServletConfig.getInitParameter方法访问这些数据。
----
URL 扩展映射---servlet.<alias or class name>.extension=<extension> <extension> ...
----
启动时装载------servlets.startup=<alias or class> <alias or class> ... |
----
以下是一个servlets.properties 文件,这里指定Test为HelloWorld.class Servlet的别名,指定了初始化参数,启动时装载。 |
----
# Example servlets.properties file
----
servlet.Test.code = HelloWorld
----
servlet.Test.initArgs = 1, 2, 3
----
servlets.startup = Test
|
----
有关Servlet配置文件经常出现的错误有:
|
- 文件目录放置错误,它必须是在您的Domino数据目录下。
- 文件扩展名错误,许多编辑器例如Notepad使用TXT扩展名
- 使用错误文件名,文件名必须是servlets.properties
- 大小写错误,文件名如同Servlet名字是大小写敏感的。
|
Domino Servlet开发示例
|
----
Servlet只装载入内存一次。装载时运行init 方法,以后每一次客户请求Servlet时执行service 方法,按照用户的请求执行doPost 或 doGet方法。 |
Servlet结构 |
----
编写Servlet,使用以下Servlet类: |
----
Javax.servlet.http.HttpServlet
----
Javax.servlet.GenericServlet |
----
定义方法描述Servlet功能, 经常用到的方法如下: |
----
doGet() and doPost() 处理 GET 和 POST 请求.
----
getServiceInfo() 提供 servlet 描述
----
init() servlet 初始化代码
----
service() 处理请求 |
----
HTTP请求可有两种:get 和 post。get方法在URL结尾附加信息,可从环境变量query_string中得到;post以“变量名/变量值”形式发送信息。 |
----
Servlet代码开发时,get或 post方法使用到JSDK中两个包:javax.servlet和javax.servlet.http。代码中需引入它们。 |
----
在您编译servlet 代码之前, 使用到的servlet 类需要增加到 CLASSPATH 环境变量中。然后您可以用您喜欢的JAVA编译器编译servlet 代码。 |
使用Servlet访问Domino对象示例1
|
----
下面一个例子是Servlet和Domino的集成,Servlet访问Domino通信录中的对象。 |
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import lotus.domino.*;
public class Example_2 extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException{
res.setContentType("text/html");
PrintWriter toBrowser = res.getWriter();
toBrowser.println("<HTML");
toBrowser.println("<HEAD>");
toBrowser.println("<TITLE>Example 2</TITLE>");
toBrowser.println("</HEAD>");
toBrowser.println("<BODY>");
toBrowser.println("<H1>Example 2</H1>");
|
----
调
用Domino对象的代码必须包含在try/catch 块中(见以下一段代码),首先创建一个NotesThread
对象,然后创建一个新的会话对象。此处创建会话对象的方法中没有参数,即是用服务器的ID访问Domino对象,您也可指定使用某一用户的
Internet用户名和口令作为参数,用此用户身份访问Domino对象,从通信录(names.nsf) 数据库的People
视图取得第一个文档。 |
try {
NotesThread.sinitThread(); /*创建NotesThread对象
Session s = NotesFactory.createSession(); /*创建新会话对象
Database db = s.getDatabase("","names.nsf"); /*访问通信录数据库
View vw = db.getView("People"); /*访问视图People
Document doc = vw.getFirstDocument(); /*获得第一个文档
ToBrowser.println(db.getTitle()); /*获得数据库标题
toBrowser.println("<TABLE>");
while (doc != null)
{
toBrowser.println("<TR><TD>");
toBrowser.println(doc.getItemValueString("LastName"));
toBrowser.println("</TD></TR>");
doc = vw.getNextDocument(doc); /*获得下一个文档
}
toBrowser.println("</TABLE>");
vw.recycle();
db.recycle();
s.recycle();
}
catch (NotesException n) {
|
----
toBrowser行代码发送数据库标题给请求的客户端浏览器。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(); }
toBrowser.println("</BODY></HTML>");
}
}
下图显示了运行结果。
|