Map to List
아래처럼 생성자를 통해 map을 리스트로 변환할 수 있다.
Map<Long,String> map = new HashMap<>();
...
List<String> list = new ArrayList<>(map.values());
map.value()를 호출하면 map의 value 들을 Collection객체를 반환한다. 이를 ArrayList 생성자의 파라미터로 전달해서 형변환할 수 있다. 이는 아래와 같은 로직으로 동작한다.
AssertJ 의 Assertions.assertThat().contatins()
Assetions.assertThat(리스트).contains(객체1,객체2,......객체n);
assertThat의 매개변수로 리스트를 주고 이 리스트에 존재하는지 검사하고자하는 객체들을 추가하여 존재여부를 확인할 수 있다.
form 태그의 Action
form 태그에 action 에서 '/'를 빼면 상대경로, 현재까지의 계층 경로 + action에 지정한 경로로 http 메세지 전송한다. 예를 들어 현재 브라우저의 경로가 "http://localhost:8080/hello/spring/study" 이고 form 태그에서 action="develop"으로 설정되어 있으면 form 태그는 "http://localhost:8080/hello/spring/develop" 로 form data 를 Http 메세지 바디에 담아 전송한다.
Servlet의 dispatcher, foward()
dispatcher.forward()은 서버 내부에서 서블릿 또는 jsp를 호출하는 기능을 한다. 만약 jsp를 호출한다고 가정하면 아래와 같이 사용한다.
String viewPath = "뷰 템플릿 경로/뷰템플릿이름.jsp";
RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath);
dispatcher.forward(request,response);
redirect 외부에서(클라이언트) 다시 요청하게 하기 때문에 url이 바뀌지만 forward는 내부에서 호출하기 때문에 url 이 바뀌지 않는다. 때문에 재 요청에 대한 리소스와 지연을 줄이고, 두 요청사이에 데이터를 손쉽게 주고받을 수 있다. servlet 에서는 이 기능 덕분에 request 의 setAttribute(),getAttribute() 메소드를 Model 로 사용하여 MVC 디자인 패턴을 구현할 수 있다.
WEB-INF
jsp, them WEB-INF 디렉토리에 넣으면 외부에서 url을 통해 접근 불가, 서버 내부 코드를 통해서만 접근 가능하다. 때문에 url을 통한 불필요한 접근과 요청을 막아 보안상의 이점을 얻을 수 있다.
MVC 패턴의 이점
기존 클라이언트에게 보여지는 렌더링관련 코드와, 비즈니스 로직이 한 파일에 구현되어있는 코드에서, MVC 패턴을 사용해 클라이언트에게 보여지는 뷰 렌더링과 비즈니스 로직을 분리하여 각각 독자적으로 개발, 관리할 수 있게 되었다. 뷰 또는 컨트롤러에 수정사항이 발생해도, 기존에 비해 최소한으로 수정하거나 아니면 수정없이 개발할 수 있게 되었다.
HTTP API
HTTP 스펙의 API를 만들 때 적절한 HTTP 메서드와, URI를 정의해야한다.
uri에는 리소스 정보(ex. /members 또는 /order 등) 이 들어가고 이 자원을 추가하는지, 조회하는지, 삭제하는지 등에
GET, POST, PUT, DELETE,PATCH 등의 메소드를 적절히 사용해 사용한다. 이에 대해서는 HTTP 강의를 모두 수강한 후에 개인적으로 추가 공부를 해서 2월 초~중순까지 매우 자세히 정리해보려고 한다.
'TIL' 카테고리의 다른 글
[2022-1-23]프론트 컨트롤러 구현 및 리팩토링 (0) | 2022.01.24 |
---|---|
[2022-1-22] HTTP 공부 (0) | 2022.01.23 |
[2022-1-20]HttpServletResponse 과 HTTP공부 (0) | 2022.01.20 |
[2022-1-19] Sevlet, HttpServletRequest 공부 (0) | 2022.01.20 |
[2022-01-18] 스프링MVC 멀티쓰레드개념, 프로그래머스 TIL (0) | 2022.01.18 |