Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

visualizzazione di più record utilizzando il set di risultati

Per prima cosa crea una classe Javabean che rappresenti una riga della tabella. Non ho idea di quali dati tu stia parlando, ma prendiamo un User come esempio del mondo reale:

public class User {
    private Long id;
    private String name;
    private Integer age;
    // Add/generate public getters and setters.
}

Quanto sopra è ovviamente un esempio. È necessario denominare la classe e le proprietà in base a ciò che rappresentano i dati effettivi.

Ora crea la classe DAO che esegue l'attività di interazione del database desiderata con l'aiuto di JDBC. Devi solo assicurarti di avere il driver JDBC di SQL Server corretto nel percorso di classe. Posso consigliare jTDS per questo in quanto è molto migliore e più veloce dei driver JDBC di Microsoft. OK, supponiamo che tu voglia elencare tutti gli User s che hanno la stessa 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;
}

Ora crea una classe servlet UsersServlet che esegue la preelaborazione dei dati in doGet() metodo.

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

Mappa questo servlet in web.xml come segue:

    <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>

Nota il <url-pattern> , puoi eseguire questo servlet da http://example.com/context/users .

Ora crea un file JSP users.jsp che inserisci in WEB-INF cartella in modo che nessuno possa accedervi direttamente senza utilizzare il servlet. Puoi usare JSTL c:forEach per scorrere un 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>

Eseguilo da http://example.com/context/users . Dovrebbe essere così.