/
autocomplete.jsp
67 lines (56 loc) · 1.57 KB
/
autocomplete.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<%@page
import="java.sql.*,
javax.sql.*,
java.io.IOException,
javax.servlet.http.*,
javax.servlet.*,
java.lang.Math,
java.util.*,
cart.ItemCounter,
javax.sql.DataSource"%>
<%@include file="cacheclear.jsp"%>
<%
Connection c = null;
try {
int pick = (int)(Math.random() % 2);
if (pick == 0){
c = ((DataSource) session.getAttribute("dsRead")).getConnection();
}
else{
c = ((DataSource) session.getAttribute("dsWrite")).getConnection();
}
response.setContentType("text/html");
String str = request.getParameter("searchstring").trim();
if (str != null && !str.equals("")){
String[] searchstrings = str.split("\\s+");
String query = "SELECT DISTINCT(title) FROM book WHERE MATCH (title) AGAINST (? IN BOOLEAN MODE) LIMIT 5;";
//out.println(query);
PreparedStatement pstatement = c.prepareStatement(query);
String input = "";
int searchstringIndex;
for (searchstringIndex = 0; searchstringIndex < searchstrings.length - 1; searchstringIndex++){
input += "+" + searchstrings[searchstringIndex] + " ";
}
input += "+" + searchstrings[searchstringIndex] + "*";
pstatement.setString(1, input);
//out.println(pstatement);
ResultSet rs = pstatement.executeQuery();
String writeOutput = "";
writeOutput += "[";
int count = 0;
while (rs.next()){
writeOutput += "\"" + rs.getString(1) + "\", ";
count++;
}
if (count != 0){
writeOutput = writeOutput.substring(0, writeOutput.length() - 2);
}
writeOutput += "]";
out.println(writeOutput);
}
}catch (SQLException e){
}
finally{
c.close();
}
%>