TIL

[TIL] 오늘의 검색내용 2022-10-27

아몬드통 2022. 10. 27. 22:44

- 계속해서 TIL을 어떻게 쓸건지.. 어떤 방식으로 기록해야 좋은지를 바꿔나가고 있다. 아직도 잘 모르겠지만..

 

1. 스프링 컨트롤러에서 커맨드 객체를 사용할 때는 @RequestParam을 붙여주면 안된다. 커맨드객체의 변수들의 이름과 넘어오는 파라미터값과 이름을 동일하게 해주면 스프링컨테이너가 자동으로 매핑해서 값을 넣어준다.

2. @RequestParam으로 파라미터를 받을때 null이어도 되는 데이터는 @RequestParam(require = false) 로 해준다

3. 스프링 컨트롤러에서 리다이렉트시 데이터 가지고 가기. 아래처럼 2가지 방식이 있는데 2번 방법은 된다고 하는데 아직 사용을 해보지는 못했다.

1. return "redirect:/orders/payment?cartNum=" + infoList.get(0).getCartNum();
2. RedirectAttributes redirectAttributes
redirectAttributes.addAttribute("message", "하이");

4. 스프링 컨트롤러에서 경고창 띄우기. 검색해보니 방법은 많이 있는 것 같지만. 웬만하면 javascript나 ajax로 요청해서 띄우는 게 속편하고 깔끔하고 쉽다.

5. 스프링 컨트롤러에서 httprequest와 httpresponse를 사용하고 싶다면 서블릿 컨테이너가 생성해주기 때문에 아래 처럼 컨트롤러 매개변수로 넣어주면 알아서 매핑해준다.

public String cartDuplCheck(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse){
}

6. fetch나 ajax요청으로 컨트롤러에서 요청을 처리하고 싶으면 메서드 위에 @ResponseBody를 붙이자. 클래스의 컨트롤러를 모두 api요청으로 만들고 싶다면 클래스 이름위에 @RestController 를 사용하면된다.

 

@ResponseBody
@GetMapping("/")
public String paymentView(@LoginUser SessionDTO sessionDTO, Principal principal, Model model, @RequestParam List<Long> cartNum) {
}

 

- 4번에 관해서.. 4번에 적은대로 가능은 하지만, 사용자 친화적인 서비스(내가 말하는 건 아마도 SPA)를 만들고 싶으면 ajax나 fetch처럼 프론트를 따로 만들고 api요청으로 하는 게 참 좋아보이고 조금 더 MVC패턴을 지키는 것 같고 그렇다.

React나 Vue를 사용하지 않더라도 바닐라javascript만으로도 내 수준으로는 충분히 만들 수 있으니 잘 해보자.