• Как вынести отдельное количества продукта с листа java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Добрый день!
    Удалось добраться до вашего проекта и глянуть на него.

    После принятия, общая сумма должна сняться с баланса покупателя и в history отметить, что он взял такой-то товар таким-то количеством. Но servlet не считывает, что находиться в input и выдаёт значение null

    Это происходит потому, что вы ничего не отправляете на сервер при POST запросе на /payment
    Вот, скрин:
    https://i.imgur.com/Q6FT81z.png
    Вот, например, на этом скрине атрибут name отсутствует. Потому на сервер ничего и не отправляется
    https://i.imgur.com/5AJ0Zq5.png
    Добавил атрибуты name в input'ы (paymentForm.jsp)
    paymentForm
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    <form action="payment" method="post">
        <div class="container">
            <div class="row">
                <div class="col-md-4 order-md-2 mb-4">
    
                    <h4 class="d-flex justify-content-between align-items-center mb-3">
                        <span class="text-muted">Ваша корзина</span>
                    </h4>
    
                    <ul class="list-group mb-3">
                        <c:forEach var="product" items="${cartList}" varStatus="productId">
                            <li class="list-group-item d-flex justify-content-between lh-condensed ">
                                <div>
                                    <h6 class="my-0 w-75">${product.title} ${product.model}</h6>
                                    <small class="text-muted">${product.description}</small>
                                </div>
                                <div class="d-flex flex-column w-100 justify-content-center">
                                    <span class="text-muted"
                                          style="margin-left: auto">${product.price}€ X ${quantity}</span>
                                    <small class="text-muted float-right"
                                           style="font-size: 12px; margin-left: auto">${product.price * quantity}€</small>
                                </div>
                            </li>
                        </c:forEach>
    
                        <li class="list-group-item d-flex justify-content-between bg-light">
                            <div class="text-success">
                                <h6 class="my-0">Промо-код</h6>
                                <small>kapatichloh</small>
                            </div>
                            <span class="text-success">-5€</span>
                        </li>
    
                        <li class="list-group-item d-flex justify-content-between">
                            <span>Total (USD)</span>
                            <span id="totalPrice" name="totalPrice" class="font-weight-bold">${totalPrice}</span>
                        </li>
                    </ul>
                </div>
    
                <div class="col-md-8 order-md-1">
                    <h4 class="mb-3">Платежный адрес</h4>
                    <form class="needs-validation" novalidate="">
                        <div class="row">
                            <div class="col-md-6 mb-3">
                                <label for="name">Имя</label>
                                <input name="name" type="text" class="form-control" id="name" placeholder="" value="${user.buyer.name}"
                                       required>
                            </div>
    
                            <div class="col-md-6 mb-3">
                                <label for="lastname">Фамилия</label>
                                <input name="lastname" type="text" class="form-control" id="lastname"
                                       value="${user.buyer.lastname}" required>
                            </div>
                        </div>
    
                        <div class="mb-3">
                            <label for="email">Email<span class="text-muted"></span></label>
                            <input name="email" type="email" class="form-control" id="email"
                                   value="${user.buyer.email}" required>
                        </div>
    
                        <div class="row">
                            <div class="col-md-5 mb-3">
                                <label for="address">Адрес</label>
                                <input name="address" type="text" class="form-control" id="address"
                                       value="${user.buyer.address}" required>
                            </div>
    
                            <div class="col-md-3 mb-3">
                                <label for="zip">Zip-код</label>
                                <input name="zip" type="text" class="form-control" id="zip" required>
                            </div>
                        </div>
    
                        <div class="mb-3">
                            <label for="address2">Адрес 2<span class="text-muted"> (необязательно)</span></label>
                            <input name="address2" type="text" class="form-control" id="address2">
                        </div>
    
                        <hr class="mb-4">
    
                        <h4 class="mb-3">Оплата</h4>
    
                        <div class="row">
                            <div class="col-md-6 mb-3">
                                <label for="cc-name">Имя владельца карты</label>
                                <input name="cc-name" type="text" class="form-control" id="cc-name" placeholder="" required="">
                                <small class="text-muted">Полное имя написано на карте.</small>
                            </div>
    
                            <div class="col-md-6 mb-3">
                                <label for="cc-number">Номер карты</label>
                                <input name="cc-number" type="text" class="form-control" id="cc-number" placeholder="" required="">
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-md-3 mb-3">
                                <label for="cc-expiration">Срок действия</label>
                                <input name="cc-expiration" type="text" class="form-control" id="cc-expiration" placeholder="" required="">
                            </div>
    
                            <div class="col-md-3 mb-3">
                                <label for="cc-expiration">CVV</label>
                                <input name="cc-cvv" type="text" class="form-control" id="cc-cvv" placeholder="" required="">
                            </div>
                        </div>
    
                        <hr class="mb-4">
    
                        <input class="btn btn-primary btn-lg btn-block" value="Продолжить" type="submit">
                    </form>
                </div>
            </div>
        </div>
    </form>

    И теперь, данные отправляются на сервер:
    https://i.imgur.com/Rjak1t7.png
    Только вот, у вас нет сервлета, чтобы обработать запросы поступающие в /payment
    Напишите сервлет, который примет данные из указанной формы, обработает их и вернет соответствующий результат

    Ниже несколько советов по улучшению вашего проекта:
    1) https://i.imgur.com/mRZmW7V.png
    Файлов конфигурации IDE (.idea и т.д.) не должно быть в гит
    Build директорий тоже не должно быть в гит (например, target)
    Соответственно, лишние файлы нужно убрать из гита. А также используйте файл .gitignore
    2) Комментарии к коммитам должны быть осмысленными. Неважно является ли проект тестовым или нет, старайтесь всегда указывать корректные комментарии.
    3) https://i.imgur.com/TNbSCB4.png
    Желательно, чтобы внутри директории java был пакет с указанием доменного имени и самого проекта. Например,
    com.example.website
    com.example.website.entity
    com.example.website.servlets
    4) Является ли проект рабочим? У вас в pom указана зависимость без версии, но при этом parent pom spring'a откуда он может взять актуальную версию отсутствует.
    <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-taglibs</artifactId>
            </dependency>

    Добавил туда:
    <version>5.4.5</version>
    5) Подобные конфиги лучше вынести в yml или properties
    String uploadFolder = "D:\\UploadJPTVR19WebShop/avatars";

    Иначе приложение будет не devOPS friendly.
    6) У вас в файле footer.jspf отсутствуют закрывающие теги
    </body>
    </html>

    Как должно быть: https://i.imgur.com/1hc4znt.png

    7) Я добавил зависимость:
    <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.0.1</version>
                <scope>provided</scope>
            </dependency>

    Иначе не работал сайт

    8) Нельзя вкладывать тег form в другой тег form
  • Как получать и отправлять сообщение?

    azerphoenix
    @azerphoenix Куратор тега Java
    Влад Гапанович, ветка admins выполнится в том случае, если message.getText() будет равно /admins
    Я бы рекомендовал добавить брейкпоинт и продебажить проект. Посмотреть, что приходит при вводе текста и по какой цепочке он проходит
  • Что такое код общего назначения и код специального назначения?

    azerphoenix
    @azerphoenix Куратор тега Java
    Честно, впервый слышу о таких терминах)))
    Что за код общего назначения и специального назначения? Любой код предназначен специально для чего-то...
  • Проблема с кодировкой с postgresql в IDEA, как решить?

    azerphoenix
    @azerphoenix Куратор тега Java
    Костя Ивавщенко, так ну судя по всему у вас проблемы с кодировкой БД и скорее всего самого проекта тоже.

    Вот, скрин из БД:
    https://i.imgur.com/05VnPFC.png

    Скрины с проблемой кодировки самого проекта скинул ранее.
    https://i.imgur.com/sFCSX5l.png
    https://i.imgur.com/4FmVKg4.png

    + кажется у вас проблемы при инициализации БД. При запуске класса Server вот, такое сообщение выводится
    Wrong object type


    При этом схема sausageShop не инициализируется.
    Попробовал вручную инициализировать БД и все корректно отображается.
  • Проблема с кодировкой с postgresql в IDEA, как решить?

    azerphoenix
    @azerphoenix Куратор тега Java
    Костя Ивавщенко,
    Посмотрите на эти скрины. Для начала у вас проблемы с кодировкой проекта
    https://i.imgur.com/sFCSX5l.png

    Как должно быть:
    https://i.imgur.com/4FmVKg4.png

    Сниппеты подключения к БД и добавления данных, которые вы указали в вопросе, отсутствуют в проекте. Соответственно, проверить в полной мере не получится. Но для начала можете решить проблему с кодировкой самого проекта
  • Проблема с кодировкой с postgresql в IDEA, как решить?

    azerphoenix
    @azerphoenix Куратор тега Java
    Костя Ивавщенко, добрый день. В течение дня гляну на проект и отпишусь
  • Как вывести дерево рубрик записей с самими заголовками статей?

    Хабиб Омаров, я давно уже перестал разрабатывать на ВП, но логику того, к это можно сделать написал выше. Ну или же ищите плагины. Нав. меню не очень подходит, так как вручную нужно добавлять, можно программно добавлять пункты, но нет тонов смысла вообще меню заводить
  • Проблема с кодировкой с postgresql в IDEA, как решить?

    azerphoenix
    @azerphoenix Куратор тега Java
    Костя Ивавщенко,
    Если глянуть на инфографику ниже и сравнить с вашими крякозябрами, то заметите, что это результат преобразования utf8 -> win1251
    604807f8c4e03661943921.png
  • Проблема с кодировкой с postgresql в IDEA, как решить?

    azerphoenix
    @azerphoenix Куратор тега Java
    Костя Ивавщенко, есть еще подозрение на то, что ваши sql файлы могли быть сохранены в другой кодировке или например, в utf8 with BOM. Т.е. проблема может быть в ваших sql файлах.
  • Проблема с кодировкой с postgresql в IDEA, как решить?

    azerphoenix
    @azerphoenix Куратор тега Java
    Костя Ивавщенко, если что попробуйте залить проект на гит и скинуть ссылку. Где-то у вас другая кодировка.
  • Как работает класс Calendar в этом коде?

    azerphoenix
    @azerphoenix Куратор тега Java
    blackCover, надо погуглить и подобрать более подходящий АПИ.
    Вот, например - https://htmlweb.ru/geo/api_get_data.php
    Возвращает названия стран, городов и др. на русском, английском и т.д.
  • Проблема с кодировкой с postgresql в IDEA, как решить?

    azerphoenix
    @azerphoenix Куратор тега Java
    Добрый вечер. Лучше, сниппеты кода оборачивать в тег code, вместо скриншотов.
  • Какой курс java выбрать?

    azerphoenix
    @azerphoenix Куратор тега Java
    Strannyk, согласен. И да, есть хорошие преподаватели там. Пару так точно знаю...
  • Какой курс java выбрать?

    azerphoenix
    @azerphoenix Куратор тега Java
    Strannyk, возможно. Вам виднее. В данном случае, коллега хочет научиться кодить и думаю, что там ему могут дать базовые знания.
  • Почему происходит данная ошибка?

    azerphoenix
    @azerphoenix Куратор тега Java
    Сергей Булатов,
    пробовали ли вы сменить версии jre? Попробуйте установить 8 или 11 Java.
    Также убедитесь в том, что вы выделяете нужное количество памяти для приложения.
    У меня был как-то случай в Spring, когда не хватало памяти и он не поднимался. В общем, стартанул только с 22 гб памяти.
  • Почему происходит данная ошибка?

    azerphoenix
    @azerphoenix Куратор тега Java
    Dmitry Roo, Сергей Булатов, представьте себе, я глянул на логи и вот, что нашел там:

    instanceKlass java/lang/StackOverflowError
    instanceKlass java/lang/OutOfMemoryError
    ciInstanceKlass java/lang/VirtualMachineError
    instanceKlass io/netty/util/internal/OutOfDirectMemoryError
    ciInstanceKlass java/lang/ArithmeticException
    ciInstanceKlass java/lang/NullPointerException
    ciInstanceKlass java/lang/IllegalMonitorStateException
    ciInstanceKlass java/lang/StackOverflowError
    ciInstanceKlass java/lang/ArrayStoreException
    ciInstanceKlass java/lang/NoClassDefFoundError
    ciInstanceKlass java/lang/ClassCastException
    ciInstanceKlass java/lang/ClassNotFoundException

    Впервые вижу, чтобы такой букет исключений выбрасывался)))
  • Как работает класс Calendar в этом коде?

    azerphoenix
    @azerphoenix Куратор тега Java
    blackCover, добрый вечер.

    Значение dt = 1615215600 является временной отметкой 8 марта 2021 год 15:00 и записывается в переменную timestamp, потом я подставляю в написанный Вами код

    А я понял вас. Думал, что dt у вас указано в миллисекундах. Тогда да, если время в секундах, то нужно умножить на 1000.

    Так какая сейчас проблема наблюдается на данный момент? Только разница во времени в 2 часа?
  • Как работает класс Calendar в этом коде?

    azerphoenix
    @azerphoenix Куратор тега Java
    public static void main(String[] args) throws IOException, InterruptedException {
        StringBuilder url = new StringBuilder()
            .append("https://community-open-weather-map.p.rapidapi.com/onecall/timemachine?lat=")
            .append("55.751244")
            .append("&lon=")
            .append("37.618423")
            .append("&dt=")
            .append(System.currentTimeMillis() / 1000);
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create(url.toString()))
            .header("x-rapidapi-key", "ВАШ_АПИ_КЛЮЧ")
            .header("x-rapidapi-host", "community-open-weather-map.p.rapidapi.com")
            .method("GET", HttpRequest.BodyPublishers.noBody())
            .build();
        HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
      }


    Результат:
    {
      "lat": 55.7512,
      "lon": 37.6184,
      "timezone": "Europe/Moscow",
      "timezone_offset": 10800,
      "current": {
        "dt": 1615162831,
        "sunrise": 1615176186,
        "sunset": 1615216667,
        "temp": 266.17,
        "feels_like": 260.4,
        "pressure": 991,
        "humidity": 86,
        "dew_point": 264.44,
        "uvi": 1.37,
        "clouds": 75,
        "visibility": 10000,
        "wind_speed": 4,
        "wind_deg": 240,
        "weather": [
          {
            "id": 803,
            "main": "Clouds",
            "description": "broken clouds",
            "icon": "04n"
          }
        ]
      },
      "hourly": [
        {
          "dt": 1615161600,
          "temp": 266.17,
          "feels_like": 260.4,
          "pressure": 991,
          "humidity": 86,
          "dew_point": 264.44,
          "clouds": 75,
          "visibility": 10000,
          "wind_speed": 4,
          "wind_deg": 240,
          "weather": [
            {
              "id": 803,
              "main": "Clouds",
              "description": "broken clouds",
              "icon": "04n"
            }
          ]
        }
      ]
    }