2014-11-04 18 views
-1

我需要創建一個自動完成的Java Servlet項目。 所以我使用jQuery自動完成插件。 它是在一個jsp文件 'autocomplete.jsp'jQuery自動完成servlet retun值

<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文件中添加一些內容。但我不知道該怎麼辦。

希望你能幫助我。

回答

1

System.out.print僅打印到您的控制檯。您確實需要打印這些值,但您需要將它們打印到servlet響應中。 (您不能從一個servlet的JavaScript只是return Java對象)。

response.setContentType("text/html;charset=UTF-8");加之前:

java.io.PrintWriter writer = response.getWriter(); 

然後換System.out.print(writer.write(