J2EE 0.7.2—用ajax实现像google那样的suggest-search功能(简化版)

首先是需要建一个库。考虑可以这样。建立一个拼音的字段对应汉字的,用户打简拼即可查出汉字

sql 代码
  1. create table `j2ee`.`suggest`(   
  2.     `SUGGEST_ID` int not null auto_increment,   
  3.    `TITLE` varchar(255),   
  4.     primary key (`SUGGEST_ID`)   
  5. );  

当然这里为了方便没有这样做。直接查title这个字段了。

其次是action了

java 代码
  1. package org.perfect.struts.action;   
  2.   
  3. import java.util.List;   
  4. import java.util.Map;   
  5.   
  6. import javax.servlet.http.HttpServletRequest;   
  7. import javax.servlet.http.HttpServletResponse;   
  8.   
  9. import org.apache.struts.action.ActionForm;   
  10. import org.apache.struts.action.ActionForward;   
  11. import org.apache.struts.action.ActionMapping;   
  12. import org.perfect.struts.dao.SearchSuggestDao;   
  13. import org.perfect.struts.form.LoginForm;   
  14. import org.perfect.struts.form.SearchSuggestForm;   
  15.   
  16. public class SearchSuggestAction extends BasicDispatchAction {   
  17.   
  18.     private SearchSuggestDao searchSuggestDao;   
  19.   
  20.     public void setSearchSuggestDao(SearchSuggestDao searchSuggestDao) {   
  21.         this.searchSuggestDao = searchSuggestDao;   
  22.     }   
  23.   
  24.     public ActionForward execute(ActionMapping mapping, ActionForm form,   
  25.             HttpServletRequest request, HttpServletResponse response)   
  26.             throws Exception {   
  27.   
  28.         SearchSuggestForm searchSuggestForm = (SearchSuggestForm) form;   
  29.         String action = request.getParameter("action");   
  30.         action = (action == null || "".equals(action)) ? "init" : action;   
  31.         return this.dispatchMethod(mapping, form, request, response, action);   
  32.   
  33.     }   
  34.   
  35.     public ActionForward init(ActionMapping mapping, ActionForm form,   
  36.             HttpServletRequest request, HttpServletResponse response) {   
  37.   
  38.         SearchSuggestForm searchSuggestForm = (SearchSuggestForm) form;   
  39.   
  40.         return mapping.getInputForward();   
  41.     }   
  42.   //重点在这里
  43.     public ActionForward login(ActionMapping mapping, ActionForm form,   
  44.             HttpServletRequest request, HttpServletResponse response)   
  45.             throws Exception {   
  46.         SearchSuggestForm searchSuggestForm = (SearchSuggestForm) form;   
  47.   //由于我的Ajax水平比较初级,所以中文的问题搞了两个多小时,实现英文版的是很快的。
  48.   //这里必须得这样写。没有为什么。老外才不会管中国人的问题呢。
  49.         response.setCharacterEncoding("GBK");   
  50.         response.setContentType("text/html");   
  51.         response.setHeader("Cache-Control", "no-cache");   
  52.         // new String(s.getBytes("iso8859-1"),"gbk");   
  53.         String user_no = new String(request.getParameter("title").getBytes(   
  54.                 "iso8859-1"), "gbk");   
  55.         System.out.println("user_no=" + user_no);   
  56.         try {   
  57.             if (!"".equals(user_no) && user_no != null) {   
  58.                 // String msg = "";   
  59.                 // select title from suggest where title like '%bc%'
  60.                 //取到后拼个sql.用searchSuggestDao方法取出值放入LIST。
  61.                 //searchSuggestDao直接继承自BaseDaoImp.里面没有代码,就不写了。
  62.                 String sql = "select title from suggest where title like '%"  
  63.                         + user_no + "%'";   
  64.                 System.out.println("sql=" + sql);   
  65.                 List list = searchSuggestDao.findForListBySql(sql);   
  66.                 StringBuffer sb = new StringBuffer();   
  67.                 for (int i = 0; i < list.size(); i++) {   
  68.                     Map map = (Map) list.get(i);   
  69.                     String key = map.get("title").toString();
  70.                     //用"\n"分隔   
  71.                     sb.append(key + "\n");   
  72.                 }   
  73.                 System.out.println(sb.toString());   
  74.                 //传给页面,搞定了。
  75.                 response.getWriter().write(sb.toString());   
  76.             }   
  77.         } catch (Exception e) {   
  78.             e.printStackTrace();   
  79.         }   
  80.   
  81.         return null;   
  82.   
  83.     }   
  84.   
  85. }   

 

最后是jsp了。有一点点儿麻烦

由于我的css同样很烂。所以这里就没考虑太多。为达到效果不则手段了。以后会改的好看一点。

合理一点。

css 代码
  1.   
  2. "http://www.w3.org/1999/xhtml">   
  3.   
  4.   
  5.   
  6.          
  7.        
  8.       "text/css" media="screen">   
  9.             body {   
  10.                 font: 11px arial;   
  11.             }   
  12.             .suggest_link {   
  13.                 background-color: #FFFFFF;   
  14.                 padding: 2px 6px 2px 6px;   
  15.                 width: 573px;   
  16.             }   
  17.             .suggest_link_over {   
  18.                 background-color: #E8F2FE;   
  19.                 padding: 2px 6px 2px 6px;   
  20.                 width: 573px;   
  21.             }   
  22.             #search_suggest {   
  23.                 position: absolute;    
  24.                 background-color: #FFFFFF;    
  25.                 text-align: left;    
  26.                 border: 0px solid #8AABD5;   
  27.                 width: 575px;          
  28.                 cursor: hand;      
  29.             }          
  30.         
  31.     
不知道是我写的js烂,还是javaeye的功能有点小毛病。js发了四五回还是乱七八糟的。
真接发附件了。
xml 代码
  1. <body onclick='hideSearchSuggest()'>  
  2.     <html:form action="/searchSuggestAction" method="POST">  
  3.     <bean:define id='form' name='searchSuggestForm' type='org.perfect.struts.form.SearchSuggestForm'>  
  4.     bean:define>  
  5.        
  6.     <fieldset><table><tr>  
  7.        <td class="free_input"><input type='text' name="title" size='80' onkeyup="testPrototype();" autocomplete="off"/>td>  
  8.        <td><span style='font-size:12'>搜索span>td>  
  9.     tr>table>  
  10.            
  11.     fieldset>  
  12.     <div id="search_suggest">div>  
  13.        
  14.     html:form>  
  15.   body>  
  16. html>  

没啥东西。基本上很简单。不过也搞了三四个小时才搞得定。

全靠谷老哥了。

不晓得没了他我能不能自己独立写点东西。

深入解析CRC16查表法:从原理到Modbus协议实践 本文深入解析了CRC16查表法的核心原理与实现,重点阐述了其“空间换时间”的优化思想。通过对比直接计算法,详细说明了查表法如何通过预计算表格将计算速度提升数十倍,并提供了完整的Modbus CRC16查表法代码生成、解析及实战避坑指南,帮助开发者在嵌入式及工业通信场景中高效实现可靠的数据校验。 阅读详情

相关推荐

CTFshow-pwn入门-前置基础pwn32-pwn34

CTFshow-pwn入门-前置基础pwn32-pwn34

你们de4月天的博客 1131

一分钟学会实现Suggest功能的AJAX样例

Ajax不是什么新鲜的技术,微软98年出的MSDN里面,就介绍了msxml,xmlhttpreuqest的远程读取xml文档的功能。只不过那个时候B/S技术远没有今天这么热,所以ajax被翻出来换了个好听的名字重新炒作。ajax的实现技术有很多。当然我指的是封装方式,这里我是用一种我认为最合理的封装的ajax框架:xajax下面我们就看看如何通过简单的代码完成一个google sugges

纯月部落 2163

GEE开发之ERA5(气温、降水、压力、风速等)数据获取和分析

前言:ERA5主要提供DAILY和MONTHLY两大类别数据,其中主要包括气温、降水、压力、风速等。

等待着冬天的风的博客 3万+

Ajax实现搜索引擎自动补全功能

每当我们遇到一些问题时候,我们会百度一下,你是有过我们的问题还没打完就已经出现的经历? 如下图: 天猫: 京东: 这时候的你是否想到如何实现这个功能? 我们的网页明明没有刷新,可是却出现了数据的交互,也就是Ajax的强大之处。 下面以一个例子来实现。 搜索框和搜索按钮,我们希望在搜索框输入部分书名时,能够实现书名的自动补全功能。每当点击了相应的书名,就把内容输入到搜索框。

苏苏爱自由 1万+

CLion for Mac(m1)配置GCC编译器

条件:电脑已经下载过XCode 一. 下载HomeBrew homebrew是一款macos,linux下的包管理工具,我们需要使用他来下载GCC 下载方法: 1.打开终端(terminal) 2.输入 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ps.有可能会遇到的问题 我当初下载挂了VPN,优快云上还有很多解决问题的方法,可以将错误信

supermario19的博客 7846

【保姆级教程】YOLOv8_Pose多目标+关键点检测:训练自己的数据集

【保姆级教程】YOLOv8_Pose多目标+关键点检测:训练自己的数据集

m0_51579041的博客 1万+

Ajax-实现Google Suggest风格搜索

Ajax-实现Google Suggest风格搜索

Rick Dong 2356

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的危险物品检测系统(深度学习模型+PySide6界面+训练数据集+Python代码)

随着公共安全需求的日益增长,危险物品检测技术在社会安防、交通安检等领域发挥着重要作用。本文介绍了一个基于YOLO系列深度学习框架的危险物品检测系统,集成了YOLOv8、YOLOv7、YOLOv6和YOLOv5四种先进的物体检测算法。系统采用PySide6开发了用户友好的图形界面,提供了完整的训练代码、预训练模型和数据集构建方案。实验结果表明,该系统在危险物品检测任务上实现了高精度和高实时性,为实际应用提供了可靠的技术支持。

YOLO 156

Ajax自动匹配(类似Google Suggest的功能)

Js的文件 // JScript 文件   var queryField;      var divName;     var listName;     var lastVal = "";     var val = "";      var selectListName;     var clearFlag=0;     var hiddenFlag=0;     ...

weixin_33813128的博客 140

GPU 运维实战:H100/H800/B300 换卡与压测

(烧多久、看什么、什么算合格)。文末还给了一个能直接跑的验收判定脚本,三个真实场景的裁决输出都在。

老韩的Linux云计算架构师进阶之路 270

HDOCK 蛋白蛋白对接软件使用;LZerD、pyDock、ClusPro网页在线对接

参考:hdock支持蛋白与蛋白,也支持蛋白与核酸对接计算。

weixin_42357472的博客 1万+

google suggest的实现

自己想实现一个google suggest,以下是参考以为牛人的文章,加了一些自己的东西终于调通啦,以为是源码,希望对大家有所帮助,后台传回的为json的字符串,大体思路为:文本框监听键盘事件、触发事件、提取参数、根据文本框的位置创建div,向后退发起请求,后台发挥数据,前台解析,生成列表,这里面是table,再把table写到创建的div中,接着是监听用户键盘或鼠标事件,给文本框赋值,这里有个问

zhaozhijun1988的专栏 2305

2026年数学建模国赛C题利器:层次分析法与主成分分析在统计建模中的应用

本文系统探讨了层次分析法(AHP)与主成分分析(PCA)在数学建模竞赛,特别是全国大学生数学建模竞赛C题中的联合应用策略。通过理论阐述、方法对比和案例实践,本文揭示了两种方法从“数据降维”到“决策评价”的完整分析链条,提出了“PCA+AHP”协同框架,并通过实际算例验证了该框架在解决复杂评价类问题中的有效性和优越性。研究表明,将PCA的客观降维能力与AHP的主观决策优势有机结合,能够显著提升统计建模的科学性、合理性和解释力,是应对日益复杂的竞赛题目的重要方法论工具。关键词:层次分析法;主成分分析;数学建模。

YOLO 41

AJAX练习(搜索提示)

 html布局: &lt;div id="msg"&gt;为接下来要显示提示信息的区域 &lt;!-- search --&gt; &lt;div&gt; &lt;table width="100%" bgcolor="#B6B684"&gt; &lt;tr align="right"&gt; &lt;td&gt;

长镜头 315

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

使用ElasticSearch服务从MySQL同步数据实现搜索即时提示与全文搜索功能

最近用了几天时间为公司项目集成了全文搜索引擎,项目初步目标是用于搜索框的即时提示。数据需要从MySQL中同步过来,因为数据不小,因此需要考虑初次同步后进行持续的增量同步。这里用到的开源服务就是ElasticSearch。 ElasticSearch ElasticSearch是一个非常好用的开源全文搜索引擎服务,同事推荐之前我并没有了解过,但是看到亚马逊专门提供该服务的实例,没有多...

weixin_33795833的博客 698

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ajax实现搜索提示功能 (关键字自动匹配功能)

 大家都使用过google或者xunlei的搜索,输入关键字后可以出现相关提示,是个不错的功能,今天就在这里给大家把我的拙作给大家分享截图:效果页面:http://www.xqbar.com/demo/ajaxsearch/search.html 代码下载: http://www.xqbar.com/demo/ajaxsearch/search.html 数据库表:CODE:[Copy

icebox126的专栏 7670

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Ajax 模糊查询的简单实现

类似于百度的搜索引擎模糊查询功能,不过百度的模糊查询功能更强大,这里简单实现下. 要实现模糊查询,首先要做的就是把SQL写好。话不多少,直接贴代码了! JSP页面: <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":

我是小坏 1万+

用ajax自己写仿 google search suggest的搜索提示

无聊的时候写的,也没什么精练和安全可言,纯是为了好玩....而且我也没有像GOOGLE那样去考虑JS文件大小等等各种因素,我的目的是能实现能玩就可以了.呵呵.....         主要原理是这样:每次用户输入,就自动发送搜索的关键字到服务器端,如果有相关的已设定好的搜索,则返回到客户端.而客户端再通过DOM进行动态添加内容.而这一切都是异步的...呵呵.这就是AJAX了...我对这些不是太懂

feng5588feng的专栏 684

Ajax搜索自动提示

代码: index.html AJAX实现搜索提示 function getXMLHTTPRequest() { var xRequest = null; if (window.XMLHttpRequest) { xRequest = new XMLHttpRequest(); } else if (window.ActiveXObject) {

汉南最後の読書人 3506

jQuery Ajax实现简单的搜索框提示功能

html: css代码: body{ background-color: #660099; } form{ float: left; background-color: #fff; position: relative; left: 10px; top: 10px; } .search_input

YLXB2的博客 7333

ajax:简单搜索实践篇

两个.aspx文件,一个叫Default.aspx,一个叫AjaxOperations.aspx,第一个用来输入搜索数据,后一个用来对搜索关键字进行处理。js文件夹下面还有一个testJs.js的文件,它就是ajax操作的核心部分。不错,code is cheap。看代码: Code// testJs.js// 此函数等价于document.getElementById /document.al...

weixin_33953384的博客 153

AJAX实现仿Google Suggest效果

修复了一些细节代码(支持持续按键事件) *项目名称:AJAX实现类Google Suggest效果*作者:草履虫(也就是蓝色的ecma)*联系:caolvchong@gmail.com*时间:2007-7-7*工具: DreamWeaver(写ASP),Aptana(写Javascript,HTML和CSS),Emeditor(写这篇文章),Access2003(数据库)*测试平台:Firefox...

weixin_33826609的博客 142

纯Ajax实现Google Suggest功能。

<scripttype="text/javascript"> varxmlHttpRequest; functioncreateXmlHttpRequest(){ if(window.ActiveXObject){ return newActiveXObject("Microsoft.XMLHTTP"); ...

weixin_30919571的博客 170
上一篇: 如何使用javascript在html中获取url参数(转)
下一篇: Java设计模式圣经连载01-简单工厂模式(转载)
cui09
博客等级 码龄20年 2粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值