jsp tomcat url-pattern (스프링 jsp 직접호출 방법)
url-pattern 은 web.xml 에 정의해도 되고, 서블릿 상단에서 어노테이션 방식으로 써도 된다. (@WebServlet(urlPatterns = {“/”}) 이렇게 쓴다. 여러 개 쓰려면 @WebServlet(urlPatterns = {“/aaa/*”, “/bbb/*”}) 처럼 쓰면 된다.)
골 때리는건 url-pattern 은 except(exclude)를 설정할 수 없다. match(include) 작동만 한다. 아주 골 때린다.
더구나 정규식도 먹히지 않는다. 정규식이 아니라, 아주 한정적인 와일드 카드만 먹힌다.
1. /로 시작하고 /* 로 끝나도록 쓰는 패스. (ex : /temppath/*)
2. *.확장자 : 확장자를 매칭한다. (ex : *.do)
3. / : 디폴트 서블릿이다.
4. 그 외 동치 매칭이다.
한 마디로 [a-z], \d{1-4} 이딴거 안된다. 아…
아무튼 “*.do” 보다는 “/” 이라고 쓰는 디폴트 서블릿으로 설정하는게 가장 낫다. (그래야 REST 방식의 깔끔한 주소가 될 수 있다) 이렇게 하면 jsp, jspx, html, htm, js, css 등을 제외하고는 서블릿으로 갈 것이다. web.xml 에 보면 기존 servlet-mappng 에 jsp, jspx 가 설정되어 있을 것이다. 때문에 jsp는 처리가 된다. html, htm, js, css 는 정적 파일이기 때문에 그대로 bypass한다.
참고) web.xml
<!– The mapping for the default servlet –>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!– The mappings for the JSP servlet –>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspx</url-pattern>
<url-pattern>*.htm</url-pattern>
<url-pattern>*.html</url-pattern>
<url-pattern>*.js</url-pattern>
<url-pattern>*.css</url-pattern>
</servlet-mapping>