日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

使用Ajax以及CSS+DIV高仿谷歌搜索(附源碼下載)

系統(tǒng) 4502 0

在使用 Google 搜索或者是 Baidu 搜索的時候,在輸入搜索關(guān)鍵字的同時,會自動彈出匹配的其他關(guān)鍵字的提示,全心全意為人民服務(wù)的精神在這里嶄露無遺。這種利用 Ajax 技術(shù)實(shí)現(xiàn)輸入提示和自動完成的功能是 Google 率先推出的,然后在其他的 Web 應(yīng)用中被廣泛的應(yīng)用。利用 Ajax 實(shí)現(xiàn)部分頁面刷新或者自動完成會使得用戶體驗(yàn)絕大大提升。

技術(shù)永遠(yuǎn)是為用戶服務(wù)的(無論是性能方面還是美觀方面),脫離了用戶就沒有技術(shù)的發(fā)展,或者說只有用戶才能促進(jìn)技術(shù)的進(jìn)步。

在掌握了 Ajax 原理之后我們也可以模仿谷歌,來實(shí)現(xiàn)一個搜索引擎的小 Demo

在實(shí)現(xiàn)的過程中主要運(yùn)用的是 Ajax 技術(shù), CSS+DIV 布局, Servlet+JavaBean ,還有數(shù)據(jù)庫的基本知識等等。下面大致的描述一下實(shí)現(xiàn)的步驟,請大家跟隨文字來共同完成我們的 Google 。有興趣的朋友可以 點(diǎn)擊這里下載源碼 (實(shí)現(xiàn)倉促,如有不足之處請諒解)

1 、準(zhǔn)備后臺以及數(shù)據(jù)庫,完成數(shù)據(jù)庫( MySql )操作部分。

這里很簡單,首先編寫 ConnectionManager 類,來實(shí)現(xiàn)對數(shù)據(jù)庫的連接、查詢功能。

代碼如下:

    package com.ncs.common;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ConnectionManager {
	
	private static String URL="jdbc:mysql://localhost:3306/test";
	private static String DRIVER="com.mysql.jdbc.Driver";
	private static String USER="root";
	private static String PASSWORD="123456";
	private static Connection conn=null;
	private static Statement stmt=null;
	private static ResultSet rs=null;
	
	public static void getConnection(){
		
		try {
			Class.forName(DRIVER);
			try {
			conn = DriverManager.getConnection(URL, USER, PASSWORD);
			System.out.println("Successfully connected to Mysql DB!");
			} catch (SQLException e) {
				System.out.println("Connection DB failed!");
			}
		} catch (ClassNotFoundException e) {
			System.out.println("Driver:"+DRIVER+" can't find!");
		}		
		
	}
	
	
	public static void closeConnection(){
		
		try {
			conn.close();
			conn=null;
		} catch (SQLException e) {
			
			e.printStackTrace();
		}
	}
	
	
	public static  ResultSet executeQuery(String sql){
		try {
			stmt=conn.createStatement();
			rs=stmt.executeQuery(sql);
			return rs;
			
		} catch (SQLException e) {
			return null;
		}
		
	}
	
	public static void main(String[] args) {
		//getConnection();
	}

}

  


2 、編寫頁面

在頁面中添加必須要有的文本框,以及兩個按鈕。其中必不可少的是在文本框輸入文本時才出現(xiàn)的一個隱藏 DIV

代碼如下:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Google</title>
    <%
	    response.setHeader("Cache-Control","no-store"); 
	    response.setHeader("Pragrma","no-cache"); 
	    response.setDateHeader("Expires",0); 
    %>
    <link type="text/css" href="css/autoComplete.css" rel="stylesheet"/>
    <script type="text/javascript" src="scripts/autoComplete.js"></script>
</head>
<body onload="setPosition($('txtKeyword'))">
	<div id="img"><img src="images/google.jpg"></img></div>
    <form id="form1">
    <div id="input"><input type="text" onkeydown="if(GetKeyCode(event)==13)form_submit()" onkeyup="GetSuggest(this.value,event);updown(event)" autocomplete="off" id="txtKeyword" />
    </div>
    <div id="dSuggest"></div>
    <div id="button">
    <input id="submit" type="submit"  value="Google 搜索" onclick="alert('Now Search ...')" /> 
    <input id="submit" type="submit"  value="手氣不錯" onclick="alert('Now Search ...')" />
    </div>
    </form>
</body>
</html>

  


3 、實(shí)現(xiàn) Servlet

編寫 Servlet 來實(shí)現(xiàn)將頁面的數(shù)據(jù)拼成 Sql 語句并傳到 ConnectionManager 類,將返回的結(jié)果輸出的頁面。(需要注意的是,這里我們采用得是直接輸出 jsp 代碼,所以要為 DIV 加上 id 屬性以便在 CSS 中控制樣式,以及相關(guān)事件以便于在 js 中控制效果。)

代碼如下:

    package com.ncs.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.ncs.common.ConnectionManager;

public class suggest extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		req.setCharacterEncoding("UTF-8");
	//	resp.setContentType("text/xml;charset=utf-8");
		System.out.println("Enter Servlet Get Method..");
		PrintWriter out=resp.getWriter();
		String param=(String)req.getParameter("id");
		String paramValue=param.trim().length()>0?param.trim():"unknown";
		String sql="select name from tbl_ajax_search where name like '"+paramValue+"%'";
		System.out.println("sql="+sql);
		ConnectionManager.getConnection();
		ResultSet rs=ConnectionManager.executeQuery(sql);
		StringBuffer sb=new StringBuffer();
		//sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
		 // .append("<data>");
		sb.append("<ul id=\"sug\">");
		int pos=0;
		try {
			
			while(rs.next()){	
				System.out.println("pos="+pos);
					sb.append("<li onclick=\"form_submit()\" onmouseover=\"myMouseOver(")
					.append(pos)
					.append(");\" onmouseOut=\"myMouseOut(")
					.append(pos)
					.append(");\">")
					.append(rs.getString(1)+"</li>");
				//sb.append("<item>")
				  //.append(rs.getString(1))
				 // .append("</item>");		
					pos++;
			}
			
			sb.append("</ul>");
			
			int posi = sb.toString().indexOf("onmouseover");
			System.out.println("posi="+posi);
			if(posi==-1){
				System.out.println("no content found.");
				out.write("");
			}else{
				System.out.println(sb.toString());
				out.write(sb.toString());
			}
		} catch (SQLException e) {
			
			e.printStackTrace();
		}


	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(req,resp);
	}
}

  


4 、仿照 Google 調(diào)整頁面的布局

這里重點(diǎn)就是調(diào)整隱藏的 DIV 以及按鈕的樣式。

最終效果如下圖

使用Ajax以及CSS+DIV高仿谷歌搜索(附源碼下載)

后記:關(guān)于模仿

自呱呱墜地我們就開始了自己一生的學(xué)習(xí),在學(xué)習(xí)的過程中有著必不缺少的一個步驟:模仿。我們的學(xué)習(xí)大多是從模仿開始的,無論是模仿父母的聲音牙牙學(xué)語,還是模仿大人走路的姿勢蹣跚學(xué)步;無論是模仿書本上的文字一筆一畫,還是模仿課文的結(jié)構(gòu)字斟句酌。這都是開始學(xué)習(xí)的第一個過程——模仿。當(dāng)然隨著模仿的深入我們掌握了原理就可以開始下一個階段的學(xué)習(xí):使用和發(fā)揮。使用和發(fā)揮有賴于模仿的功力,只有初期模仿的到位,模仿的逼真,才能有后期的漂亮運(yùn)用與靈活發(fā)揮。

我們的學(xué)習(xí)之路: 模仿——使用——發(fā)揮

使用Ajax以及CSS+DIV高仿谷歌搜索(附源碼下載)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 祁连县| 北京市| 普定县| 中牟县| 瑞昌市| 体育| 建瓯市| 镇雄县| 阿荣旗| 哈尔滨市| 遂平县| 惠水县| 通海县| 梁平县| 通山县| 明水县| 静宁县| 平潭县| 临江市| 大理市| 禹州市| 五常市| 阿瓦提县| 会理县| 江阴市| 华容县| 新源县| 扬州市| 团风县| 朔州市| 延寿县| 淳安县| 溧水县| 新建县| 乐山市| 醴陵市| 博爱县| 胶南市| 沁阳市| 吉林市| 泊头市|