【问题标题】:Spring servlet URL mappingSpring servlet URL 映射
【发布时间】:2016-01-02 22:40:18
【问题描述】:

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

每个 URL 都映射得很好,但是在单击 Restful URL 之后,例如 http://localhost:9090/Mercury/rest/invoice, 所有上下文根路径都更改为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";
}

【问题讨论】:

    标签: spring rest url servlets request-mapping


    【解决方案1】:

    请参考github上的Spring Pet Clinic,了解如何配置各种视图。Sample view config xml。这是大纲。

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

    【讨论】:

      猜你喜欢
      • 2012-01-20
      • 2017-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-24
      • 2011-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多