有个项目用到在用户输入的时候,给予一定的提示,提示的内容是从数据库中提取(有中文)。
于是google搜索了下,自己修改了部分代码,与大家分享。
附件内是可在MyEclipse内运行的源码,需要的朋友请自行下载。
首先就是要写数据库操作的类:
DbManager.java
其中表article只有一个字段author,大家可根据自己的需要进行修改。
package com.billows.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* 数据库管理与操作
* @编写者:Billows.Van
*
*/
public class DbManager {
private Connection conn;
private Statement stmt;
private ResultSet rs;
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://localhost:3306/test";
private static final String USERNAME = "root";
private static final String PASSWORD = "1234";
// 数据库连接
public synchronized Connection getConnection() {
try {
Class.forName(DRIVER);
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (ClassNotFoundException e) {
e.printStackTrace();
return null;
} catch (SQLException e) {
e.printStackTrace();
return null;
}
return conn;
}
/**
* 获取符合输入条件的数据
* @param conn
* @param sql
* @return
*/
public String searchSuggest(String param) {
String sql = "select author from article where author like '" + param + "%' order by author";
String author = "";
String str = "";
try {
conn = this.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while (rs.next()) {
author = rs.getString("author");
str += author + "#";
}
} catch (SQLException e) {
e.printStackTrace();
return "";
}
return str;
}
}
然后是相应ajax的Servlet:
SuggestAction.java
package com.billows.web.action;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.billows.db.DbManager;
/**
* Ajax相应的Servlet
* @author Billows.Van
*
*/
public class SuggestAction extends HttpServlet {
private static final long serialVersionUID = -2522652273202051650L;
private DbManager dbManager;
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
String param = "";
if(request.getParameter("txtValue") != null)
param=request.getParameter("txtValue");
dbManager = new DbManager();
String result = dbManager.searchSuggest(param);
PrintWriter out = response.getWriter();
out.print(result);
out.flush();
}
}
下面就是web.xml的写法了
web.xml
autoSuggest
com.billows.web.action.SuggestAction
autoSuggest
/suggest
index.jsp
最后是jsp页面的内容:
index.jsp
AJAX输入自动提示new actb("tb", loadAllMessage("suggest" , ""), null);
其中用到的autosuggest.js在附件内,需要的朋友可以下载查看。