Javaweb-案例练习-2-给搜索框添加提示

凯哥java 凯哥java

给搜索框添加搜索提示功能

这篇来利用Ajax做一个给搜索框添加搜索提示的功能,这个我们在百度首页,搜索框随便输入一个字符,就能弹出联想自动,可供用户选择,这篇要做的就是这么一个场景。

需求

就是这么一个功能。

文件准备

需求中这个index.jsp中的搜索在我们原来项目中没有这个代码,所以这里先把这个素材拷贝进来。(具体素材在我这个项目github上有)

本篇主要是index.jsp和menu_search.jsp这两个文件。在index.jsp中静态包含了menu_search.jsp,代码中%@include file="menu_search.jsp" % ,这行代码就是我们前面学习JSP指令学习过的静态包含,是在JSP转换Servlet时引入的文件。

给搜索框添加信息提示框

在mene_search.jsp中,给搜索框先整出一个div框来,宽度和搜索框的宽度一样,为了显示明显,先来给边框添加红色。

在menu_serch.jsp文件底部,添加一个div,代码如下。

浏览器刷新,看看效果。

创建一个空的servlet文件

先创建一个SearchBookAJAXServlet.java,对应的url映射是/searchBookAJAXServlet

这部分代码后面来写。

Dao层代码

在BookDao接口文件中,最底部添加这个代码

public List searchBookByName(String name) throws SQLException;

在BookDaoImpl.java添加对应的具体方法实现代码。

public List searchBookByName(String name) throws SQLException {

QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());

return qr.query("select name from book where name like ?", new ColumnListHandler(), "%" +name+"%");

}

Service层代码

接着写BookService.java中代码,末尾新增以下代码。

public List searchBookByName(String name);

然后具体实现代码,在BookServiceImpl.java中末尾添加以下代码。

public List searchBookByName(String name) {

try {

return bd.searchBookByName(name);

} catch (SQLException e) {

e.printStackTrace();

}

return null;

}

Servlet文件具体代码

下面是SearchBookAJAXServlet.java的完整代码。

部署测试

部署到tomcat,重启tomcat服务。浏览器打开servlet地址,看看效果

https://localhost:8080/BookManagement/searchBookAJAXServlet?name=j

这里我数据库看看是不是只有一个j开头的,这样我数据库book表再添加一个javascript看看。

这样就是说明代码没有问题了。

AJAX查询结果显示在div框中

下面我们来编辑menu_search.jsp文件,这里把文章开头写死div高度给删除,新加了AJAX这一套代码,代码修改如下。

刷新浏览器,看看/index.jsp效果,搜索框输入一个J看看,div框提示的效果。

到这里,还有问题没有解决,那就是点击div中提示,不能点击,我们需要点击之后,自动填充到search框。

Div中name鼠标悬停变颜色

就是在div提示的name,鼠标悬停,会自动变颜色,例如变成灰色,离开name区域变成原来的白色,来看看这个怎么实现。

上面改动地方在changeBackground_over(div) 和changeBackground_out(div)

刷新浏览器,看看效果。

鼠标悬停变成灰色,鼠标离开变成白色,对比看看上面改动的两个这个动作的function就明白了。

解决点击搜索按钮,填充到搜索框

上面为止,我们做到了颜色变化,但是没有点击效果,而且 搜索框不输入的时候,默认div显示的是数据库中全量数据的图书name,这肯定不行。下面代码调整之后,可以点击填充到搜索框,和解决这个搜索框不输入任何字符,提示全量name这个问题。

关于这个代码最后div中,left和top的位置问题,会随着不同浏览器和不同分辨率,这个红色的div框位置有点偏移,这个问题,就不管了。

项目全部代码请看github:

这篇代码的commit message为 “搜索框提示并点击填充完成 ”

java ajax搜索框提示,Javaweb-案例练习-2-给搜索框添加提示相关推荐

  1. java ajax文字搜素,JAVA-WEB AJAX 搜索条自动提示

    jsp pageEncoding="UTF-8"%> 站内搜索 .xiala{ width: 100px; background-color: #fcfcfc; border ...

  2. 实现搜索框记录搜索历史_三个案例告诉你:“搜索框”该如何设计?

    不管是在2C还是2B产品,"搜索"是产品中最常见且必不可少的功能模块之一.对于用户来说,在众多功能模块和信息层级中如何快速定位到目标,通过输入已知的关键词进行搜索是最便捷的方式,没 ...

  3. ajax仿百度搜索效果,利用autocomplete.js实现仿百度搜索效果(ajax动态获取后端[C#]数据)...

    实现功能描述: 1.实现搜索框的智能提示 2.第二次浏览器缓存结果 3.实现仿百度搜索 * { margin: 0px; padding: 0px; } #wrapper { height: 100% ...

  4. JAVA—— AJAX

    文章目录 1.Ajax快速入门 1.1.AJAX介绍 1.2.原生JS实现AJAX 1.3.原生JS实现AJAX详解 1.4.JQuery的GET方式实现AJAX 1.5.JQuery的POST方式实 ...

  5. 19.2、Javaweb案例_Servlet代码抽取优化分页数据redis缓存优化分页数据展示

    优化Servlet 目的 减少Servlet的数量,现在是一个功能一个Servlet,将其优化为一个模块一个Servlet,相当于在数据库中一张表对应一个Servlet,在Servlet中提供不同的方 ...

  6. java web 应用技术与案例教程_《Java Web应用开发技术与案例教程》怎么样_目录_pdf在线阅读 - 课课家教育...

    出版说明 前言 第1章 java Web应用开发技术概述 1.1 Java Web应用开发技术简介 1.1.1 Java Web应用 1.1.2 Java Web应用开发技术 1.2 Java Web ...

  7. Ajax入门(附学习案例)

    什么是Ajax Ajax(Asynchronous JavaScript and XML) 异步JavaScript和XML Ajax实际上是下面这几种技术的融合: XHTML和CSS的基于标准的表示 ...

  8. java swing 案例详解_《Java Swing图形界面开发与案例详解》PDF_IT教程网

    资源名称:<Java Swing图形界面开发与案例详解>PDF 内容简介: <Java Swing图形界面开发与案例详解>全书共20章,其中第1-2章主要介绍有关Swing的基 ...

  9. java中的基本小程序_12个用Java编写基础小程序经典案例(收藏篇)

    原标题:12个用Java编写基础小程序&经典案例(收藏篇) 如果是刚接触或者刚学习java,练习一些基础的算法还是必须的,可以提升思维和语法的使用. 1.输出两个int数中的最大值 impor ...

最新文章

  1. “技术崇拜”与“技术恐惧”都会阻碍 AI 创新,“技术节制”才是正道
  2. 被问概率达99%的面试问题
  3. 修改Tomcat端口号
  4. mysql-表关系模型,一对一,一对多,多对多
  5. loj#2541. 「PKUWC2018」猎人杀
  6. python初始环境安装
  7. 随想录(cmake编译)
  8. java中如何用2位数表示日期_java – 如何解析2位数的年份日期?
  9. Python实验-字典攻击
  10. 如何区分网线是几类的_怎么看网线是几类?
  11. Spark 关于提交任务报错 WARN scheduler.TaskSchedulerImpl: Initial job has not accepted any resources;
  12. Windows7旗舰版SP1_32位2018.10(纯净版)
  13. C++类内静态成员的内存释放问题
  14. Win32控制台应用程序如何调用另一个.exe
  15. arcgis 10.8 for win10安装教程
  16. 国产化服务器安装Mysql数据库
  17. H5绘制Android机器人
  18. 拇指锁屏APP:时代新起锁屏之秀
  19. 2022-2028年中国船舶工业行业投资潜力研究及发展趋势预测报告
  20. Linux 启动时,出现give root password for maintenance处理方法

热门文章

  1. c++深拷贝和浅拷贝的区别?
  2. QT的QMultiSampleAntiAliasing类的使用
  3. QML基础类型之geoshape
  4. C++虚函数实现多态的机制
  5. java 最长回文串_通俗易懂的最长回文串图解、说明及Java代码(中心扩散法和Manacher算法)...
  6. 「Tensorflow」TensorFlow基本使用步骤——以线性回归为练习
  7. 09_ClickHouse,ReplacingMergeTree,案例,根据排序键去重,使用版本参数的去重(学习笔记)
  8. MyCat安装,数据导入,以及安装过程中的各种参数配置
  9. 通过exp命令对Oracle数据库进行备份操作(提供两种情况的备份:备份本地,备份远程的数据库)
  10. SQL Server pivot行列转换案例分析