Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

exibindo vários registros usando o conjunto de resultados


Primeiro crie uma classe Javabean que representa uma linha da tabela. Não faço ideia de quais dados você está falando, mas vamos usar um User como exemplo do mundo real:
public class User {
    private Long id;
    private String name;
    private Integer age;
    // Add/generate public getters and setters.
}

O acima é, naturalmente, um exemplo. Você precisa nomear a classe e as propriedades de acordo com o que os dados reais representam.

Agora crie a classe DAO que faz a tarefa de interação com o banco de dados desejada com a ajuda do JDBC. Você só precisa garantir que tenha o driver JDBC do SQL Server correto no caminho de classe. Posso recomendar o jTDS para isso, pois é muito melhor e mais rápido que os drivers JDBC da Microsoft. OK, vamos supor que você queira listar todos os User s que têm a mesma 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;
}

Agora crie uma classe Servlet UsersServlet que faz o pré-processamento dos dados no 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);
}

Mapeie este servlet em web.xml da seguinte forma:
    <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>

Observe o <url-pattern> , você pode executar este servlet por http://example.com/context/users .

Agora crie um arquivo JSP users.jsp que você coloca em WEB-INF pasta para que ninguém possa acessá-la diretamente sem usar o servlet. Você pode usar JSTL c:forEach para iterar sobre uma 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>

Execute-o por http://example.com/context/users . Deve ser isso.