У меня есть действующее 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 перехватить эти данные и дальше с ними работать, не дёргая БД и не обновляя страницу.
Как правильно решается этот вопрос, если можно простым языком.