package com.search; import net.sf.json.JSONArray; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * ${DESCRIPTION} * * @author shenyahui * @create 2018-02-23 16:43 **/ public class SearchServlet extends HttpServlet { static List<String> datas = new ArrayList<String>(); //模拟数据 static { datas.add("ajax"); datas.add("ajax post"); datas.add("becky"); datas.add("bill"); datas.add("james"); datas.add("jerry"); datas.add("hao"); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //转换格式 request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); System.out.println("123"); //首先获得客户端发来的数据keyword String keyword = request.getParameter("keyword"); //获得关键字之后进行处理,得到关联数据 List<String> listData = getDatas(keyword); //返回json格式 //System.out.print(JSONArray.fromObject(listData)); response.getWriter().write(JSONArray.fromObject(listData).toString()); } //获得关联数据 public List<String> getDatas(String keyword){ List<String> list = new ArrayList<String>(); for (String data:datas) { if(data.contains(keyword)){ list.add(data); } } return list; } }
<%-- Created by IntelliJ IDEA. User: htcs Date: 2018/2/23 Time: 11:37 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>搜索框只能查询Demo</title> <style type="text/css"> #mydiv{ position: absolute; left: 50%; top: 50%; margin-left: -200px; margin-top: -50px; } </style> <script type="text/javascript"> //后面要多次使用所以定义为全局变量 var xmlHttp; //获取用户输入内容的管理信息的函数 function getMoreContents() { //首先获取用户的输入 var content = document.getElementById("keyword"); if (content.value == "") { return; } //然后要给服务器发送用户输入的内容,因为我们采用的是ajax异步发送数据, //所以我们要使用一个对象,叫做XmlHttp对象 xmlHttp = createXMLHttp();//获得XMLHttp对象; //要给服务器发送数据,escape是为了保持中文 var url = "search?keyword=" + escape(content.value); //true表示JavaScript脚本会在send()方法后继续执行,而不会等待来自服务器的响应 xmlHttp.open("GET",url,true); //xmlHttp绑定回调方法,这个回调方法会在xmlHttp状态改变的时候被调用 //xmlHttp的状态有0-4.我们只关心4即complete交互完成 xmlHttp.onreadystatechange = callback; xmlHttp.send(null); } //获取XmlHttp对象 function createXMLHttp() { var xmlHttp; if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); } if (window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); if (!xmlHttp) { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } } return xmlHttp; } //回调函数 function callback() { //4代表完成,200代表响应成功 if(xmlHttp.readyState==4){ if (xmlHttp.status==200){ //交互成功,获得响应的数据是文本形式 var result = xmlHttp.responseText; //解析获得数据 var json = eval("("+result+")"); //获取数据后动态显示 展示输入框下面 //setContent(json); alert(json); } } } //设置关联数据展示,参数代表的是服务器传递过来的关联数据 function setContent(contents) { //首先获取关联数据的长度,以此来确定生成多少<tr></tr> var size = contents.length; //设置内容 for(var i=0;i<size;i++){ var nextNode = contents[i];//代表的是json格式数据的第i个元素 var tr = document.createElement("tr"); var td = document.createElement("td"); td.setAttribute("border","0"); td.setAttribute("bgcolor","#FFFAFA"); td.onmouseover=function () { this.className = 'mouseOver'; }; td.onmouseout=function () { this.className = 'mouseOut'; }; td.onclick=function () { //当鼠标点击一个关联数据时,关联数据自动设置为输入框数据 }; //放文本内容,然后层层传递,动态生成数据 var text = document.createTextNode(nextNode); td.appendChild(text); tr.appendChild(td); document.getElementById("content_table_body").appendChild(tr); } } </script> </head> <body> <div id="mydiv"> <%--输入框--%> <input type="text" size="50" id="keyword" onkeyup="getMoreContents()"/> <%--按钮--%> <input type="button" value="百度一下" width="50px"/> <%--展示区域--%> <div id="popDiv"> <table id="content_table" bgcolor="#FFFAFA" border="0" cellspacing="0" cellpadding="0"> <tbody id="content_table_body"> <%--动态查询出来的数据,显示在此--%> </tbody> </table> </div> </div> </body> </html>
xml配置文档呢?