sql >> Base de Datos >  >> RDS >> Sqlserver

mostrando múltiples registros usando el conjunto de resultados

Primero cree una clase Javabean que represente una fila de la tabla. No tengo idea de qué datos estás hablando, pero tomemos un User como ejemplo del mundo real:

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

Lo anterior es, por supuesto, un ejemplo. Debe nombrar la clase y las propiedades de acuerdo con lo que representan los datos reales.

Ahora cree la clase DAO que realiza la tarea de interacción de la base de datos deseada con la ayuda de JDBC. Solo necesita asegurarse de tener el controlador JDBC de SQL Server correcto en la ruta de clases. Puedo recomendar jTDS para esto, ya que es mucho mejor y más rápido que los propios controladores JDBC de Microsoft. Bien, supongamos que desea enumerar todos los User s que tienen la misma 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;
}

Ahora crea una clase Servlet UsersServlet que realiza el preprocesamiento de los datos en doGet() método.

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

Asigne este servlet en web.xml de la siguiente manera:

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

Tenga en cuenta el <url-pattern> , puede ejecutar este servlet mediante http://example.com/context/users .

Ahora cree un archivo JSP users.jsp que colocas en WEB-INF carpeta para que nadie pueda acceder directamente a ella sin usar el servlet. Puede usar JSTL c:forEach para iterar sobre una 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>

Ejecútelo con http://example.com/context/users . Eso debería ser todo.