synchronous 와 asynchronous의 차이.
thymeleaf와 같은 경우 데이터를 자바로 부터 만들어서 변수에 실어 view에 뿌려주는 식으로
화면 -> 컨트롤러 -> 화면의 순서 진행을 거친다. 즉 화면에 여러 영역이 존재하고 각 영역별로 기능이 있을 때
이 화면을 thymeleaf로 모두 구성한다고 하면 하나의 기능을 사용하기 위해 다른 기능들이 정지되거나 맞물리도록 설계해서 하나의 기능이 완료 된 후에 갱신되는 상황에 맞춰 나머지를 짜줘야함.
ajax는 어떤 이벤트에 대한 동작을 화면에 심어서 RestController로 보내고 return 된 값으로 화면에 뿌려준다.
즉 하나의 화면에서 view - 컨트롤러 - view로 이동하는 것이 아니고 ajax영역이 비동기적으로 RestController로 데이터를 보내고 받는 작업을 하므로, 나머지 화면 영역에 대해서는 영향을 미치지 않는다
즉 각각의 이벤트에 대해서 다른 처리를 해 줄 수 있다.
하지만 ajax는 jquery로 구성되어 있고 , 사용하기 위해서 js 파일을 심어야 한다.
그래서 생각한 결론.
최초에 화면에 접근할 때 공통적으로 뿌려주는 속성. 한 화면에서 변화하지 않는 속성과 같은 경우에는 thymeleaf를 통해 한번 뿌려주고 화면이 갱신되지는 않도록 한다.
그리고 동적 테이블과 같이 화면에서 변화하는 속성 영역은 ajax , jquery를 통한 데이터 관리를 해준다.
동기화된 화면은 참고로 Bean과 같은 경우 Multi thread safety가 보장되지 않으므로 만약 하나의 화면이 반복 갱신되고 갱신되는 순간 같은 URI에서 다른 유저가 작업할 때 서로의 자원이 간섭받을 수 있음.
따라서 하나의 화면은 작업하나에 한번의 이동이 있을 뿐 한번의 작업마다 같은 화면을 반복해서 불러오면 안됨.
Thymeleaf -form으로 Controller 객체 전달 ->@ModelAttribute
ajax RestController 객체 전달 -> post -> @RequestBody
Rest는 반환하는 값이 Http 전달로 돌아옴 -> RestController 써야함
Controller는 뷰 작업을 위해 씀. -> RestController처럼 쓰려면 ResponseBody 써야함
Get은 @RequestParam("EstmGroupId")
'HTML & CSS & JS' 카테고리의 다른 글
ModelAndView 객체 addObject thymeleaf를 사용해서 javascript로 가져오기 (0) | 2020.01.17 |
---|---|
jquery 동적 테이블 생성 (0) | 2020.01.17 |
table form태그 사용 주의점 (0) | 2020.01.14 |
DB검색으로 List 채우기 (0) | 2020.01.14 |
ajax를 이용한 select 구현 (on change) (0) | 2020.01.13 |