servlet測(cè)試控制臺(tái)無(wú)反應(yīng)????求大神幫忙,
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
? <head>
? ? <base href="<%=basePath%>">
? ? <style type="text/css">
? ? #myDiv{
? ? position:absolute;
? ? left:50%;
? ? top:50%;
? ? margin-left: -220px;
? ? margin-top: -50px;
? ? }
? ? </style>
? ? <script type="text/javascript">
? ? var xmlHttp;
? function getMoreContents(){
? //1.獲取文本框里的關(guān)鍵字
? var content=document.getElementById("keyword");
? if(content.value==""){
? return;
? }
? //當(dāng)輸入的關(guān)鍵字不為空時(shí),將其發(fā)送給服務(wù)器,我們使用ajax異步發(fā)送數(shù)據(jù),
? //需要獲取XmlHttp這個(gè)對(duì)象
? xmlHttp=createXmlHttp();
? //alert(xmlHttp);
? //發(fā)送數(shù)據(jù)給服務(wù)器
? var url="search?keyword="+escape(content.value);
? //和服務(wù)器建立連接
? xmlHttp.open("GET",url,true);
? //接收服務(wù)器給我們的響應(yīng) xmlHttp綁定回調(diào)函數(shù)
? xmlHttp.onreadyStateChange=callback;
? //獲得數(shù)據(jù)之后,就可以動(dòng)態(tài)的展示這些數(shù)據(jù)了,把這些數(shù)據(jù)展示到輸入框的下面
?
?
?
?
? }
?
?
? ??
? ? //獲取XmlHttp這個(gè)對(duì)象
? ? function createXmlHttp(){
? //在大多數(shù)瀏覽器的情況下
? var xmlHttp;
? if(window.XMLHttpRequest){
? xmlHttp=new XMLHttpRequest();
? }
? //考慮瀏覽器兼容性問(wèn)題
? if(window.ActiveXObject){
? xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
? if(!xmlHttp){
? xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
? }
? }
? return xmlHttp;
? ? }
? ?
? ? //回調(diào)函數(shù)? 作用是獲取服務(wù)器響應(yīng)過(guò)來(lái)的關(guān)聯(lián)數(shù)據(jù)
? ? function callback(){
? ? if(xmlHttp.readyState==4){
? ? if(xmlHttp.status==200){
? ? //接收服務(wù)器傳遞給客戶端的響應(yīng)信息? 文本格式
? ? var result=xmlHttp.responseText;
? ? //將其解析成json json本身也是一種文本格式兩者之間有較小的區(qū)別
? ? var json=eval("("+result+")");//(result)
? ? }
? ? }
? ? }
? ?
? ? //設(shè)置關(guān)聯(lián)數(shù)據(jù)的展示,參數(shù)代表的是服務(wù)器傳遞過(guò)來(lái)的關(guān)聯(lián)信息(json格式)
? ? function setContent(contents){
? ? //獲取服務(wù)器傳遞過(guò)來(lái)的關(guān)聯(lián)信息的長(zhǎng)度 依次確定來(lái)生成多少個(gè)<tr></tr>
? ? var size=contents.length;
? ? for(var i=0;i<size;i++){
? ? var text=contents[i];//json數(shù)據(jù)的第i個(gè)元素值
? ? var tr=document.createElement("tr");
? ? var td=document.createElement("td");
? ? td.setAttribute("border", "0");
? ? td.setAttribute("bgcolor","#FFFAFA" );
? ? //每行鼠標(biāo)移上去都會(huì)變色 加個(gè)樣式
? ? this.className="mouseOver";
? ? //每行鼠標(biāo)移出去之后也會(huì)變色 加個(gè)樣式
? ? this.className="mouseOut";
? ? //點(diǎn)擊某行的信息時(shí) 會(huì)自動(dòng)設(shè)置到輸入框中
? ? td.onclick=function(){
//這個(gè)方法實(shí)現(xiàn)的是 當(dāng)鼠標(biāo)點(diǎn)擊一個(gè)關(guān)聯(lián)的數(shù)據(jù)時(shí),關(guān)聯(lián)數(shù)據(jù)自動(dòng)設(shè)置到輸入框里?
? ?
? ? };
? ? //創(chuàng)建文本節(jié)點(diǎn)
? ? var textNode=document.createTextNode(text);
? ? td.appendChild(textNode);
? ? tr.appendChild(td);
? ? document.getElementById("content_table_tbody").appendChild(tr);
? ? }
? ? }
? ??
? ??
? ??
? ??
? ??
? ??
? ??
? ? </script>
?
? </head>
??
? <body>
? <div id="myDiv">
? <!-- 輸入框 -->
? <input type="text" size="50" id="keyword" onkeyup="getMoreContents()" />
? <input type="button"? value="百度一下" width="50px"/>
? <!-- 下面是內(nèi)容提示的區(qū)域(服務(wù)器返回給客戶端的響應(yīng)信息) -->
? <div id="popDiv">
? <table id="content_table" bgcolor="#FFFAFA" border="0" cellspacing="0" cellpadding="0">
? <tbody id="content_table_tbody" >
? <!-- 動(dòng)態(tài)查詢出來(lái)的數(shù)據(jù)顯示在這個(gè)地方 -->
? <tr><td>ajax1</td></tr>
? <tr><td>ajax2</td></tr>
? <tr><td>ajax3</td></tr>
?
? </tbody>
?
? </table>
?
? </div>
? </div>
? ??
? </body>
</html>
package com.imooc.servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
public class SearchServlet extends HttpServlet {
//定義一個(gè)容器模擬數(shù)據(jù)庫(kù)
static List<String> contents=new ArrayList<String>();
static {
contents.add("ajax post");
contents.add("ajax get");
contents.add("ajax 對(duì)象");
contents.add("data");
contents.add("HmlHttp");
contents.add("ajax post");
contents.add("Jerry");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("123");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//獲取前臺(tái)傳過(guò)來(lái)的參數(shù)(keyword)
String keyword=request.getParameter("keyword");
//根據(jù)keyword查詢關(guān)聯(lián)信息
List<String> datas=getData(keyword);
//將得到的關(guān)聯(lián)信息轉(zhuǎn)化成json數(shù)據(jù)格式
System.out.print(JSONArray.fromObject(datas));
}
public List<String> getData(String keyword){
List<String> datas=new ArrayList<String>();
for(String data:contents){
if(data.contains(keyword)){
datas.add(data);
}
}
return datas;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"?
xmlns="http://java.sun.com/xml/ns/javaee"?
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee?
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
? <display-name></display-name>
? <welcome-file-list>
? ? <welcome-file>index.jsp</welcome-file>
? </welcome-file-list>
??
? <servlet>
? <servlet-name>search</servlet-name>
? <servlet-class>com.imooc.servlet.SearchServlet</servlet-class>
? </servlet>
?
? <servlet-mapping>
? <servlet-name>search</servlet-name>
? <url-pattern>/search</url-pattern>
? </servlet-mapping>
??
??
??
</web-app>