package com.javakc.book.one;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import
javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
com.javakc.gaoming.jdbc.utils.Jdbc;
@WebServlet("/aa.do")
public class AaServlet extends
HttpServlet {
private
static final long serialVersionUID = 1L;
private
static final Connection conn;
static
{
conn
= Jdbc.getConnection("aaa", "aaa");
}
protected
void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
this.doPost(request,
response);
}
@Override
protected
void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
String
str = request.getParameter("keywords");
String[]
keywords = str.trim().split("\\s+");
/*
* 此时的要点是查询语句的构造;
*/
final
StringBuffer sb = new StringBuffer("select * from book_tab where
");
for
(int i = 0; i < keywords.length; ++i) {
if
(i > 0) {
sb.append("
or ");
}
sb.append("name
like ? or author like ? ");
}
System.out.println(sb);
PreparedStatement
stmt = null;
ResultSet
result = null;
String
sql = sb.toString().trim();
try
{
stmt
= conn.prepareStatement(sql);
for
(int i = 0; i < keywords.length; ++i) {
String
keyword = keywords[i];
int
start = i * 2 + 1;
int
end = start + 1;
stmt.setObject(start,
"%" + keyword + "%");
stmt.setObject(end,
"%" + keyword + "%");
}
result
= stmt.executeQuery();
while
(result.next()) {
System.out.println(result.getString("name")
+ "," + result.getString("author"));
}
}
catch (SQLException e) {
e.printStackTrace();
}
finally {
Jdbc.close(result,
stmt);
}
}
@Override
public
void destroy() {
Jdbc.close(conn);
}
}
|