Как перебрать базу данных и распечатать все элементы в таблице - PullRequest
0 голосов
/ 28 ноября 2011

Я пытаюсь создать сервлет, в котором перечислены все элементы таблицы базы данных. Я хочу поместить элементы в таблицу HTML. Итак, учитывая то, что у меня есть, могу ли я просто добавить макет таблицы HTML в свой цикл while, и он подключится к базе данных и напечатает все элементы?

import java.sql.*;
import database.*;

public class products
{
    public static void main(String[] args)
    {
        DBConnections dataSource = DBConnections.getInstance();
        Connection conn = dataSource.getConnection();
        Statement stat = null;
        ResultSet result = null;
        try
        {
            stat = conn.createStatement();
            result = stat.executeQuery("SELECT * FROM Products");

            string code;
            string item;
            float payment;
            while (result.next())
            {
                proCode = result.get("code");
                item = result.get("item");
                payment = result.geFloat("Payment");
                System.out.println(proCode + "\t" + item + "\t" + payment);
            }
        }
        catch (SQLException ex)
        {
            System.err.println("SQLException in Query.java");
            ex.printStackTrace(System.err);
        }
        finally
        {
            DBUtilities.closeResultSet(result);
            DBUtilities.closeStatement(stat);
            dataSource.freeConnection(conn);
        }
    }
}

Ответы [ 3 ]

2 голосов
/ 28 ноября 2011

Хороший и чистый способ сделать это:

Поместите код и методы, связанные с вашей базой данных, в другой класс, например, ProductDao, в котором есть метод productDao.getAllProducts(), который будет возвращать List<Product>, поскольку вы используете JDBC, вам необходимо сопоставить POJO с таблицей БД

Теперь на сервлете задайте список товаров в атрибуте запроса

request.setAttribute("productsToDisplay", listOfProducts);

перенаправляет этот запрос в JSP, который отображает представление

в JSP используйте JSTL для рендеринга продуктов


См

0 голосов
/ 28 ноября 2011

ОК, то, что вы написали, является правильным, но это не сервлет.

Сначала вы должны основать свой класс на классе HttpServlet

public class products extends HttpServlet {

тогда вместо использования main вы используете doGet или doPost для ответа на запросы

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {

Также смотрите сообщение от Джигара Джоши на producstDao. Как только у вас есть список, вы передаете его в JSP, и он создаст HTML.

По-настоящему хорошая книга об этом - "Head First Servlets и JSP (сдача экзамена на сертификацию Sun для веб-компонентов)" от O'Reilly

Вы также можете найти это полезным http://pdf.coreservlets.com/

Существует довольно крутая кривая обучения для этого, мне потребовалось некоторое время, чтобы понять это, но как только вы получили его, он работает довольно хорошо.

0 голосов
/ 28 ноября 2011

Код, который вы написали, заблокирован в основном методе. Что в этом хорошего?

Сервлеты являются прослушивателями HTTP.

Я думаю, что правильный способ выполнить то, что вы хотите, это поместить код из вашего основного метода (с изменениями в способе обработки соединений) в сервлет. Затем вы можете выдать HTTP-запрос, который скажет ему выполнить запрос к базе данных, отформатировать ответ в HTML и отправить его обратно. Ваш клиент будет браузером, который просто отобразит поток вывода.

Возможно, вы не знаете о JSP и JSTL. Это стандартная библиотека шаблонов Java, которая позволяет вам создавать динамические HTML-страницы в виде Java Server Pages, которые скомпилированы для вас в сервлеты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...