0

我需要在现有的基于 Spring 的 Web 服务中添加 Restful URL。

每个 URL 都映射得很好,但是在单击诸如 http://localhost:9090/Mercury/rest/invoice之类的 Restful URL 后,所有上下文根路径都更改为http://localhost:9090/Mercury/rest

关键是我想同时使用 restful(/rest) 和 *.do URL 模式

如何在没有 /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";
}
4

1 回答 1

0

请参考Spring Pet Clinicgithub,了解如何配置各种视图。示例视图配置 xml。这是大纲。

ContentNegotiatingViewResolver 委托给 InternalResourceViewResolver 和 BeanNameViewResolver,并使用请求的媒体类型(由路径扩展确定)来选择匹配的视图。当媒体类型为'text/html'时,它将委托给InternalResourceViewResolver的JstlView,否则委托给BeanNameViewResolver。

于 2015-10-06T07:09:53.150 回答