2015-10-06 151 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。