java - java servlet映射url模式 static 页面和 REST API

  显示原文与译文双语对照的内容

我正在尝试了解如何构建一个 restFull Web服务器,该服务器将:

1: 转到/时提供单个 index.html 文件

2: 所有其他url都将以restful方式被控制器捕获,例如: /invoke1 -> 将到达"/invoke1"的请求映射"

问题

所有 spring 调度器都有一些奇怪的引用,用于服务html页面( 我不是说资源和 <mvc:resources mapping ),我正在提供一个html页面。

我使用默认的catalina servlet解决了这个问题,如下所示:


<servlet>


 <servlet-name>default</servlet-name>


 <servlet-class>


 org.apache.catalina.servlets.DefaultServlet


 </servlet-class>


 <load-on-startup>2</load-on-startup> 


</servlet>


<servlet-mapping>


 <servlet-name>default</servlet-name>


 <url-pattern>/docs/*</url-pattern>


</servlet-mapping> 



使用这里代码,我可以提供HTML页面( 即使是 behind 安全性,只要它们位于/docs/* 路径下),因此,从这里我可以:


@RequestMapping(method = RequestMethod.GET)


public String main() {


 return"redirect:/docs/index.html";


}



但那不是我想要的。 从这里开始,浏览器上的URL将显示为/docs/

我想发生的是,当用户到达/他会获得 index.html,但他到达/invoke1 时会到达 spring 控制器。

这是我现在想知道的一些东西。 希望你能指引我正确的解决方案。 谢谢你。

时间: 原作者:

1 ) 最简单的解决方案是将 spring 映射到 /rest/,并为你的index.html 保留 /

2 ) 另一种解决方案,尽管你不想将 index.html 包装在JSP上,并将它的定义为 /index.html,并定义控制器。

3 ) 或者使用 <mvc:resources> 。 你可以从预定义的static 目录中服务 .html,并只返回索引控制器"static/index.html"。 cf StackOverflow问题。

原作者:
...