2013년 7월 8일 월요일

url pattern / or /*

 
  appServlet
  /*.do
 
옛날은 위와 같이 매핑해주는 것이 보통이었다. 이렇게 하면 .do 로 끝나는 url 은 쉽게 스프링 서블릿을 
타게 할 수가 있다. 하지만 요즘은 RESTful 스타일을 선호한다. 
예를 들면 

http://localhost:8080/myapp/user/10 (user 수정,탈퇴,보기)
http://localhost:8080/myapp/user (user의 회원가입)
http://localhost:8080/myapp/admin/user/10 (user의 수정,삭제,보기,추가)

이런 식의 url 들이다.

이런 식의 url 을 구현하려면 
 
  appServlet
  /*
 
pattern을 이런식으로 변경해야 한다.그렇지만 static한 js,css,html 파일등의 요청과 .jsp 에 대한 요청도 스프링 서블릿이 작동하여
404 페이지를 보게 된다. 그래서 한가지 해결책으로 urlrewrite 를 사용했다. pattern 은 그대로 두고

  ^/world.jsp?country=([a-z]+)&city=([a-z]+)$
  /world/$1/$2

이와 같이 설정한다.
정규식을 사용하여 

/world.jsp?country=korea&city=seoul 을
/world/korea/seoul

로 변경되는 식이다.

이런 방법도 있지만 web.xml 과 spring 설정을 조작하여 해결하는 방법도 있다.
 
  appServlet
  /
 
이와 같이 설정하고

위 구문을 spring-servlet.xml 에 추가하면 된다.
필터를 통과못한 url 을 잡아서 톰캣 기본 서블릿에 넘겨주는 역할을 한다. pattern을 / 로 설정했기때문에
위 구문이 없으면 톰캣 기본 서블릿은 동작을 하지 못하기 때문이다.

한마디로 /* 는 모든 요청을 자기가 처리하겠다 이고, / 는 모든 요청은 받지만 처리 못하는 것은 넘기겠다 라는 뜻이다.

댓글 없음:

댓글 쓰기