Ajax实现Google Suggest风格搜索
来源:互联网 发布:送男友什么礼物 知乎 编辑:程序博客网 时间:2024/06/04 18:43
运行效果图如图所示
整个项目目录图如图所示
1. query.html中的代码如下
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><link rel="stylesheet" type="text/css" href="style/css.css" /><script type="text/javascript" src="script/jquery-1.7.2.js"></script><script type="text/javascript"> $(function(){ $("#query").focus(function(){ //1.获取当前文本框中输入的内容 var content = $.trim(this.value); //2.判断文本框内容是否为默认值 if(content == this.defaultValue) { //3.如果是默认值则删除 this.value = ""; } }).blur(function(){ //1.获取当前文本框中输入的内容 var content = $.trim(this.value); //2.判断文本框内容是否为空字符串 if(content == "") { //3.如果是恢复为默认值 this.value = this.defaultValue; } }).change(function(){ //1.获取查询关键字 var keyWords = $.trim(this.value); //slideUp()函数:将jQuery对象在页面上的显示慢慢收起 $("#resultDiv").slideUp(500,function(){ //2.发送Ajax请求:将查询关键字以请求参数的形式发送给Servlet //url:发送请求地址。 //data:待发送 Key/value 参数。 //callback:发送成功时回调函数。 //type:返回内容格式,xml, html, script, json, text, _default。 $.post("QueryServlet",{"queryStr":keyWords},function(data){ //3.获取响应数据 //在填充数据之前将结果div清空 $("#resultDiv").empty(); //4.将响应数据以良好样式显示在文本框下面 if(data.length == 0) { $("#resultDiv").append("<div>没有相关的查询结果</div>"); }else{ //此时返回的data是一个JSON数组 for(var i = 0; i < data.length; i++) { //解析结果数据:alert(data[i].companyId+" "+data[i].companyName); //将解析得到的结果数据填充到#resultDiv中 $("#resultDiv").append("<div>"+data[i].companyName+"</div>"); } } //将结果DIV显示出来 $("#resultDiv").slideDown(500); },"json"); }); }); });</script></head><body> <h1 style="margin-left: 570px;">Google Suggest</h1> <input type="text" id="query" value="在这里输入查询关键字" /> <div id="resultDiv"></div></body></html>
2. bean类Company代码如下
package com.atguigu.suggest.bean;public class Company { private Integer companyId; private String companyName; public Company() { } public Company(Integer companyId, String companyName) { super(); this.companyId = companyId; this.companyName = companyName; } public Integer getCompanyId() { return companyId; } public void setCompanyId(Integer companyId) { this.companyId = companyId; } public String getCompanyName() { return companyName; } public void setCompanyName(String companyName) { this.companyName = companyName; } @Override public String toString() { return "Company [companyId=" + companyId + ", companyName=" + companyName + "]"; }}
3. CompanyDao类,初始化数据及返回查询结果集
public class CompanyDao { public static final List<Company> COMPANY = new ArrayList<Company>(); //数据准备 static { COMPANY.add(new Company(1, "中国银行尚硅谷分行")); COMPANY.add(new Company(2, "尚硅谷国际教育集团北京分部")); COMPANY.add(new Company(3, "硅谷世纪餐饮集团")); COMPANY.add(new Company(4, "尚硅谷教育科技研究中心")); COMPANY.add(new Company(5, "天津恒硅矿业")); COMPANY.add(new Company(6, "幽幽谷娱乐中心")); COMPANY.add(new Company(7, "俊尚美食城")); COMPANY.add(new Company(8, "中国硅谷影视城")); COMPANY.add(new Company(9, "尚硅谷图书中心")); COMPANY.add(new Company(10, "尚硅谷营销总部")); COMPANY.add(new Company(11, "Ajax学习指南")); COMPANY.add(new Company(12, "在Web项目中使用Ajax")); COMPANY.add(new Company(13, "Ajax异步交互")); COMPANY.add(new Company(14, "透析Ajax对象")); COMPANY.add(new Company(15, "详解Ajax异步交互技术")); COMPANY.add(new Company(16, "jQuery技术内幕")); COMPANY.add(new Company(17, "深度理解jQuery框架结构")); COMPANY.add(new Company(18, "jQuery中的JavaScript精华")); } public static List<Company> queryList(String queryStr){ queryStr = queryStr.toLowerCase(); List<Company> companyList = new ArrayList<Company>(); for (Company company : COMPANY) { String companyName = company.getCompanyName().toLowerCase(); boolean contains = companyName.contains(queryStr); if(contains){ companyList.add(company); } } return companyList; }}
4. QueryServlet类获取请求参数,并用GSON工具类将查询的结果集转换为JSON字符串传递到前台
public class QueryServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.从请求参数中获取查询关键字 String queryStr = request.getParameter("queryStr"); System.out.println("queryStr="+queryStr); //2.根据查询关键字获取查询结果 List<Company> queryList = CompanyDao.queryList(queryStr); //3.将查询结果转换为JSON字符串 Gson gson = new Gson(); String json = gson.toJson(queryList); System.out.println(json); //4.将JSON字符串作为响应数据返回 response.setContentType("text/json;charset=UTF-8"); PrintWriter writer = response.getWriter(); writer.write(json); }}
5. 在web.xml文件中,配置QueryServlet的请求路径
<servlet> <servlet-name>QueryServlet</servlet-name> <servlet-class>com.atguigu.suggest.QueryServlet</servlet-class></servlet><servlet-mapping> <servlet-name>QueryServlet</servlet-name> <url-pattern>/QueryServlet</url-pattern></servlet-mapping>
0 0
- Ajax实现Google Suggest风格搜索
- Ajax-实现Google Suggest风格搜索
- ajax+js 实现 google suggest
- 用ajax + webwork 实现google suggest 效果
- AJAX实现类Google Suggest效果
- 纯Ajax实现Google Suggest功能。
- 使用Ajax模仿Google suggest的搜索提示(Java+JSP+JS实现)
- 使用AJAX技术实现google suggest学习笔记
- ajax+js+dom+json+php+mysql 实现google suggest效果
- ajax+js+dom+json+php+mysql 实现google suggest效果
- ajax+js+dom+json+php+mysql 实现google suggest效果
- google suggest的实现
- 实现google suggest效果
- AJAX案例之google suggest
- Google Suggest(Ajax+JSON+Servlet)
- 用ajax自己写仿 google search suggest的搜索提示
- 用户控件实现Google Suggest
- AJAX案例研究之google suggest
- Kali系统中安装NVIDIA显卡驱动
- python实战二:使用CSV数据绘制带数据标志的折线图(matplotlib)
- 以前一直ok的程序今天不ok了---查找配置库修改记录快速定位bug
- leetcode009:Palindrome Number
- eclipse中R文件丢失问题
- Ajax实现Google Suggest风格搜索
- virtualBox上的ubuntu客户机全屏问题
- java自学笔记3(一维数组)
- NSMutableArray可拓展的数组
- Android代码风格(Android属性前缀m的意思)
- 引用到底在我们的背后做了什么?
- SQL Server 2005的读写分离策略
- android5.0编译报错'JNIFromJavaP' object has no attribute 'fully_qualified_class'
- Spring集成Quartz定时任务框架介绍和Cron表达式详解