【问题标题】:jQuery autocomplete servlet retun valuesjQuery 自动完成 servlet 返回值
【发布时间】: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


    【解决方案1】:

    System.out.print 仅打印到您的控制台。您确实需要打印这些值,但您需要将它们打印到 servlet 响应中。 (你不能只是 returnjava 对象从 servlet 到 javascript。)

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

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

    然后将System.out.print(改为writer.write(

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-13
      • 2023-03-24
      • 2016-04-30
      • 2013-09-07
      • 1970-01-01
      • 2017-05-09
      • 1970-01-01
      • 2015-10-24
      相关资源
      最近更新 更多