Лучший способ отправить данные с сервера

теперь результат SQL-запроса находится внутри System.out.println (),

public class MyMain{

public static void main(String[] args) throws Exception  {

    Class.forName("com.mysql.jdbc.Driver");

    Connection con = DriverManager.getConnection("jdbc:mysql://______8080/test-app","______","______");

    PreparedStatement statement = con.prepareStatement("SELECT * FROM users");

    ResultSet result = statement.executeQuery();

    while(result.next()){
        System.out.println(result.getString(1)+ " "+result.getString(2));
    }
}

а как отправить результат клиенту? Как изображение или что-л. Я должен использовать «return» + «FileOutputStream»? Но это безопасность, если это большие данные?
Я могу проанализировать результат SQL на стороне сервера, а затем отправить его в массиве байтов, но как отправить его внутри http

UPD изображение

Android не может напрямую подключиться к базе данных MySQL .. -> stackoverflow.com/questions/15732853/…

Raymond Nijland 23.04.2018 19:13

Попробуйте изменить свой код, чтобы он соответствовал использованию Socket Programming.

Jamil 23.04.2018 19:33

Если вам нужно отправить результат SQL в HTTP. почему бы не использовать сервлет? stackoverflow.com/questions/7213541/what-is-java-servlet

yoav 23.04.2018 20:19
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
213
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Хорошо, здесь у вас может быть небольшая путаница. Вы показываете программу на Java, которая подключается к базе данных. Что вам нужно:

  • Программа Java (1), работающая на устройстве Android, которая подключается к ...
  • Серверная программа (2), которая работает на сервере, который подключается к ...
  • База данных (3) (тот же или другой сервер), в которой хранятся данные.

Вам нужны три вещи. Вы это хорошо видите?

Теперь программа на Java (1) соединяется с (2) на некоторых доменное имя / IP-адрес и порт, используя какой-то сетевой протокол. Скорее всего, это будет какой-то тип HTTP или HTTPS, но также может быть что-то вроде UDP или что-то еще.

Серверная программа слушает на порту для запросов и подключается к базе данных для получения данных. После получения он отвечает через тот же порт.

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

Я выхожу за рамки своего вопроса, но у меня есть некоторые соображения по этой теме, и кое-что еще неясно - то, что все клиенты подключаются к серверу через один порт, не влияет на работу сервера? Т.е. неважно, сколько устройств подключено к серверу по одному порту? Я также нарисовал предполагаемый скелет своего приложения. не стыдно добавить в постановку?

Олег Котенко 23.04.2018 22:05

Подключение к тому же порту? Нет, ни в коем случае. Серверы действительно хороши в этом. За кулисами есть несколько стратегий. По крайней мере, балансировщики нагрузки, циклические кластеры, перенаправление портов, неблокирующие порты ввода / вывода. Просто назвать несколько.

The Impaler 23.04.2018 22:13

так что я могу настроить сервер на 8080, а клиенты для подключения к серверу на 8080? и я хотел узнать ваше мнение об архитектуре взаимодействия клиент-сервер в прикрепленном изображении

Олег Котенко 23.04.2018 22:18

Да, это изображение выглядит хорошо. Более подробно, вам нужно выяснить, как сериализовать (на сервере) и десериализовать (на клиенте) данные. провод передает только биты и байты. Вот почему сериализация так полезна для преобразования структур данных в байты (на сервере) и байтов обратно в структуры данных (на клиенте) для их фактического использования.

The Impaler 23.04.2018 22:21

Большое спасибо! Данные на сервере хранятся в формате blob, а клиент записывается в файл. но между сериализацией и десериализацией использования io-streams это нормальное явление? это как возврат в обычном методе? это то, что меня больше всего беспокоило - какой метод / способ отправки данных клиенту

Олег Котенко 23.04.2018 22:31

Другие вопросы по теме