国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

簡單的網頁關鍵詞匹配工具

2019-11-18 11:55:16
字體:
來源:轉載
供稿:網友

  你是否曾經使用大量的具體信息創建網頁,然后希望讀者可以使用一種簡單的方法,根據特定于用戶的要害詞分析和進入相應頁面?本文解釋了如何使用Html表單和jsp技術來正確地實現上述要求。即使你從沒希望得到這種效果,你可能也會發現本文的演示例子和代碼練習十分有用,因為這些例子和代碼涵蓋了如何檢索請求的值,并將這些值與靜態文件中讀到的值進行比較。
  
  工作原理
  HTML表單
  搜索網頁
  代碼練習
  捕捉要害詞
  工作原理
  這個HTML表單已經放置在你想要搜索的網頁里了。該表單給出了一個可選的要害詞列表,這些要害詞是網頁中已知的詞,與你的主題不匹配,但是你相信用戶可能想要搜索這些詞。該表單還為用戶提供了一個輸入域,假如用戶沒有在那個列表中找到想要的要害詞,就可以在這個輸入域中輸入他想要的要害字。
  
  當用戶敲回車鍵或點擊Go按鈕時,就會調用JSP逐行分析HTML頁面,尋找用戶指定的要害詞,并返回該HTML頁面中包含要害詞的所有行。返回的結果根據匹配的要害詞來組織。
  
  HTML表單
  下圖左面顯示了這個HTML表單,右邊給出了創建該表單的HTML代碼。這個表單是可以用的,你可以選則或輸入要害詞并點擊Go按鈕。
  
  當你點擊Go按鈕之后,一個JSP頁面將被調用來分析javaServer Pages Technology索引頁面的一份拷貝,并返回一個文章列表,這些文章的某個或某些條目包含了指定的要害詞。舉例來說,假如你記得曾經讀到一篇Steve寫的文章,那么輸入“Steve”并點擊Go按鈕,就可以查看Steve的文章列表。
  
  注重: 這個過程可能持續幾秒鐘的時間,因為下面描述的這個搜索頁需要讀取很多標題條、腳注和左側導航的HTML代碼。
  
  表單外觀
  實現該表單的HTML
  
  Select keyWords from the list below:
  JakartaCachedRowSetPRopertiesApache
  
  and/or enter a search phrase:
  
  <form action="findwords.jsp" method="get">
  Select keywords from the list below:
  <input type="hidden" name="col" value="searchreports">
  <select size="4" name="qp" multiple>
  <option value="Jakarta">Jakarta
  <option value="CachedRowSet">CachedRowSet
  <option value="properties">Properties
  <option value="Apache">Apache
  </select>
  
  and/or enter a search phrase:</font>
  <input type="text" name="qt" size="20" maxlength="50" value="">
  <input type="image" src="http://www.QQread.com/java/go.gif" border="0">
  </form>
  
  搜索頁面
  這個JSP網頁的代碼需要搜索頁 使用段落標簽包含起來。例如,網頁入口的代碼應該像下面給出的這樣。注重,為了使HTML頁面更加易讀,因而在下面的入口代碼中沒有使用回車:
  
  <P>
  <a href="/pathname/">Maintaining State for HTML Form Buttons</a> by Matthias Laux <br>Here's the scoop on using JavaServer Pages custom tags to maintain button state in your HTML forms. <i>(October 2002)</i>
  </p>
  
  相反,下面這個例子在“Laux”和“Here’s”之間使用了回車,以確保源文件更加易于理解。
  
  <P>
  <a href="/pathname/">Maintaining State for HTML Form Buttons</a> by Matthias Laux
  <br>Here's the scoop on using JavaServer Pages custom tags to maintain button state in your HTML forms. <i>(October 2002)</i>
  </p>
  
  為什么沒有返回格式?
  假如你像上面的第一個例子那樣不考慮漏掉用于格式化的回車符,那么JSP代碼將讀取整行數據,分析其中是否有要害詞出現,假如有匹配存在,則在結果頁面中返回整行。在第二個例子中,JSP代碼讀取“Laux”之上的行,然后進行分析,假如有匹配就在結果頁面中返回該行。這段代碼接下來讀取以“Here’s”開始的下一行。
  
  簡而言之,由于整個頁面被打亂了,因此并沒有完全返回整個頁面。在上面的例子中,假如搜索條件是“Maintaining”,結果只會返回標題和作者而沒有簡介;假如搜索條件是“maintain”,結果將返回簡介而不是標題和作者。
  
  代碼分析
  本節對findwords.jsp的每一部分分別進行介紹,findwords.jsp是當用戶點擊Go按鈕時調用的JSP代碼。
  
  注重: 源代碼在一個txt文件中,因此你可以將其當作文本來瀏覽。以“jsp”為后綴意味著web服務器需要將該文件編譯成一個servlet并且執行它。
  
  JSP看上去就像一個HTML網頁,只不過其中通過JSP標簽嵌入了servlet代碼片段。有許多不同類型的JSP標簽,在本小節只涉及了其中的一部分。
  
  指令
  JSP指令用<%@ and %>指令標簽來包含,當JSP網頁被轉換為servlet時由JSP引擎處理。 本例中的頁面指令告訴JSP引擎腳本語言是Java(language="java"),并且需要包含指定的Java包。
  
  聲明
  JSP聲明由<%! and %>聲明標簽包含,答應你設置變量以便稍后在程序中使用。你也可以在使用的時候聲明變量。只是要記住無論變量在哪里聲明,其作用域都是整個JSP頁面。本例中的聲明聲明了一個隨機訪問文件和一些用于讀取搜索頁的字符串變量。
  
  設置文件和變量
  代碼的下一行初始化變量,并且打開一個到searchpage.html的連接,searchpage.html是將要搜索的網頁。在這個例子中,該文件是JavaServer Pages Technology索引頁面的一份拷貝。這個初始化過程獲得要搜索的文件的長度,得到該文件的第一行,并且將一些變量設為0或空值。
  
  val變量是一個標志,用于指示一個匹配是否是其類別中的第一個,并且由此判定是必須重新建立一個匹配序列,還是在已有的序列上繼續搜索。
  results變量也是一個標志變量,用于指示是否找到匹配。假如沒有任何匹配,則在返回頁上向用戶返回一個消息。
  File inputFile = new File("/pathname/searchpage.html");
  in = new RandomaccessFile(inputFile, "r");
  
  long length = in.length();
  
  s = in.readLine();
  
  int val = 0;
  
  int results = 0;
  String[] qpValues = null;
  String qtValue = null;
  
  結果頁和記錄條目
  接下來的代碼用于打印結果網頁的標題,檢查從可選序列得到的選擇值(getParameterValues("qp"))和從表單上的輸入域得到的值(getParameter("qt"))。找到的所有值都會被檢索,并用于創建在結果頁頂部顯示的項目列表索引。
  
  out.println("<h4>Keyword Search Results</h4>");
  out.println("<ul>");
  
  for(int j = 0; j < qpValues.length; j++) {
  
  out.println("<li><a href=#" + qpValues[j] + ">"
  + qpValues[j] + "</a>");
  }
  }
  
  if(request.getParameter("qt") != null) {
  qtValue=request.getParameter("qt");
  if(qtValue.length() > 0) {
  out.println("<li><a href=#" + qtValue + ">"
  qtValue + "</a>");
  }
  }
  
  out.println("</ul>");
  
  大小寫和從文件中讀取
  檢索到的任何選項值都使用它在表單中輸入的原始大小寫,從而與文件中讀到的行的字符進行匹配,并且還被全部轉換為小寫來進行比較。這是為了捕捉該條目中的所有可能性。例如,“Properties”使用大寫的“P”與searchpage.html 中的每行進行一次比較,使用小寫“p”也做一次。這樣同時滿足了“properties”在一個句子的開頭和在中間的情況。從輸入域得到的值則只使用輸入的精確值,或者全大寫、或者全小寫,或者是輸入狀態。
  
  每行開頭和結尾的空格自動去掉,并且每行都檢查是否以“<A HREF”開始。searchpage.html文件的每一行都是用左對齊,但是當一行以空格或tab開頭時,去掉空格的操作可以解決可能錯誤地輸入到要害詞前面的空格或者制表鍵的問題。文件中我們感愛好的所有行都是以“<A HREF” 開頭的,而這在另一個文件中理所當然是必然會改變的,例如對以“<li”開頭的行感愛好,或其他的一些什么。
  
  選項值:尋找匹配
  這段代碼的主要部分將選項值和從searchpage.html讀到的行進行比較以便尋找匹配。當尋找到匹配時,將該行在其正確的類別下作為一個項目列表項返回到結果頁面。
  
  if(request.getParameterValues("qp") != null) {
  qpValues = request.getParameterValues("qp");
  
  for (int i = 0; i < qpValues.length; i++) {
  
  while(s!=null) {
  if(s != null && s.length() > 0 ) {
  if(s.trim().startsWith("<A HREF")
  && qpValues[i].length() > 0) {
  
  String lower = qpValues[i].toLowerCase();
  
  if(s.indexOf(qpValues[i]) > 0
   s.indexOf(lower) > 0) {
  results=1;
  
  if(val == 0) {
  out.println("<a name=" + qpValues[i] + "></a>");
  out.println("<h4>");
  out.println(qpValues[i]);
  out.println("</h4>");
  out.println("<ul>");
  val=1;
  }
  
  out.println(s);
  out.println("<p>");
  }<

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安阳市| 保定市| 诏安县| 荃湾区| 阜城县| 石首市| 中阳县| 沾益县| 淮安市| 渝中区| 卢龙县| 错那县| 科技| 鹿泉市| 邯郸市| 塔城市| 遂宁市| 招远市| 德兴市| 文安县| 千阳县| 平果县| 阿巴嘎旗| 巩留县| 社会| 会宁县| 潞城市| 鹰潭市| 左云县| 台中县| 三江| 泾川县| 县级市| 桦甸市| 大同县| 洛阳市| 潼南县| 江安县| 寿光市| 富裕县| 博野县|