免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Lotus Domino 和 IBM WebSphere 集成解決方案: Domino JSP 標(biāo)簽庫
在 Lotus Domino 中管理數(shù)據(jù),但又要利用 IBM WebSphere 高度可伸縮的優(yōu)點(diǎn),事務(wù)型的 J2EE 平臺(tái)使用下面這些解決方案的一種:Domino XML 或 Domino JSP 標(biāo)簽庫。在本系列的第二篇文章中,我們將重點(diǎn)介紹 Domino JSP 標(biāo)簽庫。

在這個(gè)由兩部分組成的系列文章的 第 1 部分 中,我們將介紹如何使用 Domino XML(也稱為 DXL)集成 Lotus Domino 和 IBM WebSphere。DXL 可以讓您訪問 Domino 對(duì)象,而不用了解太多有關(guān) Lotus Domino 的知識(shí)。然而,具有一些 Java 方面的經(jīng)驗(yàn)對(duì)于使用 DXL 方法來說也是必要的。對(duì)于那些 Java 經(jīng)驗(yàn)很少的 Notes 應(yīng)用程序開發(fā)者來說,可以使用 Lotus Domino Toolkit for WebSphere Studio 中提供的 Domino JSP 標(biāo)簽庫。(這個(gè)工具包在 Lotus Notes/Domino 6.0.2 及更新的版本中可用,用戶可以從 Passport Advantage 下載這個(gè)工具包。)

從 Lotus Domino 6 開始,Lotus 提供了兩個(gè) JSP 標(biāo)簽庫。這兩個(gè)標(biāo)簽庫讓程序員可以開發(fā)與 J2EE 兼容的應(yīng)用服務(wù)器上的 Lotus Domino 進(jìn)行交互的 J2EE 應(yīng)用程序。在可以使用標(biāo)簽庫之前,那些想要將自己的應(yīng)用程序與 Lotus Domino 連接的 JSP 開發(fā)者必須把 CORBA 和 IIOP 調(diào)用構(gòu)建在應(yīng)用程序中。這導(dǎo)致很大的復(fù)雜性,并且經(jīng)常需要使用一些特定于數(shù)據(jù)庫的代碼,這些代碼幾乎是不可重用的。隨著協(xié)作能力需求的增長(zhǎng),需要一種更智能的、功能更強(qiáng)大的解決方案。

Lotus 了解到了這種需求,因此創(chuàng)建了兩個(gè)標(biāo)簽庫,它們對(duì)通用的 Lotus Domino 和 J2EE 功能進(jìn)行了抽象和封裝。這些庫是在標(biāo)簽庫描述符 domtag.tld 和 domutils.tld 中定義的。Domutils.tld 定義了處理所有 J2EE 應(yīng)用程序通用的任務(wù)的工具標(biāo)簽。這些標(biāo)簽不是 Lotus Domino 特有的,可以獨(dú)立于 Domino 服務(wù)器應(yīng)用于任何應(yīng)用程序。在 domtag.tld 中定義的標(biāo)簽是 Lotus Domino 特有的。它們提供了對(duì)所有的 Domino 元素的編程訪問能力,包括設(shè)計(jì)、訪問控制列表和文檔。在本文中,我們將著重介紹 Domino 特有的標(biāo)簽(在 domtag.tld 中定義的標(biāo)簽)。從現(xiàn)在開始,我們就將其簡(jiǎn)稱為 taglib。

開始之前

taglib 比第一篇文章中所介紹的 XML 方法需要更深入的 Lotus Domino 方面的知識(shí)。它使用了 Domino 框架中的一些專用術(shù)語和控件。為了有效地使用 taglib,重要的是您要深入理解 Lotus Domino、各種設(shè)計(jì)元素以及您要訪問的數(shù)據(jù)的結(jié)構(gòu)。對(duì)第 1 部分的路線圖部分進(jìn)行回顧可以幫助您確定這種方法是否更適合于您和您的應(yīng)用程序。

需求

taglib 遵守 JSP 1.1 和 Servlet 2.2 規(guī)范,支持大部分 J2EE 兼容的應(yīng)用服務(wù)器。本文中的例子要安裝到 IBM WebSphere Application Server 5.1 上,并使用 WebSphere Studio Application Developer 進(jìn)行開發(fā)。本文假設(shè)您熟悉 Domino 對(duì)象和術(shù)語,并且了解使用 WebSphere Studio Application Developer 進(jìn)行 J2EE 編程的基本知識(shí)。

注意:如果不準(zhǔn)備讓 Lotus Domino 來處理 IIOP,在使用 taglib 時(shí)就不需要任何 CORBA 或 IIOP 編程的知識(shí)。

軟件需求如下:

  • WebSphere Application Server 5.x 或其他 J2EE 兼容的應(yīng)用服務(wù)器
  • Lotus Domino 6.x,并且安裝并啟用了 DIIOP 服務(wù)

準(zhǔn)備 Lotus Domino

taglib 使用 CORBA(Command Object Request Broker Architecture)和 IIOP(Internet Inter-ORB Protocol)技術(shù)與 Lotus Domino 進(jìn)行通信。您必須設(shè)置 Domino 服務(wù)器監(jiān)聽 IIOP 請(qǐng)求。首先,確保已經(jīng)安裝了 DIIOP。在 Domino 終端中執(zhí)行 show task 或 load diiop 命令,可以幫助判斷現(xiàn)在是否已經(jīng)安裝了 DIIOP。如果還沒有安裝,請(qǐng)從 Domino 安裝光盤上安裝 DIIOP。

接下來,編輯 Domino 服務(wù)器的 Notes.ini 文件,設(shè)置為在啟動(dòng) Lotus Domino 時(shí)自動(dòng)加載 DIIOP。找到以 ServerTasks 開始的那一行。在本行的最后,添加 diiop。重新啟動(dòng) Domino 服務(wù)器,并檢查是否有 DIIOP 服務(wù)器的啟動(dòng)消息。


圖 1. 在服務(wù)器啟動(dòng)過程中啟動(dòng) DIIOP 進(jìn)程

在 DIIOP 進(jìn)程啟動(dòng)時(shí),它在 Domino HTTP 根目錄(Windows 中 Domino 默認(rèn)的安裝目錄為 C:\lotus\domino\data\domino\html)中創(chuàng)建一個(gè)名為 diiop_ior.txt 的 IOR(Internet Object Reference)對(duì)象。如果您使用 Lotus Domino 作為 HTTP 服務(wù)器,就必須告訴 DIIOP 將這些文件放到您的 HTTP 服務(wù)器的根 HTML 目錄中。

  1. 打開 Domino Server 文檔。
  2. 選擇 Internet Protocols 標(biāo)簽 - DIIOP 子標(biāo)簽。
  3. 在 External HTML directory 字段中,輸入非 Domino HTTP 服務(wù)器的根 HTML 目錄的完整路徑名。
  4. 保存這個(gè) Server 文檔,并重新啟動(dòng) DIIOP。


圖 2. Server 文檔的 DIIOP 部分


使用一個(gè) Web 瀏覽器測(cè)試并查看該文件是否可以訪問:http://127.0.0.1/diiop_ior.txt


圖 3. Web 瀏覽器中的 diiop_ior.txt 文件



回頁首


配置 J2EE 應(yīng)用程序環(huán)境

要使用 taglib,需要兩個(gè) JAR 文件:NCSO.jar 或 Notes.jar(請(qǐng)參閱側(cè)欄)和 domtag.jar。

  1. 在 Windows Explorer 中,打開 [Notes installation path]\Data\domino\java。找到并將 domtags.jar 和 NCSO.jar 拷貝到 Web 應(yīng)用程序的 WEB-INF/lib 目錄中。

    注意:如果您有多個(gè) Web 應(yīng)用程序使用 taglib,請(qǐng)將這些文件拷貝到應(yīng)用服務(wù)器的共享庫目錄中。


    圖 4. WebSphere Studio Application Developer 的 J2EE 視圖

  2. 在 [Notes installation path]\Data\domino\java 目錄中,找到并將 domtags.tld 拷貝到項(xiàng)目的 WEB-INF 目錄中。這個(gè)文件就是標(biāo)簽庫描述符(即 TLD 擴(kuò)展)。它說明這些標(biāo)簽是相關(guān)于底層的 Java 代碼的,因此應(yīng)用服務(wù)器可以理解這些標(biāo)簽。
  3. 接下來,找到并打開 Web 應(yīng)用程序的 web.xml 文件。添加下面的 taglib 引用,并保存所做的修改。

    
    <taglib id="domtags">
    		<taglib-uri>domtags.tld</taglib-uri>
    		<taglib-location>/WEB-INF/domtags.tld</taglib-location>
    	</taglib>
    

下面是一個(gè) web.xml 文件的例子:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="WebApp">
	<display-name>ArticleWeb</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
	<taglib id="domtags">
		<taglib-uri>domtags.tld</taglib-uri>
		<taglib-location>/WEB-INF/domtags.tld</taglib-location>
	</taglib>
</web-app>

Domino 提供了兩個(gè) JAR 文件,用于編程訪問 Domino 對(duì)象。這兩個(gè)文件是 Notes.jar 和 NCSO.jar。Notes.jar 用來訪問 本地的 Domino 服務(wù)器(此時(shí) Lotus Domino 和 Java 程序運(yùn)行在相同的服務(wù)器上)。NCSO.jar 包含了用來訪問遠(yuǎn)程服務(wù)器的其他 CORBA/IIOP 代碼。

在決定使用哪個(gè) JAR 文件時(shí),請(qǐng)考慮以下因素:

  • 運(yùn)行的 Java 程序和 Lotus Domino 的相對(duì)關(guān)系如何?如果它們運(yùn)行在相同的機(jī)器上,那么使用 Notes.jar 可以獲得更好的性能。
  • 您關(guān)心可擴(kuò)展性嗎?即使現(xiàn)在您是在相同的機(jī)器上運(yùn)行 Java 程序(單獨(dú)的 Java 程序和非 J2EE 的程序)和 Lotus Domino,將來您可能會(huì)發(fā)現(xiàn)需要將其擴(kuò)展到專用的服務(wù)器上。在這種情況中,請(qǐng)使用 NCSO.jar ,這樣可以獲得更好的適應(yīng)能力。
  • Java 程序要在一個(gè)應(yīng)用服務(wù)器上運(yùn)行嗎?在 WebSphere 的情況中,即使它與 Lotus Domino 在相同的機(jī)器上,也需要使用 NCSO.jar。

設(shè)置默認(rèn)的參數(shù)

taglib 有很多上下文參數(shù)(Context Parameter),您可以在 web.xml 文件中進(jìn)行設(shè)置。我們高度推薦您盡可能利用這些應(yīng)用程序范圍的參數(shù),這樣可以提高程序的可移植能力,并且簡(jiǎn)化將來的維護(hù)工作。

在我們的例子中,我們?cè)O(shè)置了主機(jī)名(127.0.0.1)和數(shù)據(jù)庫(articleSample.nsf)作為上下文參數(shù),它們分別是 lotus.domino.default.host 和 lotus.domino.default.dbname。

要這樣設(shè)置,請(qǐng)打開 web.xml,然后添加以下行并保存。


	<context-param id="dominohost">
		<param-name>lotus.domino.default.host</param-name>
		<param-value>127.0.0.1</param-value>
	</context-param>
	<context-param id="dominodbname">
		<param-name>lotus.domino.default.dbname</param-name>
		<param-value>articlesample.nsf</param-value>
	</context-param>



回頁首


使用 domtags

在接下來的部分中,我們將使用在上一篇文章中使用的 Car 數(shù)據(jù)庫。我們將構(gòu)建 4 個(gè) JSP,它們分別實(shí)現(xiàn)以下功能:

  • 顯示一個(gè)文檔。
  • 顯示一個(gè) Domino 視圖的內(nèi)容。
  • 啟用 Domino 視圖搜索。
  • 允許用戶創(chuàng)建并編輯文檔。

在開始之前,您必須在所有使用 taglib 的 JSP 中都包括這個(gè) taglib 的聲明。它告訴應(yīng)用服務(wù)器每個(gè)以單詞 domino 開始的標(biāo)簽都是對(duì)domtags 標(biāo)簽庫描述符中一個(gè)項(xiàng)的引用。例如, <domino:db>。(盡管您可以使用不同的前綴,但是我們高度建議使用 domino 作為前綴。)

<%@ taglib uri="domtags.tld" prefix="domino" %>

顯示文檔

我們首先創(chuàng)建一個(gè)簡(jiǎn)單的 JSP 來顯示一個(gè) Notes 文檔的內(nèi)容。它利用一個(gè)單獨(dú)的查詢字符串 uid,其值為所請(qǐng)求文檔的惟一 ID。在 JSP 編輯器中,創(chuàng)建一個(gè)新的 JSP disptagcar.jsp。首先輸入前面提到的 taglib 聲明。包括一個(gè)包含 lotus.domino.* 的 import 行是一個(gè)好主意,因?yàn)檫@樣可以允許您直接訪問 Domino 對(duì)象。后面我們會(huì)使用很多這種聲明。


<%@ taglib uri="domtags.tld" prefix="domino" %>
<%@page import="lotus.domino.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page 
language="java"
contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"
%>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Vehicle information using Domino Tag Library</title>
</head>
<body>
<h1>Vehicle information using Domino Tag Library for <%= (String) request.getParameter("unid")%></h1>
<domino:document>
<table border="1" width="100%" cellspacing="0" cellpadding="0">
	<tr bgcolor="#ccff00">
		<th>Make</th>
		<th>Model</th>
		<th>Body Type</th>
		<th>Engine</th>
		<th>Year</th>
		<th>Specifications</th>
	</tr>
	<tr>
		<td>
			<domino:item name="make"/>
		</td>
		<td>
			<domino:item name="model"/>
		</td>
		<td>
			<domino:item name="bodytype"/>
		</td>
		<td>
			<domino:item name="enginetype"/>
		</td>
		<td>
			<domino:item name="year"/>
		</td>
		<td>
			<domino:item name="specifications" format="<LI>"/>
		</td>
	</tr>
</table>
</domino:document>
</body>
</html>

<domino:document> 標(biāo)簽可以顯示 Notes 文檔的內(nèi)容。使用這個(gè)標(biāo)簽,您的代碼可以訪問一個(gè)特定文檔的所有項(xiàng)目和屬性。在某些情況中,您可能希望為文檔標(biāo)簽中的 dbserver、dbname 和 unid 屬性傳遞值。注意在我們的例子中不會(huì)這樣做。原因是由于必需的信息早已在其他地方指定了。服務(wù)器的主機(jī)名和數(shù)據(jù)庫的文件名早已在 Web 部署描述符(web.xml)中定義了。UNID 是在查詢字符串參數(shù) unid 中隱式指定的。

如果由于某些原因,您不想在 URL 中暴露這個(gè) UNID,那么就必須在 unid 屬性中明確地說明文檔標(biāo)簽。


<%
String unid = [[code that obtains the document unid]];
%>

<domino:document unid=’<%= unid %>’>

<domino:item> 標(biāo)簽顯示了在 name 屬性中指定的項(xiàng)目的內(nèi)容。例如,<domino:item name="make"/> 顯示了保存在 make 項(xiàng)中的值。引用 specifications 字段的最后一個(gè)標(biāo)簽具有一個(gè) format 屬性。這個(gè)屬性告訴標(biāo)簽庫如何顯示 JSP 中的值。為這個(gè)屬性提供的值稱為關(guān)鍵字(keyword)。在一個(gè) format 屬性中,可以使用多個(gè)關(guān)鍵字。

回想一下,specifications 字段是一個(gè)多值字段;它可以包含多個(gè)值。<li> 關(guān)鍵字告訴 <domino:item> 標(biāo)簽對(duì) <li> 和 </li> 標(biāo)簽中的內(nèi)容自動(dòng)進(jìn)行換行。

顯示視圖的內(nèi)容

Domino 視圖可以通過 <domino:view> 標(biāo)簽進(jìn)行訪問。例如,在我們的 car 的例子中,有一個(gè)簡(jiǎn)單的視圖 Cars\By VIN,它有兩列:vin 和 make。這個(gè)視圖還有一個(gè)別名 vins,這就是我們?cè)谝晥D標(biāo)簽中要引用的內(nèi)容。


圖 5. Notes 客戶機(jī)顯示 VINs 視圖

下面是用來將 VINs 視圖顯示為 HTML 文件的 JSP 代碼。


<%@ taglib uri="domtags.tld" prefix="domino" %>
<%@page import="lotus.domino.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page 
language="java"
contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"
%>
<%
String count = "30";
if(request.getParameter("count")!=null);
	count = (String)request.getParameter("count");
%>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Car List using Domino Tag Library</title>
</head>
<body>
<h1>Car List using Domino Tag Library</h1>
<domino:db>
	<table border="1">
		<tr bgcolor="#ffcccc">
			<th>
				VIN
			</th>
			<th>
				Make
			</th>
			<th>
				Model
			</th>
		</tr>
		<domino:view viewname="vins" max="<%= count %>">
			<domino:viewloop>
				<tr>
					<td>
						<domino:formlink href="disptagcar.jsp" >
							<domino:viewitem name="vin" />
						</domino:formlink>
					</td>		
					<td>
							<domino:viewitem name="make" />
					</td>
					<td>
						<domino:item name="model" /> 	
					</td>	
				</tr>
			</domino:viewloop>
		</domino:view>
	</table>
</domino:db>
</body>
</html>


圖 6. JSP 顯示 VINs 視圖的內(nèi)容

查看視圖的 JSP

下面讓我們考查一下上面這個(gè) JSP。在下一節(jié)我們將使用這個(gè) JSP 來構(gòu)建一個(gè)搜索頁面。

  • 數(shù)據(jù)庫
    <domino:db> 標(biāo)簽為應(yīng)用程序提供了數(shù)據(jù)庫的內(nèi)容。因?yàn)槲覀円呀?jīng)在 web.xml 中定義了一個(gè)默認(rèn)的數(shù)據(jù)庫,因此不需要在這兒再定義了。如果沒有在 web.xml 中定義缺省的數(shù)據(jù)庫,或者希望訪問除了在 web.xml 中定義的數(shù)據(jù)庫之外的其他數(shù)據(jù)庫,就需要在這里通過定義屬性 dbname 提供一些信息,如果數(shù)據(jù)庫位于另外一個(gè)服務(wù)器上,還要定義 dbserver 屬性。
  • View
    將 <domino:view> 標(biāo)簽放在 <domino:db> 標(biāo)簽中,這樣可以提供對(duì)這個(gè)數(shù)據(jù)庫中的指定視圖的訪問權(quán)限。您必須提供視圖名作為 viewname 屬性中的一個(gè)屬性。您可以使用該視圖的別名。max 屬性控制了每個(gè)頁面中顯示的項(xiàng)的個(gè)數(shù)。
  • Viewloop
    這個(gè)標(biāo)簽提供了交互訪問視圖中的每一項(xiàng)的能力。它循環(huán)遍歷視圖,并提供對(duì)其內(nèi)容的訪問能力。在這個(gè)例子中,我們只是使用稍后介紹的 viewitem 標(biāo)簽簡(jiǎn)單地打印視圖的內(nèi)容。
  • Formlink
    <domino:formlink> 標(biāo)簽動(dòng)態(tài)地構(gòu)建 <a href> 到指定 JSP 的鏈接。結(jié)果頁面應(yīng)該包括一些格式的標(biāo)簽庫代碼,它們可以顯示文檔的內(nèi)容。在我們的例子中,將使用在最后一節(jié)中構(gòu)建的 JSP(disptagcar.jsp)。
  • Viewitem
    <domino:viewitem> 標(biāo)簽提供了對(duì)視圖項(xiàng)的直接訪問能力。name 屬性會(huì)引用實(shí)體中的一個(gè)列名。name 的值是大小寫敏感的,必須與列標(biāo)題完全匹配。

    <domino:viewitem name="vin" />
    <domino:viewitem name="make" />

  • Item
    <domino:item> 標(biāo)簽提供了對(duì)文檔中的一個(gè)字段的訪問能力。name 屬性是指要檢索的字段。

<domino:item> 和 <domino:viewitem> 之間的區(qū)別如下:<domino:item> 必須打開文檔才能檢索值,而 <domino:viewitem> 則使用視圖中顯示的值。只要可能,在 viewloop 的上下文中就應(yīng)該避免使用 item 標(biāo)簽,因?yàn)檫@樣可能會(huì)造成嚴(yán)重的性能問題。



回頁首


視圖搜索

在本節(jié)中,我們將討論如何修改所創(chuàng)建的視圖 JSP,從而讓它可以支持搜索功能。

要正確使用全文搜索功能,必須激活 Domino 數(shù)據(jù)庫的全文索引。要查看一個(gè)數(shù)據(jù)庫是否進(jìn)行了索引,請(qǐng)打開 Database Properties 對(duì)話框,并點(diǎn)擊 Search 選項(xiàng)卡。如果數(shù)據(jù)庫沒有進(jìn)行索引,那么就點(diǎn)擊 Create Index 按鈕。Notes 客戶機(jī)的狀態(tài)條會(huì)告訴您這個(gè)請(qǐng)求是否已經(jīng)排入了隊(duì)列。全文索引通常很快就可以建好。


圖 7. 數(shù)據(jù)庫全文索引屬性選項(xiàng)卡

我們的搜索表單會(huì)包含這三個(gè)字段用于一個(gè)可定制的搜索:查詢,返回結(jié)果的最大個(gè)數(shù),結(jié)果頁面中每頁顯示的個(gè)數(shù)。我們使用上一節(jié)中的視圖 JSP 作為這個(gè) JSP 的基礎(chǔ)。

下面是這個(gè) JSP 代碼中處理搜索功能的部分:


<domino:view viewname="vins" ftsearch=‘<%= query %>‘ max=‘<%= max %>‘>
	<domino:page rows=‘<%= count %>‘>
		<tr><td colspan="3" align="right">Go to page: 
		<domino:pagebar navstyle="NextPrev" />   
		<domino:pagenext>Next></domino:pagenext></td></tr>
		<domino:viewloop>
			<tr>
				<td>
					<domino:formlink href="disptagcar.jsp" >
						<domino:viewitem name="vin" />
					</domino:formlink>
				</td>		
				<td>
					<domino:viewitem name="make" />
				</td>
				<td>
					<domino:item name="model" /> 	
				</td>
			</tr>
		</domino:viewloop>
		<domino:novalues>
			<tr>
				<td>
				The search for <%= query %> found no matches. Use another keyword and try again.
				</td>
			</tr>
		</domino:novalues>
		<tr><td colspan="3" align="right">Go to page: 
		<domino:pagebar navstyle="NextPrev" />   
		<domino:pagenext>Next></domino:pagenext></td></tr>
	</domino:page>
</domino:view>

查看 Search 視圖的 JSP

下面讓我們更詳細(xì)地查看一下 Search 視圖的 JSP。

  • View
    要構(gòu)建一個(gè)搜索視圖,我們只能添加兩個(gè)屬性到 <domino:view> 標(biāo)簽中:ftsearch 和 max。ftsearch 是查詢的字符串,max 是要返回的結(jié)果的最大個(gè)數(shù)。
  • Page
    這個(gè)標(biāo)簽為顯示視圖內(nèi)容和搜索結(jié)果提供了分頁控制。它的行屬性限制了一個(gè)頁面中的項(xiàng)數(shù)。這個(gè)標(biāo)簽為提供導(dǎo)航特性的標(biāo)簽提供了內(nèi)容。
  • Pagebar
    在 page 標(biāo)簽的上下文中,<domino:pagebar> 可以自動(dòng)生成到搜索結(jié)構(gòu)的頁面的鏈接。這些到當(dāng)前頁面的鏈接是粗體的,而且是不能點(diǎn)擊的。
  • Pagenext
    這個(gè)標(biāo)簽自動(dòng)生成了到下一個(gè)頁面的鏈接。這個(gè)標(biāo)簽的主體就是該鏈接的文本標(biāo)簽。在這種情況中,我們使用 Next >。您可以將這個(gè)標(biāo)簽與 pagebar 一起使用,從而創(chuàng)建一個(gè)類似于圖 8 所示的頁面導(dǎo)航系統(tǒng)。
    圖 8. 導(dǎo)航條

  • Novalues
    這個(gè)標(biāo)簽的主題是在搜索不返回任何結(jié)果時(shí)所顯示的文本。在我們的例子中,會(huì)顯示消息“The search for [query] found no matches. Use another keyword and try again.”



回頁首


表單

在這最后一節(jié)中,我們會(huì)創(chuàng)建一個(gè) JSP 表單,用戶可以使用這個(gè)表單來創(chuàng)建并修改 Notes 文檔。出于簡(jiǎn)單性的考慮,我們的示例數(shù)據(jù)庫允許匿名作者訪問。在真實(shí)生活中的應(yīng)用程序中,安全性實(shí)在是要關(guān)注的一個(gè)問題,更明智的方法是使用一個(gè)集中的用戶注冊(cè)(例如 LDAP),并采用單點(diǎn)登錄(SSO)功能。將 WebSphere 設(shè)置為一個(gè)可信的容器,為 Lotus Domino 處理授權(quán)和認(rèn)證的功能。有關(guān) WebSphere 和 Lotus Domino 的 SSO 的更多信息,請(qǐng)參閱 WebSphere Application Server InfoCenter。

我們的表單提供了以下特性:

  • 允許用戶創(chuàng)建文檔。顯示一條消息說明用戶正在創(chuàng)建一個(gè)新文檔。
  • 允許用戶編輯現(xiàn)有的文檔。顯示一條消息說明用戶正在修改一個(gè)現(xiàn)有的文檔。
  • 對(duì)輸入信息進(jìn)行有效性驗(yàn)證。如果有效性驗(yàn)證失敗,就顯示定制的錯(cuò)誤消息。
  • 當(dāng)用戶成功提交表單時(shí),將用戶重定向到一個(gè)感謝頁面上。

這個(gè) Form JSP 的詳細(xì)代碼,請(qǐng)參閱“Form JSP 代碼”。

form 標(biāo)簽

<domino:form> 標(biāo)簽提供了對(duì)指定文檔的編輯訪問能力。它可以支持很多用來支持高級(jí)操作主機(jī)的屬性。在我們的例子中,使用了更通用的一些屬性。下面讓我們仔細(xì)查看一下:

  • Name
    這是表單對(duì)象的名字。其值會(huì)被用作 HTML 表單名。該值在每個(gè) JSP 中都是惟一的。
  • Schema
    這個(gè)值對(duì)應(yīng)于 Domino 表單的名字,這個(gè)文檔應(yīng)該使用這個(gè)名字進(jìn)行保存。對(duì)這個(gè)表單會(huì)執(zhí)行 Domino 表單的保存前處理(QuerySave)操作。設(shè)置這個(gè)值還會(huì)隱式地將其放入該文檔的 form 字段中。
  • Editmode
    這個(gè)屬性接受 3 個(gè)值:display、edit 和 delete。雖然您可以為這個(gè)屬性設(shè)置固定的值,但是可能最有用的方式是,根據(jù)代碼中的邏輯、以編程的方式給這個(gè)屬性賦值。
  • Validhref
    這個(gè)值是您希望在對(duì)表單進(jìn)行有效性驗(yàn)證并保存之后將用戶重定向到的頁面。
  • Clientvalidate
    將這個(gè)值設(shè)置為 true 會(huì)導(dǎo)致對(duì)表單根據(jù) validation 標(biāo)簽對(duì)用戶輸入進(jìn)行有效性驗(yàn)證。反之,將該值設(shè)置為 false 會(huì)導(dǎo)致該表單忽略所有的 validation 標(biāo)簽。
  • User
    指定正在訪問 Domino 數(shù)據(jù)的用戶名。當(dāng)使用 J2EE 容器進(jìn)行認(rèn)證時(shí),請(qǐng)將該值設(shè)置為 *webuser。有關(guān) taglib 安全性的詳細(xì)信息,請(qǐng)參閱 Domino Designer Help。
  • Unid
    如果在 JSP 查詢字符串中有一個(gè) unid 參數(shù),那么 form 標(biāo)簽就會(huì)使用這個(gè) unid 來打開一個(gè)文檔。您也可以在 unid 屬性中傳遞這個(gè) unid。
  • Input 標(biāo)簽
    input 標(biāo)簽創(chuàng)建 HTML 的輸入字段。name 屬性指明該項(xiàng)要保存的值。默認(rèn)情況下,數(shù)據(jù)類型是 text。在需要其他數(shù)據(jù)類型的情況中,請(qǐng)指定數(shù)據(jù)類型屬性來匹配表單模式中的字段。對(duì)于多值字段來說,要設(shè)置 multivalue="true",并使用 mveditseparator 和 mvdisplayseparator 指定值的分隔符。在我們的例子中,使用了逗號(hào)來分隔要編輯的值,使用分號(hào)來分隔要顯示的值。
  • Validation 標(biāo)簽
    這些標(biāo)簽負(fù)責(zé)在保存表單之前對(duì)輸入信息進(jìn)行有效性驗(yàn)證。Lotus 提供了很多 validation 標(biāo)簽來對(duì)不同的數(shù)據(jù)類型進(jìn)行有效性驗(yàn)證。在我們的例子中,使用更通用的一些標(biāo)簽:validaterequired 和 validatepattern。您可以對(duì)每個(gè)字段使用多個(gè) validation 標(biāo)簽。

現(xiàn)在,讓我們來查看一下使用的 validation 標(biāo)簽:

  • Validatesummary
    這個(gè)標(biāo)簽顯示了檢測(cè)有效性驗(yàn)證失敗的 validation 標(biāo)簽的 message 屬性的值。將這個(gè)標(biāo)簽放到表單的頂部,這樣用戶就可以對(duì)自己是否填寫了表單而一覽無余了。
  • Validaterequired
    這個(gè)標(biāo)簽確定 name 屬性中的字段是否為空。如果非空,那就會(huì)在頁面上顯示這個(gè)標(biāo)簽的主體。將這個(gè)標(biāo)簽放到下一個(gè)字段中,從而精確地說明用戶應(yīng)該重點(diǎn)注意哪些內(nèi)容。
  • Validatepattern
    在基本的 validation 標(biāo)簽不夠用的地方,可以使用這個(gè)標(biāo)簽來創(chuàng)建用戶定制的有效性驗(yàn)證規(guī)則。這個(gè)標(biāo)簽的核心依賴于 Apache 的 regexp 庫對(duì)用戶輸入的值進(jìn)行有效性驗(yàn)證。構(gòu)建一個(gè)說明所期望值格式的正則表達(dá)式,并將其放到 pattern 屬性中。然后這個(gè)標(biāo)簽就會(huì)將用戶輸入的數(shù)據(jù)與正則表達(dá)式進(jìn)行比較。在我們的例子中,validatepattern 標(biāo)簽會(huì)檢查 year 字段是一個(gè)數(shù)字類型,有 4 個(gè)字符長(zhǎng)。

document 標(biāo)簽

<domino:document> 標(biāo)簽提供了對(duì) Notes 文檔本身的訪問能力。id 屬性的存在標(biāo)記著 taglib 分配一個(gè)名稱為 id 標(biāo)簽中的值的 lotus.domino.Document 對(duì)象。在我們的例子中,這個(gè)對(duì)象是 doc。這為程序員提供了完全編程訪問該對(duì)象的屬性和方法的能力;在普通的 Java 代碼中可以對(duì) taglib 進(jìn)一步地?cái)U(kuò)展使用。這個(gè)功能強(qiáng)大的工具在 taglib 中的大部分標(biāo)簽中都可以使用。要學(xué)習(xí)更多有關(guān) Domino Java 類的知識(shí),請(qǐng)參閱 Domino Designer Help。



回頁首


結(jié)束語

在本文中,我們討論了如何使用 Domino JSP 標(biāo)簽庫進(jìn)行編程,從而構(gòu)建功能強(qiáng)大的啟用 Domino 的 J2EE 應(yīng)用程序。通過幾個(gè)例子,我們討論了最常用的標(biāo)簽,并詳細(xì)介紹了它們背后的概念。本系列文章中介紹的內(nèi)容應(yīng)該可以幫助您在現(xiàn)有的 Domino 環(huán)境中采用 J2EE 技術(shù)。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Java 對(duì) Domino Objects 的訪問,第 2 部分
workPlace介紹
知已知彼--Lotus培訓(xùn)>>無憂題庫網(wǎng)
外國沒有OA
理解 IBM Lotus Domino 郵件數(shù)據(jù)庫的限額
ODBC實(shí)現(xiàn)Domino和關(guān)系數(shù)據(jù)庫的互操作
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服