Đầu tiên, hãy tạo một lớp Javabean đại diện cho một hàng của bảng. Tôi không biết bạn đang nói về dữ liệu gì, nhưng hãy xem một User
như ví dụ trong thế giới thực:
public class User {
private Long id;
private String name;
private Integer age;
// Add/generate public getters and setters.
}
Ở trên tất nhiên là một ví dụ. Bạn cần đặt tên cho lớp và các thuộc tính tương ứng với những gì dữ liệu thực tế đại diện.
Bây giờ tạo lớp DAO thực hiện nhiệm vụ tương tác cơ sở dữ liệu mong muốn với sự trợ giúp của JDBC. Bạn chỉ cần đảm bảo rằng bạn có trình điều khiển SQL Server JDBC chính xác trong classpath. Tôi có thể đề xuất jTDS cho điều này vì nó tốt hơn và nhanh hơn nhiều so với trình điều khiển JDBC của Microsoft. OK, giả sử rằng bạn muốn liệt kê tất cả User
s có cùng age
:
public List<User> listByAge(Integer age) throws SQLException {
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
List<User> users = new ArrayList<User>();
try {
connection = database.getConnection();
statement = connection.prepareStatement("SELECT id, name, age FROM user WHERE age = ?");
statement.setInt(1, age);
resultSet = statement.executeQuery();
while (resultSet.next()) {
User user = new User();
user.setId(resultSet.getLong("id"));
user.setName(resultSet.getString("name"));
user.setAge(resultSet.getInt("age"));
users.add(user);
}
} finally {
if (resultSet != null) try { resultSet.close(); } catch (SQLException logOrIgnore) {}
if (statement != null) try { statement.close(); } catch (SQLException logOrIgnore) {}
if (connection != null) try { connection.close(); } catch (SQLException logOrIgnore) {}
}
return users;
}
Bây giờ hãy tạo một lớp Servlet UsersServlet
xử lý trước dữ liệu trong doGet()
phương pháp.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<User> users = userDAO.list();
request.setAttribute("users", users);
request.getRequestDispatcher("/WEB-INF/users.jsp").forward(request, response);
}
Ánh xạ servlet này trong web.xml như sau:
Người dùng <servlet>
<servlet-name>users</servlet-name>
<servlet-class>mypackage.UsersServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>users</servlet-name>
<url-pattern>/users</url-pattern>
</servlet-mapping>
Lưu ý <url-pattern>
, bạn có thể thực thi servlet này bằng http://example.com/context/users
.
Bây giờ, hãy tạo tệp JSP users.jsp
mà bạn đặt trong WEB-INF
thư mục để không ai có thể truy cập trực tiếp vào nó mà không cần sử dụng servlet. Bạn có thể sử dụng JSTL c:forEach
để lặp qua List
:
<table>
<thead>
<tr><th>ID</th><th>Name</th><th>Age</th></tr>
</thead>
<tbody>
<c:forEach items="${users}" var="user">
<tr><td>${user.id}</td><td>${user.name}</td><td>${user.age}</td></tr>
</c:forEach>
</tbody>
</table>
Thực thi nó bằng http://example.com/context/users
. Chắc là vậy.