서블릿과 JSP-(3) URL 패턴

BackEnd

이전 포스팅에서 서블릿은 기본적으로 늦은 초기화 lazyinit이라고 설명했고

또한 빠른 초기화를 설정할 수 있다고 했는데  loadOnStartup=1 이라고 적어둔 코드가 

미리 초기화를 시키겠다고 선언한 것이다

 

숫자 1이라고 적은 것은 우선순위를 1번으로 하겠다는 뜻

1번부터 4번까지 종류가 잇는데 이것또한 우선순위를 뜻한다

 

1번에서 완벽한 경로를 작성하면 매칭된 주소를 찾게되는데

그렇지 못하면 2번으로 넘어간다

 

login뒤에 와일드카드를 사용해서 해당 login이라는 경로까지 간 다음

그 뒤에 올 것들을 찾기 시작한다 만약 여기서도 못찾으면

3번으로 넘어간다 

 

3번에서는 와일드카드를 사용해서 .do로 끝나는 파일을 찾는다 

만약 여기서도 못찾으면 마지막 4번으로 넘어가서

 

default 맵핑을 통해서 기본값으로 되어있는 url을 찾게되는 것이다

 

그림을 보면 서블릿이 발전된 것이 스프링이다

 

스프링으로 넘어가게 되면 앞서 설명한 URL맵핑을 사용하지 않고 DispatcherServlet이 처리하게 된다

 

그 말은 즉 디스패쳐가 서블릿에서 처리하던 것들을 내부적으로 전부 품고 있다는 것이다 그게바로 @RequestMapping으로 등록한 것

 

디폴트로 떨어지는 것은 대부분 정적리소스로 image, css , txt 이고

그렇지 않은 나머지는 대부분 동적리소스(서블릿)이다 

 

디폴트로 정적리소스를 처리할 때 존재하지 않으면 404에러가 나오게 된다 

 

이번에는 EL (Expression Language)에 대해 알아보자

 

<% = 값 % > 으로 쓰던 것을 ${값}으로 간단하게 작성 할 수 있다

 

getCar getColor 가 아닌

 

car color라고 짧게 사용 할 수 있다

이런식으로 더 간단하게도 쓸 수 있다는 것도 알아두자

4개모두 이름이 같지만 page만 이름이 다르다

 

 

위 그림을 보면 jsp같은 경우는 파라미터를 안주면 null이 나오는 반면

el은 null을 출력하지 않는다 

 

자바에서는 문자열을  출력할 때 "1" + 1 = "1" + "1" -> "11" 이렇게 나오는데 

el에서는 "1" 이 숫자 1로 바뀌게 된다 

그래서 1+1 => 2 가 되는 것이다 

 

우리가 원하는데로 11이라는 숫자를 얻으려면 += 를 사용해줘야한다 

 

비교연산에서도 "2" > 1 은 숫자로 바뀌게 되어서 2>1 이 되므로 true가 나온다

 

null은 0으로 바뀌게 된다 null+ 1 = 1 

 

"" 도 0으로 바뀌게 된다 "" + null == 0 + 0 그래서 답은 0 이 된다