protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try {
req.setCharacterEncoding("utf-8");
//獲取jsp頁面傳遞過來的查詢關鍵字
String command=req.getParameter("command");
String description=req.getParameter("description");
req.setAttribute("command", command);
req.setAttribute("description",description);
Class.forName("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/micro_message", "root", "root");
//1=1:適用於檢索條件不固定情況
//用StringBuffer或者StringBuilder,不要用String。String不會回收
StringBuilder sql=new StringBuilder("SELECT ID,COMMAND,DESCRIPTION,CONTENT FROM message where 1=1");
//定義一個集合,暫時存放關鍵字
List<String> paramList=new ArrayList<String>();
if(command!=null&&!"".equals(command.trim())){
//精確查詢
//添加字符要記得加上必要的空格
sql.append(" and COMMAND=?");
paramList.add(command);
}
if(description!=null&&!"".equals(description.trim())){
//模糊查詢(只要包含此內容就可查詢)
sql.append(" and DESCRIPTION like '%' ? '%'");
paramList.add(description);
}
PreparedStatement ps=conn.prepareStatement(sql.toString());
//循環語句,獲取集合中的值,賦值給ps中的?(問號)
//可以分清兩個查詢中的哪個查詢
for(int i=0;i<paramList.size();i++){
ps.setString(i+1, paramList.get(i));
}
ResultSet rs=ps.executeQuery();
List<Message> messageList=new ArrayList<Message>();
while(rs.next()){
Message message=new Message();
message.setId(rs.getString("ID"));
message.setCommand(rs.getString("COMMAND"));
message.setDescription(rs.getString("DESCRIPTION"));
message.setContent(rs.getString("CONTENT"));
messageList.add(message);
}
//將所有查詢信息放入request中,並轉到jsp頁面
req.setAttribute("messageList", messageList);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
req.getRequestDispatcher("/WEB-INF/jsp/back/list.jsp").forward(req, resp);
}