javaweb把后端數據返回到前端


第一步

先寫公共查詢類

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();
		}
	}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM