• Стоит ли строить своё изучение/обучение именно так?

    07x4,
    Да, в целом все ок. Насчет курсов не подскажу. А вот, книги понадобятся в обязательном порядке.
    Если речь идет о Java, то можете начать с Герберт Шилдт - Руководство Java для начинающих, а еще лучше Полное руководство по java. Ну а дальше уже развивайтесь, читайте других авторов. Например, Эккель, Хорстманн и др.
  • Как отправить файл методом POST через JSON?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Nightmare058,
    Можете глянуть на эту статью. Как по мне тут довольно подробно написано
  • Spring boot не видит css и js. Пути к файлам прописывал по советам всех форумов. Может не правильный конфиг?

    azerphoenix
    @azerphoenix Куратор тега Spring
    pugachok, по идее IDEA должна отображать корректно, если статика внутри static.
    Просто будь проблемы с Security мы бы увидели ошибку 403, а не 404. А значит, он не видит статику просто.
    Вот, например:
    60a90b0f893dd376068026.png
    А такой вопрос - есть ли возможность закинуть проект на гит и предоставить публичный доступ для дебага?
  • Как в IntelliJ IDEA в проекте в директории src создать поддиректории?

    azerphoenix
    @azerphoenix Куратор тега Java
    BorLaze, :-))) ну думаю, что ТС когда-нибудь дойдет к тому, что надо укрепить теоретические знания по книгам. По своему опыту скажу, что начинать изучение java по видео без знания теории, так себе...
  • Spring boot не видит css и js. Пути к файлам прописывал по советам всех форумов. Может не правильный конфиг?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Смотрите,
    Во-первых, по умолчанию Spring Boot не видит директорию webapp. Также если вы планируете создать jar, то не рекомендуется использовать webapp. Но вы можете добавить эту директорию тоже, если хотите:
    Ссылка на источник: https://stackoverflow.com/questions/28725635/sprin...
    Во-вторых, я обратил внимание, что ваша статика она внутри resources, но вне static. По умолчанию, внутри resources есть директории static & templates. В static вы добавляете js, css, fonts и др. статику. В templates вы добавляете ваши шаблоны. Попробуйте провести рефакторинг и проверьте загружаются ли файлы.
  • Как в IntelliJ IDEA в проекте в директории src создать поддиректории?

    azerphoenix
    @azerphoenix Куратор тега Java
    Прочитайте мой ответ, я ответил вам как создать пакет в Java.

    Я нажал ПКМ на папке src, выбрал New > Package, но потом внутри этого пакета если я проделываю такую же последовательность действий, то пакет создается рядом, а не внутри.

    Видимо, для создания вложенного пакета вместо выбора вновь созданного пакета вы кликаете на src.

    Что означает синий цвет иконки папки у src?

    В IDEA можно добавлять метки к директориям. Например, синий цвет отмечает данную директорию в качестве source. (src). Также есть директория resources или target (out) и т.д. Пока можете не зацикливаться на цвете директорий и т.д., так как это особенности редактора, а не языка.
  • Как исправить ошибку при компиляции?

    azerphoenix
    @azerphoenix Куратор тега Java
    _moskalenkovva,
    Смотрите, ошибка пропала потому, что вы пытались запустить класс Main, но этого класса у вас не было, так как ваш класс называется Class.
    Предположу, что вы некорректно компилировали проект (пытались компилировать несуществующий класс Main). А переименовав ваш класс Class -> Main вы как бы адаптировали название класса под вашу команду. Говоря проще, проблема была у вас не в коде, а в команде, которую использовали для компиляции.
    В общем, в будущем поймете, что я имею ввиду)
  • Как исправить ошибку при компиляции?

    azerphoenix
    @azerphoenix Куратор тега Java
    Тут проблема не в том, что класс не называется Main. Подозреваю, что ТС пытался запустить несуществующий класс, т.е. ввел некорректную команду.
  • Как сделать два метода на один эндпоинт в REST-контроллере Spring?

    azerphoenix
    @azerphoenix Куратор тега Java
    Eugenue Cesarevich, если честно, то идея с разделением контроллера на 2 мне нравится больше,нежели объединение или перегрузка методов.
  • Где взять "готовое" приложение для Android?

    Мирон Суходольский,
    Был рад помочь.
    Откровенно говоря мне грустно от того, что в 2021 все еще не придумали ничего адекватного для такой простой задачи.

    Как не придумали))) Чем вам визуальные онлайн-конструкторы не нравятся-то? Другое дело, что с ними нужно разбираться, читать документацию, возможно приобретать платный доступ и т.д., но это уже другое дело.
  • Где взять "готовое" приложение для Android?

    Мирон Суходольский,
    andromo.com
    Once you are done adding your favorite features, with a click of a button Andromo servers will produce your stunning mobile app. We'll email it to you directly, all set to be uploaded on the Google Play Store.

    Предположу, что это означает, что они вам на почту скинут apk, который вы можете после залить на гугл плей.

    Тогда придется искать каждый раз фрилансера для несущественного апдейта.

    Просто, если вы не владеете ЯП и не хотите обращаться во фриланс, то это единственный более менее адекватный вариант решения вопроса.
    Я бы все же обратился бы во фриланс. Опять-таки вы можете заказать приложение и взять контакты фрилансера, чтобы по надобности он вносил правки

    Если вы владеете js, то можете глянуть на ionic framework или на react native. Ну а с java || kotlin думаю, что все понятно.
  • Где взять "готовое" приложение для Android?

    Мирон Суходольский, ну в вашем вопросе не было указано, что сервис должен быть бесплатным.
    Я бы на вашем месте обратился бы во фриланс биржу. Например, на сайт kwork или еще куда-нибудь. Там за небольшую сумму могут написать то, чего вы хотите.
  • Правильно ли реализована инкапсуляция в данном коде и в чем ошибки?

    azerphoenix
    @azerphoenix Куратор тега Java
    И еще один совет:
    private int a;
        void seta(int i) {
            a = i;
        }
        private int b;
        void setb(int i) {
            b = i;
        }
        private int c;
        void setc(int i) {
            c = i;
        }
        private int d;
        void setd(int i) {
            d = i;
        }


    Обратите внимание на рекомендации к написанию кода.
    Например, сперва определяются:
    финализированные статические публичные переменные
    публичные переменные
    приватные переменные
    конструкторы
    публичные методы
    приватные методы и т.д.
  • Как выводить отдельно информацию об определенной записи из БД spring boot?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Лев Соболев, сложно сказать где именно может заключаться проблема не видя вашего кода.
    На самом деле ответ нужно искать не тут, а в коде. Попробуйте подебажить код, добавьте точки остановки и посмотрите, что передается на клиент. И что приходит в клиент.
  • Как завершить программу Java при вводе пользователем символа q в любом месте программы?

    azerphoenix
    @azerphoenix Куратор тега Java
    JennyK,
    Вы трижды повторяете вот, этот код:
    if (b.equals("q"))
                System.exit(0);

    Если есть повторение, то можно и вынести его в отдельный метод. Ну и скажем, что не самая лучшая идея, но в учебных целях пойдет
  • Как добавить проверку на ввод в spring boot application?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Лев Соболев,

    Спасибо вам большое за подробный развернутый ответ!

    Рад помочь.

    Раз вы пишете MVC приложение, то допустим, что для отображения шаблона вам нужен GET запрос. Т.е. есть некий метод, который обрабатывает GET запрос и выдает шаблон. Далее если на странице есть некая форма (например, форма регистрации или контактная форма), то для получения данных отправленных из формы вам нужно написать POST методы. В общем, рекомендую прочитать про HTTP METHOD (GET, POST, PUT, DELETE и т.д.). Так как вы работаете в рамках html и скорее всего без js, то пока вам понадобится GET & POST.

    Приведу простой псевдокод, чтобы вы могли примерно понять логику. А дальше для получения большей информации рекомендую погуглить и прочитать соответствующие статьи. Хороший ресурс - baeldung.com

    Допустим у вас есть:
    - контроллер для обработки запросов

    @Controller
    @RequestMapping("/users")
    public class UserController {
    
    @Autowired
    private UserService userService;
    
    @GetMapping
    public ModelAndView usersList(){
    ModelAndView modelAndView = new ModelAndView("НАЗВАНИЕ_ШАБЛОНА");
    modelAndView.addObject("users", userService.findAll());
    return modelAndView;
    }
    
    @PostMapping("/add")
    public RedirectView addUser(
    @Valid UserRequest userRequest
    ){
    userService.addUser(userRequest);
    return new RedirectView("/users");
    }
    
    }


    Далее у нас есть entity User
    public class User {
    long id;
    String username;
    String password;
    }

    а также есть dto UserRequest, где мы валидируем данные
    class UserRequest {
    @NotBlank(message="Username can't be empty")
    String username;
    @NotBlank(message="Password can't be empty")
    String password;
    }


    Далее вам понадобится конвертер UserRequest -> User. Можно подключить либу ModelMapper или MapStruct, но можно обойтись и без них. Например,

    @Component
    public class UserConverter extends Converter<UserRequest, User> {
        @Override
        public User convert(UserRequest userRequest) {
           User user = new User();
           user.setUsername(userRequest.getUsername());
           user.setPassword(userRequest.getPassword());
        }
    }


    И конечно же у нас есть UserService, где указана бизнес логика. Например,

    @Service
    public class UserService {
    
    @Autowired UserRepository userRepository;
    @Autowired UserConverter userConverter;
    
    public List<User> usersList() {
    return userRepository.findAll();
    }
    
    public void addUser(UserRequest userRequest) {
    User user = userConverter.convert(userRequest);
    userRepository.save(user);
    }
    
    }


    Я привел довольно простой пример. Конечно же можно обработать исключения и т.д. Но думаю, общий смысл будет вам понятен

    Полезные ссылки:
    https://www.baeldung.com/spring-mvc-model-model-ma...
    https://www.baeldung.com/spring-redirect-and-forward
    https://www.baeldung.com/spring-type-conversions
  • Как добавить проверку на ввод в spring boot application?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Лев Соболев,
    Не бывает глупых вопросов. Я сам когда-то был начинающим разработчиком и довольно часто задавался аналогичными вопросами.

    RestController и Controller это разные вещи.

    RestController это специфичная форма Controller, которая включает в себя Controller & ResponseBody
    Но при необходимости Controller можно превратить в RestController
    Например, указанные ниже 2 контроллера идентичны. Так как к методу из класса UserController добавлена аннотация @ResponseBody

    Controller
    @Controller
    public class UserController {
    
    public @ResponseBody String usersList() {}
    
    }


    REST Controller
    @RestController
    public class UserController {
    
    public String usersList() {}
    
    }


    Соответственно, если вы пишете REST сервис, то используйте RestController. Если пишете MVC приложение (т.е. есть некий шаблонизатор - mustache, thymeleaf и др). Тут на самом деле все зависит от вашей фантазии. Например, вы можете писать MVC приложение, но иметь RestController, на который будет аяксом (ajax) приходить заполненные данные (без перезагрузки страницы). А дальше результат валидации в формате json уходить на клиент, а средствами js распарсить ответ и добавить их в html.

    Кстати, тут может быть проблема, так как у вас есть AllArgsConstructor, но default конструктора нет. Если не ошибаюсь, то скорее всего будет выброшено исключение при попытке забайндить.
    @Data
    @AllArgsConstructor
    public class ClientDto {}


    Обычно, если у вас много однотипных параметров, то лучше собирать их в dto. Например, CarDto или CarRequest

    public String carEntityAdd(@RequestParam String carBrand,
    @RequestParam String carModel,
    @RequestParam Integer carBodyNum,
    @RequestParam Integer carEngineNum,
    @RequestParam String carBodyModel,
    @RequestParam Integer carEngineVolume,
    @RequestParam Integer carEnginePower,
    @RequestParam String carWheel,
    @RequestParam String carDriveBool,
    @RequestParam Double carPrice,
    @RequestParam String carType,
    @RequestParam Integer carYear,
    @RequestParam Integer carMileage,
    @RequestParam String carBodyType,
    Model model)


    Optional является параметризованным классом. лучше использовать его возможности.
    Например, вместо:
    Optional client= clientRepository.findById(clientId);

    использовать:
    Optionzal<User> client = clientRepository.findById(clientId).orElseThrow(UserNotFoundException::new);

    Т.е. если пользователь по id не будет найден, то будет выброшено исключение UserNotFoundException