Sun Java System Web Server 7.0 管理员指南

自定义搜索页面

Sun Java System Web Server 包含一个提供基本搜索查询和搜索结果页面的默认搜索应用程序。可以直接使用这些 Web 页面,也可以对其进行自定义以满足特定需要。这种自定义可以像使用不同徽标重新设置 Web 页面一样简单,也可以像更改搜索结果的显示顺序一样复杂。

默认搜索应用程序提供了样例 JSP,这些样例 JSP 说明了如何使用搜索标记库来建立自定义的搜索界面。您可以参见位于 /bin/https/webapps/search 的默认搜索应用程序,该样例应用程序说明了如何使用可自定义的搜索标记。

默认搜索界面由四个主要的部分组成:标题、页脚、查询表单和结果。

只需更改标记的属性值即可轻松地自定义这些基本元素。可以使用标记库实现更为详细的自定义。

搜索界面组件

搜索界面包含以下组件:

标题

标题包括徽标、标题和简短说明。

页脚

页脚包含版权信息。

表单

查询表单包含一组代表搜索集合的复选框、一个查询输入框以及“提交”和“帮助”按钮。

结果

默认情况下每页列出 10 条记录。对于每条记录,将显示以下信息:标题、段落、大小、创建日期和 URL。段落是页面的一个小片段,其中包含高亮显示的匹配文字。

自定义搜索查询页面

查询表单包含一个搜索集合的复选框列表、一个查询输入框和“提交”按钮。表单是使用 <s1ws:form> 标记以及 具有默认值的 <collElem><queryBox><submitButton> 标记创建的:

<s1ws:form>
    <s1ws:collElem>
    <s1ws:queryBox> <s1ws:submitButton>
</s1ws:form>

可以将查询表单放在页面的任意位置:中间、边栏等等。也可以以不同格式显示查询表单,例如使用一个横栏,其中集合选择框、查询字符串输入框以及“提交”按钮被水平排列;或显示为一个块,其中集合显示为复选框,查询输入框和“提交”按钮位于下方。

以下示例显示了如何使用 <searchForm> 标记组来创建不同格式的查询表单。

水平栏

下面的样例代码将创建一个表单,其中包含一个所有集合的选择框、一个查询输入框和一个“提交”按钮,它们排列在一行中。

<s1ws:form>
    <table cellspacing="0" cellpadding="3" border="0">
    <tr class="navBar">
        <td class="navBar"><s1ws:collElem type=”select”></td>
        <td class="navBar">
            <s1ws:querybox size="30">
            <s1ws:submitButton class="navBar" style="padding: 0px; margin: 0px; width: 50px">
        </td>
    </tr>
    </table>
</s1ws:form>

边栏块

您可以创建一个表单块,其中表单元素排列在一个边栏中,表单块的标题为“搜索”,使用的格式与边栏中其他项的格式相同。

表单元素位于边栏中的自定义查询页面

在下面的样例代码中,表单主体包含三个排成一列的复选框,列出了可用的搜索集合。查询输入框和“提交”按钮位于下方:

<s1ws:searchForm>
    <table>
<!--... other sidebar items ... -->
    <tr class="Title"><td>Search</td></tr>
    <tr class="Body">
        <td>
        <table cellspacing="0" cellpadding="3" border="0">
        <tr class="formBlock">
            <td class="formBlock"> <s1ws:collElem type="checkbox" cols="1" values="1,0,1,0" /> </td>
        </tr>
        <tr class="formBlock">
            <td class="formBlock"> <s1ws:querybox size="15" maxlength="50"> </td>
        </tr>
        <tr class="formBlock">
            <td class="formBlock"> <s1ws:submitButton class="navBar" style="padding: 0px; margin: 0px; width: 50px"> </td>
        </tr>
        </table>
        </td>
    </tr>
    </table>
</s1ws:searchForm>

自定义搜索结果页面

搜索结果的生成过程如下:

只需更改标记的属性值即可自定义搜索结果页面。

以下样例代码以标题栏开始,随后显示一些指定的记录,最后显示导航栏。标题栏包含搜索中使用的查询字符串以及返回的全部记录的范围(例如 1–10)。对于每条记录,记录部分显示了带有指向文件的链接的标题、最多三个具有被高亮显示的关键字的段落、URL、创建日期以及文档大小。

在该部分的末尾,导航栏提供了指向上一页和下一页的链接,以及指向当前页之前和之后八个其他页面的直接链接。

<s1ws:formAction />
<s1ws:formSubmission success="true" >
    <s1ws:search scope="page" />
    <!--search results-->
    (...html omitted...)
        <s1ws:resultStat formId="test" type="total" /></b> Results Found, Sorted by Relevance</span></td><td>
        <span class="body"><a href="/search/search.jsp?">Sort by Date</a></span></td>
        <td align="right"><span class="body">
        <s1ws:resultNav formId="test" type="previous" caption="<img border=0 src=\\"images/arrow-left.gif\\" alt=\\"Previous\\">" />
        &nbsp;<s1ws:resultStat formId="test" type="range" />
        &nbsp;<s1ws:resultNav formId="test" type="next" caption="<img border=0 src=\\"images/arrow-right.gif\\" alt=\\"Next\\">" />
        &nbsp; <!img alt="Next" src="images/arrow-right.gif" border="0" WIDTH="13" HEIGHT="9">
            (...html omitted...)
        <table border=0>
        <s1ws:resultIteration formId="test" start="1" results="15">
            <tr class=body>
                <td valign=top>
                <s1ws:item property=’number’ />.&nbsp;&nbsp;
                </td>
                <td>
                    <b><a href="<s1ws:item property=’url’ />"><s1ws:item property=’title’ /></a></b>
                    <br>
                    <s1ws:item property=’passages’ />
                    <font color="#999999" size="-2">
                    <s1ws:item property=’url’ /> -
                    <s1ws:item property=’date’ /> -
                    <s1ws:item property=’size’ /> KB
                    </font><br><br>
                </td>
            </tr>
        </s1ws:resultIteration>
        </table>
        (...html omitted...)
        <s1ws:resultNav formId="test" type="previous" />
        <s1ws:resultNav formId="test" type="full" offset="8" />
        <s1ws:resultNav formId="test" type="next" />
    (...html omitted...)
</s1ws:formSubmission>

自定义的搜索结果页面

通过操作标记和修改 HTML 可以轻松地自定义基本搜索结果界面。例如,可以将导航栏复制并放到搜索结果前面。用户也可以选择显示或不显示搜索记录的任何属性。

除了与表单一起使用外,<search><resultIterate> 和相关标记还可用于列出特定的主题。以下样例代码列出了某个站点上有关 Java Web 服务的头十篇文章。

<s1ws:search collection="Articles" query="Java Web Services" />
<table cellspacing="0" cellpadding="3" border="0">
  <tr class="Title"><td>Java Web Services</td></tr>
</table>
<table cellspacing="0" cellpadding="3" border="0">
<s1ws:resultIteration>
<tr>
<td><a href="<s1ws:item property=’URL’ />"> <s1ws:item property=’Title’/></a></td>
</tr>
</s1ws:resultIteration>
</table>

在单独的页面中自定义表单和结果

如果需要将表单页面和结果页面分开,必须使用 <form> 标记组创建表单页面,使用 <formAction> 标记组创建结果页面。

需要在结果页面中添加指向表单页面的链接以使页面衔接顺畅。

标记惯例

请注意以下标记惯例:

标记规范

Sun Java System Web Server 包括一组 JSP 标记,这些标记可用于自定义搜索界面中的搜索查询和搜索结果页面。

有关可用来自定义搜索页面的 JSP 标记的完整列表,请参阅《Sun Java System Web Server 7.0 Developer's Guide to Web Applications》。