第一步
先寫公共查詢類
public static List<Map> executeQuery(String sql, Object[] params) {
List<Map> list = new ArrayList<Map>();
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
//連接數據庫
conn = UtilDB.getConnection();
//創建預處理命令
pstmt = conn.prepareStatement(sql);
//為預處理命令設置參數
UtilDB.setParams(pstmt, params);
//執行查詢
rs = pstmt.executeQuery();
//獲取元數據
ResultSetMetaData metaData = rs.getMetaData();
//獲取返回的結果集有多少列
int count = metaData.getColumnCount();
while (rs.next()) {
//聲明map 存儲一行的數據
Map map = new HashMap();
for (int i = 1; i <= count; i++) {
//獲取列名 列名的下標從1 開始
// String columnName = metaData.getColumnName(i);
// 獲取該列的值
// Object value = rs.getObject(columnName);
//把該行每一列的值放置到map中,其中key是列名 value是該列對應的值
map.put(metaData.getColumnName(i), rs.getObject(i));
}
list.add(map);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
UtilDB.Close(conn, pstmt, rs);
}
return list;
}
第二步
在寫dao層
接口 public List<MessageDate> getFindMessage(Connection conn);
實現類
public class UserDaoImpl implements UserDao {
/*
* @getfindmessage
* 查找留言
* */
@Override
public List<MessageDate> getFindMessage(Connection conn ) throws SQLException {
PreparedStatement pstmt = null;
ResultSet rs = null;
ArrayList<MessageDate> MD= new ArrayList<MessageDate>();
if (conn!=null) {
String sql = "select * from guestbook ";
Object[] params = {};
rs = UtilDB.execute(conn, pstmt, rs, sql, params);
while (rs.next()) {/*使用while順壞取出留言信息*/
MessageDate md = new MessageDate();
md.setId(rs.getInt("id"));
md.setName(rs.getString("name"));
md.setEmaile(rs.getString("emaile"));
md.setTitle(rs.getString("title"));
md.setContent(rs.getString("content"));
md.setCreatedtime(rs.getString("createdtime"));
md.setPhone(rs.getString("phone"));
MD.add(md);
}
}
UtilDB.Close(conn,pstmt,rs);
return MD;
}
}
第三步
寫業務層service
public List<MessageDate> getFindMessage();
public class UserServletlmpl implements UserServlet {
private UserDao userDao;
public UserServletlmpl(){
userDao=new UserDaoImpl();
}
/*
* 查詢留言板
* */
@Override
public List<MessageDate> getFindMessage() {
Connection conn = null;
List<MessageDate> messageDates =null;
try {
conn = UtilDB.getConnection();
messageDates= userDao.getFindMessage(conn);
} catch (SQLException e) {
e.printStackTrace();
}
finally {
UtilDB.Close(conn,null,null);
}
return messageDates;
}
}
第四步
寫視圖層
@WebServlet(name = "FindMessageServlet",urlPatterns = "/jsp/findMessageServlet")
public class FindMessageServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
UserServlet userServlet = new UserServletlmpl();
try {
//從業務層拿數據
List<MessageDate> messageDates = userServlet.getFindMessage();
// System.out.println(messageDates);
request.setAttribute("messageDates", messageDates);//把信息放到session中,但會消耗資源
request.getRequestDispatcher("/jsp/MessageDate.jsp").forward(request, response);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}