Ajax+Servlet 实现智能搜索提示
2018-02-20 00:48
309 查看
设计思路
-> 从搜索框获得输入字符串 -> 利用 $.get(url, args, function(data){...},"json") 方法 -> 将请求地址 url 以及 参数 args 发送给 url 中包含的后台的 Servlet程序 -> Servlet 对 url 中的请求参数与 list 中数据比对 -> 把其中以传入值为开头的数据放入一个新的 List 中,取名 values -> 使用 jackson 中的 ObjectMapper 对象将 values 转为 json 数组返回给前端页面 -> 返回的 json 数组即 data,分别将其中的每个值添加到 li 中即可
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <style type="text/css"> input{ top:300px; height:40px; } #txt_search{ position:absolute; width:600px; left:350px; } #txt_search:hover{ box-shadow: 3px 3px 3px #888888; } #btn_search{ position:absolute; width:100px; right:250px; background: #3366FF; boder-radius:50px; } #btn_search:hover{ background: #6666FF; } ul{ position:absolute; width:600px; height:40px; left:310px; top:323px; } li{ list-style: none; font-size:20px; line-height:40px; border-bottom: 1px solid rgba(0,0,0,0.1); transition:1s; } li a{ display:block; width:100%; } /* 注意不要写成 li:hover 这样是没效果的 */ li :hover{ background:#3366FF; } </style> <script type="text/javascript" src = "${pageContext.request.contextPath}/scipts/jquery-2.1.0.js"></script> <script type="text/javascript"> $(function(){ $(":input[name = 'search' ]").keyup(function(){ /* 每次用户释放按键时,将上次的提示内容清空 */ $( 4000 "#list li").remove(); var $val = $(this).val(); var url = "${pageContext.request.contextPath}/searchservlet?content="+$val; var args = {"time":new Date()}; $.get(url, args, function(data){ /* 响应回来的为 json 对象数组 */ for(var i = 0; i < data.length; i++) $("#list").append("<li><a>"+data[i].content+"</a></li>"); },"json"); }); }) </script> </head> <body> <input type = "search" id = "txt_search" name = "search" placeholder = "请输入搜索文字.."/> <input type = "button" id = "btn_search" value = "百度一下"/> <div> <ul id ="list"> </ul> </div> </body> </html>
SearchServlet.java
package com.anqi.ajax.app.servlets; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.anqi.ajax.app2.beans.SearchItem; import com.fasterxml.jackson.databind.ObjectMapper; @WebServlet("/searchservlet") public class SearchServlet extends HttpServlet { private List<SearchItem> list; private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { list = new ArrayList<>(); list.add(new SearchItem("anqi")); list.add(new SearchItem("ajax")); list.add(new SearchItem("anHua")); list.add(new SearchItem("lichen")); list.add(new SearchItem("baizhantang")); String keyword = request.getParameter("content"); List<SearchItem>values = new ArrayList<>(); for (SearchItem searchItem : list) { if(searchItem.getContent().startsWith(keyword)) values.add(searchItem); } //将 List 转化为了 json 数组 ObjectMapper mapper = new ObjectMapper(); String result = mapper.writeValueAsString(values); // result 为 -> [{"content":"anqi"},{"content":"ajax"},{"content":"anHua"}] // result 为 -> [{"content":"baizhantang"}] //设置响应类型为 json 格式 response.setContentType("text/javascript"); response.getWriter().print(result); } }
显示效果
相关文章推荐
- Servlet+Ajax实现搜索框智能提示
- Ajax+Servlet实现搜索框的智能提示
- Servlet+Ajax实现智能搜索提示框
- ajax+servlet实现百度智能小搜索框———慕课课程
- Servlet+Ajax实现搜索框智能提示
- Ajax+Servlet实现智能搜索框
- Servlet+Ajax实现搜索框智能提示(模拟后台数据)
- Servlet+Ajax实现简易的仿百度搜索框智能提示
- Servlet+Ajax实现百度智能搜索
- 使用ajax+servlet实现搜索框智能提示
- Servlet+Ajax实现智能搜索框智能提示功能
- jquery+jsp+servlet+ajax实现注册功能,ajax校验用户名、验证码等
- 基于jquery+servlet实现Ajax效果
- AjaxPro.NET实现TextBox智能获取服务端数据功能(Asp.net 2.0)(示例代码下载)
- Servlet+ajax实现模糊搜索
- 在html里面用javascript实现ajax请求访问servlet
- AJAX+Servlet实现客户端无刷新请求服务器实践
- jsp+servlet+ajax+oracle数据库-实现简单的登陆、注册、找回密码功能(与Oralce数据库连接)
- jquery+ajax+text文本框实现智能提示完整实例
- AjaxPro.NET实现TextBox智能获取服务端数据功能(Asp.net 2.0)(示例代码下载)