2015-10-06 152 views
0

我需要在現有的基於Spring的Web服務中添加Restful URL。Spring servlet URL映射

每個URL映射良好但點擊URL寧靜如 http://localhost:9090/Mercury/rest/invoice, 畢竟上下文根路徑被改變http://localhost:9090/Mercury/rest

的一點是,我要使用REST風格(/ REST)和*。做網址模式

如何在沒有/休息的情況下設置contextroot路徑?

的web.xml

 <servlet> 
     <servlet-name>dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>*.do</url-pattern> 
    </servlet-mapping> 

    <servlet> 
     <servlet-name>rest</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>2</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>rest</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

控制器

@Controller 
@RequestMapping("/rest") 
public class InvoiceController { 

@RequestMapping(value="/{name}", method=RequestMethod.GET) 
public String getInvoice(@PathVariable String name, Model model) { 

    model.addAttribute("name", name); 

    return "rest.body"; 
} 

回答

0

請參考Spring Pet Clinic在github上,以瞭解如何配置各種意見。 Sample view config xml。這是綱要。

的ContentNegotiatingViewResolver委託給 的InternalResourceViewResolver和BeanNameViewResolver,並使用 請求的媒體類型(由路徑擴展確定的)選擇一個 匹配視圖。當媒體類型爲'text/html'時,它將委託給 InternalResourceViewResolver的JstlView,否則委託給 BeanNameViewResolver。