类似于百度的搜索引擎模糊查询功能,不过百度的模糊查询功能更强大,这里简单实现下.

要实现模糊查询,首先要做的就是把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" onkeyup="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;
}
}

代码写好后,就可以在文本框输入字母后就可以模糊查询出数据了!

Ajax 模糊查询的简单实现的更多相关文章

  1. GridLookUpEdit多列模糊查询最简单方式 z

    GridLookUpEdit的知识库是RepositoryItemGridLookUpEdit,切确的说GridLookUpEdit只是RepositoryItemGridLookUpEdit的一个壳 ...

  2. 突然发现用PHP做多条件模糊查询很简单

    原文:http://blog.csdn.net/suleil1/article/details/49471099 所使用的方法:$sqlArr=array();array_push();implode ...

  3. AJAX基本操作 + 登录 + 删除 + 模糊查询

    AJAX练习显示页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:// ...

  4. jquery select 列表 ajax 动态获取数据 模糊查询 分页

    最近需要一个这样的select 在网上找的多是数据一次性获取到再通过前端模糊查询匹配的 这样在数据量比较大的情况下不适合 ,所以参考http://www.jq22.com/jquery-info145 ...

  5. mongo中的模糊查询

    以下是一个mongo查询的综合应用,即介绍一个生产中实际应用的模糊查询,当然其实也很简单,主要用到mongo中的模糊查询和$or查询,以及并的关系,下面是一个mongo中的一条记录 { "_ ...

  6. Ajax实现在textbox中输入内容,动态从数据库中模糊查询显示到下拉框中

    功能:在textbox中输入内容,动态从数据库模糊查询显示到下拉框中,以供选择 1.建立一aspx页面,html代码 <HTML> <HEAD> <title>We ...

  7. Springmvc+Myabtis+Ajax实现异步分页emp+dept(全部查询及模糊查询)

    1.在项目中创建如下目录 2.创建实体类Dept package com.entity; import java.io.Serializable; /** * 部门表 * @author Admini ...

  8. Android简易实战教程--第三十九话《简单的模糊查询》

    今天这一篇小案例模拟模糊查询,即输入一个字符,显示手机对应的所有存在该字符的路径. 布局: <?xml version="1.0" encoding="utf-8& ...

  9. ajax实现模糊查询完成列表信息显示

    之前遗留一个老问题:列表模糊查询,用的直接是form提交,点击搜索按扭后,页面刷新,搜索框中关键词就没了,这鸡肋的体验,我发誓一定要搞定它 但是鉴于自己写代码是纯粹玩票,我写代码没有目标,只有在当前工 ...

随机推荐

  1. Android 深入理解Loader机制 让APP轻装上阵

    本文简书同步发布,谢谢关注. http://blog.csdn.net/sk719887916/article/details/51540610 Android开发者都经历过APP UI开发不当 会造 ...

  2. 18 UI美化layer-list

    layer-list 用于叠加两张图片 或者设置 RatingBar(评分) 进度条 相框等 在工程文件中的res/drawable/新建一个layer-list(叠加两张图片) 如下 : <? ...

  3. 【一天一道LeetCode】#206. Reverse Linked List

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Reverse ...

  4. 【一天一道LeetCode】#125. Valid Palindrome

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...

  5. Android学习笔记之AppWidget

    什么是AppWidget?AppWidget就是我们平常在桌面上见到的那种一个个的小窗口,利用这个小窗口可以给用户提供一些方便快捷的操作. 今天的目标就是怎么创建一个简单的AppWidget. 首先我 ...

  6. 【自制插件】将MMD4Mecanim转换的MMD模型导入maya

    这个已经废弃了_(:зゝ∠)_,另外做了升级版: http://www.cnblogs.com/marisa/p/5174150.html ============================== ...

  7. 《java入门第一季》之根据小案例体会泛型

    泛型在哪些地方使用呢? * 看API,如果类,接口,抽象类后面跟的有<E>就说要使用泛型.一般来说就是在集合中使用. 下面根据案例,加深体会泛型的作用. 案例一: import java. ...

  8. 调用awk的三种方式

    调用awk的三种方式 调用awk有三种方式,一种为Shell命令行方式,另外两种是将awk程序写入脚本文件,然后执行该脚本文件.三种方式的命令格式归纳如下: 一.在Shell命令行输入命令调用awk, ...

  9. 11.2、Libgdx的音频之音乐

    (官网:www.libgdx.cn) 对于任何超过5秒的声音来说,最好将其放到磁盘中而不是内存中.Libgdx提供了一个Music接口来帮我们实现. 以下载入Music实例: Music music ...

  10. Linux IPC实践(6) --System V消息队列(3)

    消息队列综合案例 消息队列实现回射客户/服务器   server进程接收时, 指定msgtyp为0, 从队首不断接收消息 server进程发送时, 将mtype指定为接收到的client进程的pid ...