Ajax 模糊查詢的簡單實現

類似于百度的搜索引擎模糊查詢功能,不過百度的模糊查詢功能更強大,這里簡單實現下.

要實現模糊查詢,首先要做的就是把SQL寫好。話不多少,直接貼代碼了!

JSP頁面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'search.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page">  <script type="text/javascript" src="prototype.js"></script><style type="text/css">body{font:11px arial;}#suggest{position:absolute;background-color:#FFFFFF;text-align: :left;border: 1px solid #000000;display: none;}</style><script type="text/javascript">function searchSuggest(){var url="Search";var txtSearch=$F("txtSearch");var pars='txtSearch='+txtSearch;var searchAjax=new Ajax.Request(url,{method:'get',  //get方式提交parameters:pars, //提交參數onComplete:processRequest});}function processRequest(req){var sobj=$("suggest");sobj.innerHTML="";var str=req.responseText.split("-");var suggest="";if(str.length>0&&str[0].length>0){for(i=0;i<str.length;i++){suggest+="<div>"+str[i]+"</div>";}sobj.innerHTML=suggest;$("suggest").style.display="block";}else{$("suggest").style.display="none";}}</script></head><body><h3>Ajax自動搜索提示</h3><div style="width:500px"><form action="" id="formSearch"><input type="text" id="txtSearch" name="txtSearch"  οnkeyup="searchSuggest()"autocomplete="off"/><input type="submit" id="cmdSerach" name="cmdSearch" value="搜索"/><br/><div id="suggest" style="width:200px"></div></form></div></body>
</html>


Sevlet類:

package servlet.ajax;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class Search extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");String req=request.getParameter("txtSearch");PrintWriter out = response.getWriter();SearchDao sd=new SearchDao();sd.getText(req);StringBuffer sb=sd.getText(req);out.print(sb.toString());out.flush();}
}


?

進行連接數據庫,模糊查詢的JAVA類:

package servlet.ajax;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;public class SearchDao {public StringBuffer  getText(String req){//首先定義下連接數據的URL、用戶名、密碼String url="jdbc:oracle:thin:@127.0.0.1:1521:orcl";String user="scott";String password="yulei123";String sql="select ename from emp a where a.ename like ?";if(req.trim().length()==0){sql=sql+" and 1<>1";}List strList=new ArrayList();try {Class.forName("oracle.jdbc.driver.OracleDriver");Connection con=DriverManager.getConnection(url,user,password);PreparedStatement pre=con.prepareStatement(sql);pre.setString(1,"%"+req.toUpperCase().trim()+"%");ResultSet rs=pre.executeQuery();while(rs.next()){String ename=rs.getString("ename");strList.add(ename);}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}StringBuffer sb=new StringBuffer();int size=strList.size();for(int i=0;i<size;i++){sb.append((String)strList.get(i)+"-");}return sb;}
}


代碼寫好后,就可以在文本框輸入字母后就可以模糊查詢出數據了!

?

轉載于:https://www.cnblogs.com/wuyida/p/6300391.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273887.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273887.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273887.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OpenStack組件

OpenStack的架構及組件&#xff08;Havana&#xff09; 服務項目名描述控制臺Horizon用戶通過該服務與OpenStack的各服務進行交互&#xff0c;如啟動虛機實例、分配IP地址、設置訪問控制等&#xff1b;計算Nova按需分派并管理虛機&#xff1b;網絡Neutron通常是計算服務通過該服…

python 計算數字 k 在 0 到 n 中的出現的次數,k 可能是 0~9 的一個值

3. 統計數字 中文English 計算數字 k 在 0 到 n 中的出現的次數&#xff0c;k 可能是 0~9 的一個值。 Example 樣例 1&#xff1a; 輸入&#xff1a; k 1, n 1 輸出&#xff1a; 1 解釋&#xff1a; 在 [0, 1] 中&#xff0c;我們發現 1 出現了 1 次 (1)。樣例 2&#x…

[轉]Design Pattern Interview Questions - Part 2

Interpeter , Iterator , Mediator , Memento and Observer design patterns.(I) what is Interpreter pattern?(B) Can you explain iterator pattern?(A) Can you explain mediator pattern?(I) Can you explain memento pattern?(B) Can you explain observer pattern?…

python爬蟲面試題

1 :列表生成式和生成器的區別 &#xff1f; 列表生成式直接生成一個列表&#xff0c;所有元素對象被立即創建在內存中&#xff0c;當元素過多時&#xff0c;勢必會占用過多內存&#xff0c; 不可取&#xff0c;要用到生成器&#xff0c;它即時創建一個生成器對象&#xff0c;…

%hd %d %ld %u ......

%d 有符號10進制整數 %ld 長整型 %hd短整型%md,m指定的是輸出字段的寬度&#xff0c;默認左補空格, 如果數據的位數小于m&#xff0c;則左端補以空格&#xff0c;若大于m&#xff0c;則  按實際位數輸出&#xff0c;如&#xff1a;  printf("%4d,%4d",a,b)  若…

我的撲克牌

main.m文件&#xff1a; #import <Foundation/Foundation.h> #import "hearts.h" #import "spade.h" #import "wintersweet.h" #import "diamonds.h" #import "stdio.h" #import "string.h" int main(int a…

在使用selenium,Chrome無界面瀏覽模式與自定義插件加載問題

Chrome啟用無界面瀏覽模式時&#xff0c;自定義插件是沒法加載的&#xff0c;會報以下錯誤&#xff1a; selenium.common.exceptions.WebDriverException: Message: unknown error: failed to wait for extension background page to load: chrome-extension://cdkhikphdegmcl…

一遍學習,一遍進步

做挨踢這塊也快兩年了&#xff0c;還是個小白。懂得技術有限&#xff0c;會的東西不多。知道的東西越多越覺得該知道更多東西。新的知識技術更新越來越快。有點應接不暇。 2013很糊涂的過來了。沒有看幾本書&#xff0c;沒有自我提高&#xff0c;有點渾渾噩噩的感覺。單位的工作…

ubuntu18 安裝redis-manager

參考&#xff1a;https://blog.csdn.net/momomomomm/article/details/83626147

Ios17個常用代碼整理

1.判斷郵箱格式是否正確的代碼 //利用正則表達式驗證 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex "[A-Z0-9a-z._%-][A-Za-z0-9.-]\\.[A-Za-z]{2,4}"; NSPredicate *emailTest [NSPredicate predicateWithFormat:"SELF MATCHES%",…

ubuntu18 激活 pycharm

1、到官網上下載好對應的版本 2、到安裝好的pycharm的bin文件夾下&#xff0c;找到 pycharm.vmoptions 和 pycharm64.vmoptions&#xff0c;在兩個文件后面添加代碼&#xff1a; -javaagent:-javaagent:/home/maxzhang/user/pycharm/bin/JetbrainsCrack-release-enc.jar&#…

jquery背景自動切換特效

查看效果網址&#xff1a;http://keleyi.com/a/bjad/4kwkql05.htm 本特效的jquery版本只支持1.9.0以下。代碼如下&#xff1a; 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">2…

pandas和spark的區別

參考&#xff1a;https://blog.csdn.net/u013613428/article/details/78138857

Android ImageView圖片自適應

網絡上下載下來的圖片自適應&#xff1a;android:adjustViewBounds"true"&#xff08;其詳細解釋在下面&#xff09;<ImageViewandroid:id"id/dynamic_item_image"android:layout_width"wrap_content"android:layout_height"wrap_conten…

Python之IO編程——文件讀寫、StringIO/BytesIO、操作文件和目錄、序列化

BytesIO StringIO操作的只能是str&#xff0c;如果要操作二進制數據&#xff0c;就需要使用BytesIO。BytesIO實現了在內存中讀寫bytes&#xff0c;我們創建一個BytesIO&#xff0c;然后寫入一些bytes&#xff1a; 寫入的不是str&#xff0c;而是經過UTF-8編碼的bytes。 (1).參考…

都江堰很美-佩服古人_Crmhf的一天

地震遺跡&#xff1a;一條背街&#xff0c;損壞嚴重&#xff0c;基本沒什么人。真正的水利工程&#xff0c;值得每個人學習&#xff1a;轉載于:https://www.cnblogs.com/crmhf/p/3823157.html

爬蟲的增量式抓取和數據更新

不管是產生新頁面&#xff0c;還是原本的頁面更新&#xff0c;這種變化都被稱為增量&#xff0c; 而爬取過程則被稱為增量爬取。那如何進行增量式的爬取工作呢&#xff1f;回想一下爬蟲的工作流程&#xff1a; 發送URL請求 ----- 獲得響應 ----- 解析內容 ----- 存儲內容 我們…

Spring Data JPA初使用 *****重要********

Spring Data JPA初使用我們都知道Spring是一個非常優秀的JavaEE整合框架&#xff0c;它盡可能的減少我們開發的工作量和難度。在持久層的業務邏輯方面&#xff0c;Spring開源組織又給我們帶來了同樣優秀的Spring Data JPA。通常我們寫持久層&#xff0c;都是先寫一個接口&#…

flask-筆記

-super() 使用super()保留基模板中定義的原始內容 - link標簽&#xff1a; 用來指定當前文檔和外部資源的關系。它最常見的是用來鏈接樣式表&#xff0c;也用來創建網站圖標(既是網站圖標樣式也包括移動設備和app圖標)。 -csrf: CSRF概念&#xff1a;CSRF跨站點請求偽造(…

MySQL 無法連接

Host localhost is not allowed to connect to this MySQL server 錯誤 解決辦法&#xff1a; C:\Program Files\MySQL\MySQL Server 5.5\my.ini 在[mysqld]下加下面兩行&#xff0c; skip-name-resolve skip-grant-tables 重啟mysql的windows服務&#xff0c;在mysql命令行界面…