You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Eclipse+MySQL+Hibernate的Servlet项目:如何将数据库数据展示到浏览器?

How to Display Hibernate-Fetched Data in a Browser from Your Servlet

Hey there! Great news that your UserLogin Servlet + Hibernate setup is already working with Postman—you're halfway there! Let's cover a few practical, easy-to-implement ways to render that database data in a browser.

Option 1: Use JSP (Traditional Java Web Approach)

This is the most common approach for Java EE apps, as it lets you separate business logic (Servlet) from presentation (JSP).

Step 1: Pass Data from Servlet to Request

In your UserLogin Servlet's doGet/doPost method, after fetching data with Hibernate, store it in the request scope so the JSP can access it:

// Assume you've fetched a List<User> via Hibernate
List<User> userList = yourHibernateDataService.getUsers();

// Attach the data to the request object
request.setAttribute("userList", userList);

// Forward the request to a JSP page
request.getRequestDispatcher("/WEB-INF/views/userList.jsp").forward(request, response);

Step 2: Create a JSP to Render the Data

Create a JSP file (e.g., userList.jsp) under WEB-INF/views/. Use JSTL tags for clean iteration (you'll need to add JSTL dependencies to your project first):

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>User List</title>
    <style>
        table { border-collapse: collapse; width: 80%; margin: 20px auto; }
        th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
        th { background-color: #f2f2f2; }
    </style>
</head>
<body>
    <h2>User List</h2>
    <table>
        <tr>
            <th>ID</th>
            <th>Username</th>
            <th>Email</th>
        </tr>
        <!-- Iterate over the user list from the request -->
        <c:forEach var="user" items="${userList}">
            <tr>
                <td>${user.id}</td>
                <td>${user.username}</td>
                <td>${user.email}</td>
            </tr>
        </c:forEach>
    </table>
</body>
</html>

Option 2: Directly Output HTML from the Servlet

If you want a quick test without setting up JSP, you can generate HTML directly in your Servlet. This is great for demos but not ideal for larger apps (it mixes logic and presentation):

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    
    // Fetch data via Hibernate
    List<User> userList = yourHibernateDataService.getUsers();
    
    // Build and output HTML
    out.println("<html><head><title>User List</title></head><body>");
    out.println("<h2>User List</h2>");
    out.println("<table border='1'>");
    out.println("<tr><th>ID</th><th>Username</th><th>Email</th></tr>");
    
    for(User user : userList) {
        out.println("<tr>");
        out.println("<td>" + user.getId() + "</td>");
        out.println("<td>" + user.getUsername() + "</td>");
        out.println("<td>" + user.getEmail() + "</td>");
        out.println("</tr>");
    }
    
    out.println("</table></body></html>");
}

Option 3: Return JSON + Frontend JavaScript (Modern Approach)

For a decoupled setup (separate frontend and backend), return JSON from your Servlet and use JavaScript to render the data dynamically.

Step 1: Return JSON from Servlet

Add a JSON library like Jackson to your project, then modify the Servlet to serialize data to JSON:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");
    
    // Fetch data via Hibernate
    List<User> userList = yourHibernateDataService.getUsers();
    
    // Serialize the list to JSON
    ObjectMapper objectMapper = new ObjectMapper();
    String jsonOutput = objectMapper.writeValueAsString(userList);
    
    // Write JSON to the response
    PrintWriter out = response.getWriter();
    out.print(jsonOutput);
    out.flush();
}

Step 2: Create a Frontend HTML Page

Make an HTML file (e.g., index.html) in your web content folder, then use JavaScript to fetch and render the JSON:

<!DOCTYPE html>
<html>
<head>
    <title>User List</title>
    <style>
        table { border-collapse: collapse; width: 80%; margin: 20px auto; }
        th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
        th { background-color: #f2f2f2; }
    </style>
</head>
<body>
    <h2>User List</h2>
    <table id="userTable">
        <tr>
            <th>ID</th>
            <th>Username</th>
            <th>Email</th>
        </tr>
    </table>

    <script>
        // Fetch data from your Servlet (replace with your Servlet's URL)
        fetch('/your-servlet-mapping-url')
            .then(response => response.json())
            .then(users => {
                const table = document.getElementById('userTable');
                users.forEach(user => {
                    const row = table.insertRow();
                    row.insertCell(0).textContent = user.id;
                    row.insertCell(1).textContent = user.username;
                    row.insertCell(2).textContent = user.email;
                });
            })
            .catch(error => console.error('Error loading data:', error));
    </script>
</body>
</html>

Quick Tips

  • Ensure your Servlet is mapped correctly via @WebServlet annotation or web.xml.
  • For JSTL, add the JSTL JARs to your WEB-INF/lib folder (or include them via Maven/Gradle).
  • If using Jackson, include the jackson-databind dependency in your build file.

内容的提问来源于stack exchange,提问作者Dimitris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:08:47