2015-06-25 93 views
0

好的,这太荒谬了。如何设置Spring MVC webapp以使用DispatcherServlet并具有index.html的默认页面

几天前我问basically this question,并没有得到它。我已经尝试过各种网页的各种建议,没有一个能让我想到我想要的东西。我已经遍历了可执行的Spring文档,它使复杂的事情变得简单而简单。

现在我已经学会了更多一点,也许我可以再次表达自己的机会,希望更清楚。

我想要以下内容:使用DispatcherServlet的Spring MVC 4.0 Web(不是SpringBoot)应用程序,只要在浏览器中输入基本URL http://myserver.mycompany.com:8080/myapp,它也会显示默认的index.html页面。

这是一个要求,不应该输入http://myserver.mycompany.com:8080/myapp/index.html来到这个页面。

DispatcherServlet会映射如http://myserver.mycompany.com:8080/myapp/dothishttp://myserver.mycompany.com:8080/myapp/do/that 到适当配置的控制器的URL。

我知道这个问题一直在网上问过,所有的答案都迷失在春天的细节中,他们都没有在我的情况下工作。

换句话说,我想在非Spring webapp中使用欢迎页面的功能,并在同一应用程序中使用Spring-MVC分派器功能。它不必在web.xml中配置。只要它像上面那样工作。

哦,最好是我想要使用Spring Annotations的解决方案。

简单的问题。我希望有人能为我提供一个简单的答案。

UPDATE:问题答案如下要求: @JB_Nizet:您的建议,只是使用在簧文档推荐的代码,并在web.xml中定义的欢迎页面是我一直在努力,并没有关系”工作。这是有道理的。 Spring文档方法允许从/中提供静态html文档。但它仍然阻止从根网址显示欢迎页面。您可以通过在url中提供index.html来获取index.html,但不会发生从/到/index.html的映射。

@Aeseir:是的,我更喜欢Java Config方法,我上面称之为“Spring Annotations”。我会用我自己的一个答案来回答你的“愚蠢的问题”:我尝试了不同的方法来添加一个“只映射到”/“的控制器,但我不明白这个控制器会是什么?

@Configuration 
public class WebConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addViewControllers(ViewControllerRegistry registry) { 
    registry.addViewController("/").setViewName("forward:index.html"); 
    } 

} 
+0

http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-default-servlet-handler –

+0

谢谢。尽管我已经到过这个页面,但它仍然让我感到困惑。我没有看到在这个页面中的哪个地方显示了将默认应用程序url映射到index.html的东西。它缺少一些信息,我的微弱的春天的黑夜大脑并不健康。你是否必须编写一个自定义servlet来提供index.html? –

+0

不可以。您只需使用文档中的代码(XML或Java-Config),Spring将为静态资源委派默认servlet。所以它会从webapp提供静态资源,就像你根本没有使用Sring一样。按照servlet规范的说明,默认页面在web.xml文件中配置。默认情况下,index.html是默认页面之一。 –

回答

4

如果index.html文件充当静态资源,那么你就可以用这个配置在web.xml中有一些安全过滤器,我认为我已经通过注释掉spring xml fi les,但我想我必须关掉滤镜。在我花时间从应用程序中删除所有XML之前,我没有意识到这一点,以回应@JB_Nizet's fine example。花了一段时间找到所有等效的Java Config注释,但是一旦我这样做了,它仍然无法工作,很容易发现过滤器是罪魁祸首并将其注释掉。当我们准备好开始安全时,我们会放回去。

我不得不说,我发现在一个或两个Java类中查找配置问题比在遍布各处的几个xml文件中找到配置问题更容易。

1

答案是:必须DO如何编写一个控制器,它什么也不做,但服务的index.html

相关问题