第一步
先写公共查询类
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();
}
}
}