У меня есть действующее Spring MVC приложение http://all-real-estate.herokuapp.com/ username: admin password: admin Когда я его писал, не особо заморачивался на фронтэнд. В итоге это просто чистый jsp с кучей кода где всё обновляется при каждом нажатии. Теперь я решил написать для этого приложения фронтэнд поприличнее. Начал с главной страницы и уже реализовал лайки с помощью JavaScript. Теперь при нажатии на лайк фронтэнд отрабатывает моментально, а на бэкенд летит асинхронный запрос с помощью XMLHttpRequest. Собственно вопрос. Я знаю два подхода к реализации контроллеров. Первый, SpringMVC:
@RequestMapping(value = "/update_user", method = RequestMethod.GET)
public String updateUser(@RequestParam(value = "isCredentials", required = false) Boolean isCredentials, Model model) {
    ......
    return "users_update";
}
возвращает имя jsp-страницы. Второй REST API:
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<Like> likeApartment(@RequestParam("apartmentId") long apartment_id) {
    .......
    return new ResponseEntity<>(like, HttpStatus.OK);
}
возвращает JSON иногда обёрнутый в ResponseEntity. Изначально моё приложение работало на первом варианте. Теперь я не знаю как применить ни тот ни другой. Реализуя лайки я создал public void метод в классе контроллера. Но что если мне нужно сделать сортировку и фильтрацию. Желательно такую фильтрацию которая при введении в инпут будет моментально реагировать на каждую букву. Вариант с возвращением jsp страниц сразу не подходит. Там всё всегда обновляется целиком. Вариант с возвращением JSON плох тем что я не понимаю откуда тогда приложение поймёт какую jsp страницу загружать. Сейчас главная jsp страница загружается сразу с данными из БД. Видимо я должен как то в JS перехватить эти данные и дальше с ними работать, не дёргая БД и не обновляя страницу. Как правильно решается этот вопрос, если можно простым языком.