search.jsp
上传用户:guhaomin
上传日期:2007-06-10
资源大小:23203k
文件大小:8k
源码类别:

电子政务应用

开发平台:

Java

  1. <%
  2. /**
  3.  * $RCSfile: search.jsp,v $
  4.  * $Revision: 1.4 $
  5.  * $Date: 2000/12/27 22:39:45 $
  6.  */
  7. %>
  8. <%@ page 
  9. import="java.util.*,
  10. java.text.*,
  11. java.net.*,
  12.             com.coolservlets.forum.*,
  13.             com.coolservlets.forum.util.*"
  14. errorPage="/mainctrl/bbs/error"
  15. %>
  16. <%! // Global variables
  17. final static SimpleDateFormat formatter = new SimpleDateFormat( "yyyy.MM.dd h:mm a" );
  18. final static long ONE_DAY = 1000 * 60 * 60 * 24;
  19. final static long ONE_WEEK = ONE_DAY * 7;
  20. final static int DEFAULT_RANGE = 15;
  21. // method to print one table line for a message.
  22. private String displayMessage(int forumID, ForumMessage message, long now) {
  23. StringBuffer buf = new StringBuffer();
  24. if (message != null) {
  25. java.util.Date messageDate = message.getCreationDate();
  26. long messageDateMS = messageDate.getTime(); 
  27. String subject = message.getSubject();
  28. int messageID = message.getID();
  29. String username = null;
  30. if (!message.isAnonymous()) {
  31. try {
  32. User user = message.getUser();
  33. username = user.getName();
  34. if (username == null)
  35.     username = user.getUsername();
  36. } catch (Exception ignore) {
  37. username = "<i>某人</i>";
  38. }
  39. }
  40. if (username == null)
  41.     username = "<i>匿名者</i>";
  42. int threadID = message.getForumThread().getID();
  43. if( subject == null || subject.equals("") ) {
  44. subject = "[没有主题]";
  45. }
  46. String dateText = "";
  47. dateText = formatter.format(messageDate);
  48. // subject cell
  49. buf.append("<td width='97%'><font face='verdana' >");
  50. buf.append("<a href='/mainctrl/bbs/viewMessage?message=").append(messageID).append("&thread=");
  51. buf.append(threadID).append("&forum=").append(forumID);
  52. buf.append("&parent=-1").append("'>");
  53. buf.append("<font class=strong>").append(subject).append("</font>");
  54. buf.append("</a>");
  55. buf.append("</font></td>").append("n");
  56. // username cell
  57. buf.append("<td width='1%' nowrap align='center'>");
  58. buf.append("<font color='#666666' face='verdana' >");
  59. buf.append(username);
  60. buf.append("</font></td>");
  61. // date cell
  62. if( messageDateMS >= (now-ONE_DAY) ) {
  63. buf.append("<td width='1%' nowrap class='dateTimeListToday'>");
  64. } else { 
  65. buf.append("<td width='1%' nowrap class='dateTimeList'>");
  66. }
  67. buf.append("<font face='verdana' >");
  68. buf.append( dateText );
  69. buf.append("</font></font>");
  70. buf.append("</td>").append("n");
  71. }
  72. return buf.toString();
  73.     }
  74. %>
  75. <% ////////////////////////
  76. // Authorization check
  77. // check for the existence of an authorization token
  78. Authorization authToken = SkinUtils.getUserAuthorization(request,response);
  79. // if the token was null, they're not authorized. Since this skin will
  80. // allow guests to view forums, we'll set a "guest" authentication
  81. // token
  82. if( authToken == null ) {
  83. authToken = AuthorizationFactory.getAnonymousAuthorization();
  84. }
  85. /////////////////
  86. // Get parameters
  87. int forumID      = ParamUtils.getIntParameter(request,"forum",-1);
  88. boolean doSearch = ParamUtils.getBooleanParameter(request,"doSearch");
  89. String queryText = ParamUtils.getParameter(request,"q");
  90. int range        = ParamUtils.getIntParameter(request,"range",DEFAULT_RANGE);
  91. int start        = ParamUtils.getIntParameter(request,"start",0);
  92. ///////////////////
  93. // perform a search
  94. ForumFactory forumFactory = ForumFactory.getInstance(authToken);
  95. Forum forum = forumFactory.getForum(forumID);
  96. int nextStart = start;
  97. Query query = null;
  98. Iterator searchResults = null;
  99. if (doSearch && queryText != null) {
  100. if( forum != null ) {
  101. query = forum.createQuery();
  102. }
  103. query.setQueryString(queryText);
  104. // use the +1 to see if there are more results...
  105. searchResults = query.results(start, range +1);
  106. }
  107. %>
  108. <% /////////////////
  109. // header include
  110. String title = "查找";
  111. %>
  112. <%@ include file="/skins/bay/header.jsp" %>
  113. <%-- begin breadcrumbs --%>
  114. <table bgcolor="#666666" cellpadding=0 cellspacing=0 border=0 width="100%"> 
  115. <tr>
  116.     <td colspan="3">
  117.         <font class="strongw"><a href="/mainctrl/home/index"><font color="#FFFFFF">首页</font></a>&gt;&gt;<a href="/mainctrl/communication/main"><font color="#FFFFFF">通信</font></a>&gt;&gt;<a href="/mainctrl/bbs/index" ><font color="#FFFFFF">论坛主页</font></a>
  118.         <% if (forumID > 0) { %>
  119.         &gt;&gt;
  120.         <a href="/mainctrl/bbs/viewForum?forum=<%= forumID %>"><font color="#FFFFFF"><%= forum.getName() %></font></a>
  121.         <% } %>
  122.         &gt;&gt;
  123.         <% if (doSearch) { %>
  124.             查找结果
  125.         <% } else { %>
  126.             查找
  127.         <% } %>
  128.         </font>
  129.     </td>
  130. </tr>
  131. </table>
  132. <%-- end breadcrubms --%>
  133. <center>
  134. <table bgcolor="#fafafa" class=title cellspacing=1 cellpadding=2 border=0 width="600">
  135. <tr bgcolor="#fafafa">
  136.     <td align=left>&nbsp;&nbsp;由于论坛的自动检索功能是定时进行的,所以当你在发新贴之后,在系统的查找功能中可能并不能立即查找到此贴,需要在一段时间之后,也就是系统对新贴进行检索后,才能查找到此贴。
  137.     </td>
  138. </tr>
  139. <tr bgcolor="#fafafa">
  140.     <td align=center>
  141.         <form action="/mainctrl/bbs/search" name="searchForm">
  142.         <input type="hidden" name="doSearch" value="true">
  143.         <input type="hidden" name="forum" value="<%= forumID %>">
  144.             <input type="text" name="q" value="<%= doSearch && queryText != null ? queryText : "" %>" size="40" maxlength="100" class="text">&nbsp;
  145.             <input type="submit" value="查找" class="text">
  146.         </form>
  147.     </td>
  148. </tr>
  149. </table>
  150. </center>
  151. <script language="JavaScript" type="text/javascript">
  152. <!--
  153. document.searchForm.q.focus();
  154. //-->
  155. </script>
  156. <% if (doSearch) { %>
  157. <p>
  158. <br>
  159. <p>
  160. <% if( query == null || searchResults == null || !searchResults.hasNext() ) { %>
  161. <center>没有结果,请再试一遍!</center>
  162. <% } else { %>
  163. <table bgcolor="#999999" cellpadding=0 cellspacing=0 border=0 width="600">
  164. <td>
  165. <table bgcolor="#999999" cellpadding=3 cellspacing=1 border=0 width="600">
  166. <tr bgcolor="#dddddd">
  167. <td align="center" width="98%"><font face="tahoma,arial,helvetica">主题</font></td>
  168. <td align="center" width="1%" nowrap><font face="tahoma,arial,helvetica">作者</font></td>
  169. <td align="center" width="1%" nowrap><font face="tahoma,arial,helvetica">日期</font></td>
  170. </tr>
  171. <%
  172. ForumFactory fact = ForumFactory.getInstance(authToken);
  173. long  now = (new java.util.Date()).getTime();
  174. String     bgColor = null;
  175. int     nrRows = 0;
  176. int    nrResults = 0;
  177. while (nrResults++ < range && searchResults.hasNext()) { 
  178. ForumMessage message = (ForumMessage)searchResults.next();
  179. int          msgForumID = message.getForumThread().getForum().getID();
  180. bgColor = (++nrRows % 2 == 0 ) ? "#ffffff": "#eeeeee";
  181. %>  
  182. <tr bgcolor="<%= bgColor %>">
  183. <%= displayMessage(msgForumID, message, now) %>
  184. </tr>
  185. <%
  186. }
  187. %>
  188. </table>
  189. </td>
  190. </table>
  191. <% } %>
  192. <table cellpadding=0 cellspacing=0 border=0 width="600">
  193. <td width="1%" nowrap>
  194. <font  face="verdana,arial">
  195. <br>
  196. <% String url = "/mainctrl/bbs/search?doSearch=true&forum="+forumID+"&q="+(queryText == null ? "" : URLEncoder.encode(queryText))+"&range="+range;
  197. if( (start-range) >= 0 ) { %>
  198. <a href="<%= url %>&start=<%= (start-range) %>"><font class="strong">&lt;&lt;</font>向前</a>
  199. <% } %>
  200. </font>
  201. </td>
  202. <td width="98%" nowrap>
  203. </td>
  204. <td width="1%" nowrap>
  205. <font face="verdana,arial">
  206. <br>
  207. <% if (searchResults != null && searchResults.hasNext()) { %>
  208. <a href="<%= url %>&start=<%= (nextStart+range) %>">向后<font class="strong">&gt;&gt;</font></a>
  209. <% } %>
  210. </font>
  211. </td>
  212. </table>
  213. <% } %>
  214. <%@ include file="/skins/bay/footer.jsp" %>