다이어트 라이브러리라고도 불리는 라이브러리로, 코드의 양을 줄여주는 라이브러리.
사용법 : lombok.jar 파일을 실행시켜서, sts 혹은 이클립스에서의 롬복 사용을 설정한 후, lombok 을 적용시키려는 프로젝트 내에 dependency
를 추가해줌으로써 사용이 가능하다.
일반적으로 클래스 전체적으로 어노테이션을 붙여서 모든 인스턴스 필드에 대해 getter
, setter
를 적용시킬 수도 있고, 인스턴스 필드 위에 사용함으로써 해당 필드 데이터를 지정해서 getter
, setter
를 적용시킬 수 도 있다.
default 생성자와 모든 인스턴스 필드를 가지고 vo 를 생성하는 두 가지의 어노테이션이다.
필요로 하는 인자를 가지고 vo 를 생성해주는 어노테이션
추가해서 생성하려는 필드에 @NonNull
어노테이션을 사용하게 될 경우 두 개의 필드 데이터를 가지고 생성자를 생성할 수 있게 된다.
일반적으로 오버라이딩해서 사용하는 ToString
에 대해 사용할 수 있다.
만약, ToString
시에 일부 데이터를 제외하고자 할 경우 @ToString.Exclude
어노테이션을 사용한다.
객체의 내용을 비교하기 위해 사용하는 어노테이션.
자동으로 getter
, setter
, toString
, EqualsANdHashCode
4개의 어노테이션이 적용될 수 있게끔 해주는 어노테이션
단, 생성자 관련된 어노테이션은 적용되지 않기 때문에 이 부분은 신경을 써주어야 한다.
tag library로 xml 태그들의 집합. jsp에서 나오는 <% %>
(scriptlet) 들은 if문, for문을 위해 사용해 사용해왔는데, 이것들은 유지 보수가 너무 어렵다.
사용하기 위한 설정
JSTL 은 외부 라이브러리이기 때문에 jsp 에서 JSTL 를 사용하려면, 우선적으로 dependency 를 추가해주어야 하고, jsp 파일의 최상단에 태그를 추가해주어야 한다.
<%@ taglib prefix="" uri="" %>
jsp 에서 <$@ @>
라는 표현을 directive 라고 부르는데, 주로 기능을 추가하는 표현법이다.
종류로는 page directive
, taglib directive
등이 있다.
종류
set : 값을 설정하는 태그.
var : 변수명
value : 값
<c:set /> 변수의 선언 및 제거
<c:remove />
<c:out /> 변수의 출력
<c:catch /> 예외 처리
<c:if /> 조건문 (else는 없다)
<c:choose /> Switch문과 비슷
<c:when />
<c:otherwise />
<c:forEach /> 반복문
<c:forTokens /> 구분자로 분할하여 반복문
<c:url /> URL 생성
<c:param /> 파라미터 추가
<c:import /> 페이지 첨부
<c:redirect /> URL 이동
다양한 format 기능을 제공해주는 jstl 라이브러리
기본적으로 Get
방식의 경우, 쿼리스트링을 사용해 url 뒤에 데이터가 붙어서 전송된다. 따라서 넘어오는 데이터의 양에도 제한이 있고, &
나 ?
기호와 같은 것들이 있어서 바이너리 데이터를 전송하는 데에도 불편 사항이 존재한다.
그렇기 때문에 간단한 조회와 같은 케이스를 제외한 클라이언트 요청은 대부분 post 방식으로 이루어진다.
사용하는 케이스
일반적으로, 원시데이터와 String 타입인 데이터의 경우에는 @RequestParam 이 생략되어있다고 spring이 판단하고, vo 타입을 parameter 로 할 경우 @ModelAttribute 가 생략되어있다고 판단한다.
또한 @ModelAttribute
는 이름에서부터 보이다싶이, model의 속성으로 자동적으로 들어가게 된다. 이 때 자동적으로 들어가게 되는 key 는 소문자로 변환된 객체의 이름으로 들어가게 된다.
handler 가 호출되기 전에, 해당 어노테이션이 붙은 메소드가 가장 먼저 호출이 된다.
그리고 해당 메소드의 리턴값이 model의 속성으로 자동으로 저장이 된다.
또한 method 형태의 modelAttribute 로 return 받은 데이터들을, handler 의 인자로 사용할 수 있다.
단, 주의해야 할 점은 다른 method 로 부터 리턴 값을 가져오기 위해서는 @ModelAttribute(value="")
어노테이션의 value 값에 @ModelAttribute
method의 식별자 이름을 입력해주어야 한다.
즉, @ModelAttribute
라는 어노테이션은 vo 를 생성하는 역할 뿐만 아니라, 다른 method 로 부터의 리턴 값을 가져오는 역할을 하는 어노테이션일 수도 있다.
이러한 command 객체
를 생성하는 것에도 순서가 있다.
REST API
를 구현할 때 사용하게 되는 어노테이션이다.
ex) http://localhost:8080/web/boards/20
과 같은 url 주소에서 가장 마지막에 쓰인 /20
은 board를 식별하는 번호이다. 과거에는 쿼리스트링으로 전송되며 저 부분은 url 이 아니었는데 만약 저 부분까지 url 로 담게 된다면 url 에서 변수를 어떻게 가지고 와야 할까.
mapping을 하게 되는 url 주소를 입력할 때, { ~ }
를 활용해서, 이 안에 작성한 변수명을 동적으로 받겠다고 사용할 수 있다.
그 후 parameter 로 들어오는 인자에 대해 @PathVariable
어노테이션을 사용해 작성해주면 url에 들어오는 변수를 parameter 로 들어오는 인자로 인식해서 사용할 수 있게 된다.
타입이 같은 bean 객체를 찾아서 객체를 주입한다.
만약 같은 타입이 없다면, 그 차선으로 이름을 가지고 bean 객체를 찾는다.
만약 타입이 같은 bean 객체가 두 개 이상일 경우, @Qualifier로 지정한 bean 객체를 찾는다.
@Authwired 와 같은 기능을 하는데, 이름으로 bean 을 찾고, 못찾으면 type 으로 찾는다.
해당하는 어노테이션은 모두 @Component
어노테이션을 상속한 어노테이션.
default servlet : 정적 리소스에 대한 요청을 받아서 응답 처리를 하는 서블릿
기본적으로 tomcat에서 모든 서블릿 요청을 가장 처음 받는 것은 default servlet.
spring 은 이러한 default servlet 역할을 Dispatcher servlet 이 대체한다.
spring container 가 제공하는 context 는 2가지가 있다. root-context 와 servlet-context 이다.
그 중 root-context 이 가장 먼저 만들어진다.
그 후, root-context 내부에 servlet-context 가 생성된다.
servlet-context 내부에 controller Bean 과 함께 view Resolver 가 생성된다.
그리고, dispatcher servlet이 이 view Resolver 에게 요청을 보낸다.