【发布时间】:2014-11-04 21:46:33
【问题描述】:
对于 Java Servlet 项目,我需要创建一个自动完成功能。 所以我正在使用 jQuery 自动完成插件。 它嵌入在一个jsp文件'autocomplete.jsp'中
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/style.css" />
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script src="js/jquery.autocomplete.js"></script>
<script>
jQuery(function(){
$("#username").autocomplete("/Servlet/AutoComplete");
});
</script>
</head>
<body>
<br><br><center>
Select Username :
<input type="text" id="username" name="username"/>
</font>
</body>
</html>
AutoComplete.java 是一个 Servlet:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try{
String s[]=null;
Class.forName("com.mysql.jdbc.Driver");
Connection con =DriverManager.getConnection("jdbc:mysql://localhost/?user=root&password=");
Statement st=con.createStatement();
ResultSet rs = st.executeQuery("SELECT username FROM database.datatable");
List li = new ArrayList();
while(rs.next())
{
li.add(rs.getString(1));
}
String[] str = new String[li.size()];
Iterator it = li.iterator();
int i = 0;
while(it.hasNext())
{
String p = (String)it.next();
str[i] = p;
i++;
}
//jQuery related start
String query = (String)request.getParameter("q");
int cnt=1;
for(int j=0;j<str.length;j++)
{
if(str[j].toUpperCase().startsWith(query.toUpperCase()))
{
System.out.print(str[j]+"\n");
if(cnt>=5)// 5=How many results have to show while we are typing(auto suggestions)
break;
cnt++;
}
}
//jQuery related end
rs.close();
st.close();
con.close();
}
catch(Exception e){
e.printStackTrace();
}
}
所以目前,结果会打印在 IDE 内的 Tomcat 输出中。
很高兴知道,但用户看不到它。
我试图将System.out.print(str[j]+"\n"); 行更改为
return str[j];
但这对我也没有帮助。我想我需要在 autocomplete.jsp 文件中添加一些内容。但我不知道在那里做什么。
希望你能帮助我。
【问题讨论】:
标签: java jquery jsp servlets autocomplete