具有静态HTML视图的Spring MVC 4 Java配置

时间:2016-06-19 16:15:57

标签: java spring spring-mvc

我正在尝试构建一个没有.jsp文件的Spring MVC 4支持的单页HTML / Angular应用程序。

当用户到达根URL(例如http://myapp.com/)时,我想发送单页HTML文档(index.html)。

但是,我不熟悉Spring MVC的Java配置,无法找到ServletMappingViewResolverResourceHandler的正确组合。

我知道"默认"可能会有一些额外的配置。或"索引"页面,但我可能弄错了。

那么如何让Java配置的Spring MVC 4应用程序发送一个html文件?

文件结构

/src
  '-/main
     |-/web-inf
     '-/webapp
         |-index.html (want to send this)
         '-/app
            |-/partials
            '-app.js 

WebAppConfig.java

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
  registry.addResourceHandler("/").addResourceLocations("/index.html");
}

IndexController.java

@RequestMapping("/")
public void index() {

  System.out.println("pls"); // executes
  // Have tried returning "index" and "index.html"
}

WebInitializer.java

@Override
protected String[] getServletMappings() {
  // have tried with "/" as well
  return new String[] { "/*" };
}

2 个答案:

答案 0 :(得分:0)

我认为你应该加上这个:

<mvc:view-controller path="/" view-name="index"/>

dispathcer-servlet文件中。

答案 1 :(得分:0)

以下是一些工作解决方案 - 如果有人需要一个特定用例。

如果您不想调用控制器方法并只是提供文件。

WebInitializer.java:

@Override
protected String[] getServletMappings() {
    return new String[] { "/" };
}

Web.xml中

<web-app>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>

WebConfig.java

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("index.html").addResourceLocations("/index.html    ");
}

如果您想在登陆时调用控制器方法。

web.xml中不需要欢迎文件列表

WebInitializer.java:

@Override
protected String[] getServletMappings() {
    return new String[] { "/*" };
}

WebConfig.java

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("index.html").addResourceLocations("/index.html    ");
}

@Bean
public InternalResourceViewResolver viewResolver() {
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setSuffix(".html");
    return viewResolver;
}

Controller.java

@RequestMapping("/")
public String index() {
    return "index";
}

希望能帮助某人。