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>"); } }
下图显示了运行结果。
|