2010-06-17 2 views
3

저는 아약스와 함께 사용할 몇 가지 메소드를 공개해야하는 웹 앱을 작성하려고합니다. 하나의 서블릿을 만들어 모든 들어오는 요청을 라우팅 할 수도 있고 각 요청 유형마다 하나씩 여러 개의 서블릿을 만들 수도 있습니다.기본 나머지 API에 대한 서블릿 매핑?

public class ServletMain extends HttpServlet { 
    public void doGet(HttpServletRequest req, HttpServletResponse resp) 
     throws IOException 
    { 
     // parse the path and figure out which service call was made. 
    } 
} 

// web.xml 
<servlet-mapping> 
    <servlet-name>SerlvetMain</servlet-name> 
    <url-pattern>/foo/a</url-pattern> 
    <url-pattern>/foo/b</url-pattern> 
    <url-pattern>/foo/c</url-pattern> 
</servlet-mapping> 

나 : 같은 뭔가 우리가 원하는대로 우리가 할 수있는 경우

public class ServletA extends HttpServlet; 
public class ServletB extends HttpServlet; 
public class ServletC extends HttpServlet; 

// web.xml 
<servlet-mapping> 
    <servlet-name>SerlvetA</servlet-name> 
    <url-pattern>/foo/a</url-pattern> 
</servlet-mapping> 

<servlet-mapping> 
    <servlet-name>SerlvetB</servlet-name> 
    <url-pattern>/foo/b</url-pattern> 
</servlet-mapping> 

<servlet-mapping> 
    <servlet-name>SerlvetC</servlet-name> 
    <url-pattern>/foo/c</url-pattern> 
</servlet-mapping> 

그냥 궁금

, 또는 몇 가지 규칙이 있는지 어떻게 이런 종류의 물건을 구성하기 위해?

감사

+0

유연성이 있다면 [RESTlet] (http://www.restlet.org/)과 같은 라이브러리를 사용하는 것이 훨씬 낫습니다. 바퀴를 재발 명할 필요가있다. –

답변

3

당신은 정말 대신에 더 적합 REST API를 "일반 바닐라"서블릿 API를 사용하여이 작업을 수행하려는 경우와 같은 JAX-RS (즉, 참조 구현으로 JerseyJSR311), 다음 내가 갈 것이 좋습니다 첫 번째 예에서 묘사 된 앞쪽 컨트롤러 패턴. 가능한 모든 url-pattern 항목으로 오염 된 web.xml보다 더 멋지게 추상화되었습니다.

기본적으로 모든 요청에 ​​대해 가로 채기하는 하나의 서블릿 만 있고 pathinfo를 HttpServletRequest#getPathInfo()으로 잡고 요청 방법과 pathinfo의 조합에 따라 원하는 작업을 결정합니다.

적어도, 어떻게 보려고합니까 그들은 저지와 함께 (거룩한 주석과 함께!) 동일한 작업을 시도합니다. 또는, 더 나은 방법은 바퀴를 재발 명하지 않고 사용하십시오.)

관련 문제