我正在尝试构建一个没有.jsp文件的Spring MVC 4支持的单页HTML / Angular应用程序。
当用户到达根URL(例如http://myapp.com/)时,我想发送单页HTML文档(index.html)。
但是,我不熟悉Spring MVC的Java配置,无法找到ServletMapping
,ViewResolver
和ResourceHandler
的正确组合。
我知道"默认"可能会有一些额外的配置。或"索引"页面,但我可能弄错了。
那么如何让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[] { "/*" };
}
答案 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";
}
希望能帮助某人。