티스토리 뷰

Infra/Tomcat

web.xml url-pattern 작성법

Tomining 2015. 3. 25. 20:22

아래 내용은 web.xml 에서 filter 설정을 하면서 url-pattern 설정 방법을 설명하고자 한다.


<filter></filter> 설정은 어떤 필터를 사용하느냐에 따라 init-param의 값이 조금 달라질 수는 있으나, 대체적으로 아래와 같이 설정한다.

<filter>

<filter-name>필터명</filter-name>

<filter-class>필터 클래스 full name</filter-class>

<init-param>

<param-name>파라메터 명</param-name>

<param-value>파라메터 값</param-value>

</init-param>

</filter>

init-param의 경우 대부분 기본값이 있으므로, 설정하지 않는 경우가 더 많다.


이런 필터들을 어떤 url에 적용할 것인지 filter-mapping을 하게 되는데.

이 때 접하게 되는 것이 url-pattern 이다.


기본적인 filter-mapping 포맷은 아래와 같다.

<filter-mapping>

<filter-name>필터명</filter-name>

<url-pattern>URL 패턴</url-pattern>

</filter-mapping>


보통 URL 패턴을 / , /* 또는 /*.do 처럼 extention까지 포함하도록 설정하곤 한다.

  • / ==> 모든 url 패턴
  • /* ==> 모든 url 패턴
  • /*.do ==> *.do로 끝나는 url 인 경우

/와 /* 에는 조금 차이가 있다.

상세한 내용은 잘 설명되어 있는 블로그를 링크로 건다.


만약 context가 설정되어 있는 webapp라면 url-pattern 설정시 context를 넣어야 할까?

정답은 아니다 이다.


url-pattern 설정시 context 부분을 제외하고 설정해야 한다.

예를 들면 context 가 hi 라고 가정하면...


www.hello.com/hi/sayHello.do 라는 url을 설정하려면 아래와 같이 3가지 경우로 설정할 수 있을 것이다.

<url-pattern>/*</url-pattern>

<url-pattern>/*.do</url-pattern>

<url-pattern>/sayHello.do</url-pattern>


그렇다면 depth가 2단계 이상인 url의 경우는 어떻게 될까?

www.hello.com/hi/ohio/sayHello.do 라면...

<url-pattern>/ohio/*</url-pattern>

<url-pattern>/ohio/*.do</url-pattern>

<url-pattern>/ohio/sayHello.do</url-pattern>


이렇게 3depth, 4depth 로 계속해서 설정할 수 있다.





추가적으로 궁금했던 부분은 

www.hello.com/hello.do?param=aaa


이렇게 파라메터를 포함한 URL까지 지정할 순 없을까 였다.

결론부터 말하면, 할 수 없다. 그 이유는 ? 이후 값들은 URL 구성이 되긴 하나, parameter로 인식이 되기 때문에 url-pattern 을 체크할 때는 파라메터를 제외하고 체크하기 때문이다.

(단, restful url 인 경우는 조금 다르다.)




참고 사이트


'Infra > Tomcat' 카테고리의 다른 글

mod_jk2 란?  (0) 2015.12.31
was가 응답이 없을 때, Thread Dump 확인 방법  (0) 2015.03.16
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함