我有一个Spring REST服务器(v3.2)和AngularJS用于客户端代码。
根据我在基本场景中的理解,用户导航到基本域.com,index.html正在发回 从那时起,Angular管理着沟通。
我的问题是: 1.如何设置Spring以返回Angular文件。 2.如何处理用户不通过基本域并导航到的情况 .com / books / moby-dick当前返回假设的Moby-Dick书的JSON表示 由客户提供
一个好的教程将受到高度赞赏。 这是我的网络初始化课程:
public class WebAppInitializer implements WebApplicationInitializer {
private static Logger LOG = LoggerFactory.getLogger(WebAppInitializer.class);
@Override
public void onStartup(ServletContext servletContext) {
WebApplicationContext rootContext = createRootContext(servletContext);
configureSpringMvc(servletContext, rootContext);
FilterRegistration.Dynamic corsFilter = servletContext.addFilter("corsFilter", CORSFilter.class);
corsFilter.addMappingForUrlPatterns(null, false, "/*");
// configureSpringSecurity(servletContext, rootContext);
}
private WebApplicationContext createRootContext(ServletContext servletContext) {
AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
// rootContext.register(CoreConfig.class, SecurityConfig.class);
rootContext.register(CoreConfig.class);
servletContext.addListener(new ContextLoaderListener(rootContext));
servletContext.setInitParameter("defaultHtmlEscape", "true");
return rootContext;
}
private void configureSpringMvc(ServletContext servletContext, WebApplicationContext rootContext) {
AnnotationConfigWebApplicationContext mvcContext = new AnnotationConfigWebApplicationContext();
mvcContext.register(MVCConfig.class);
mvcContext.setParent(rootContext);
ServletRegistration.Dynamic appServlet = servletContext.addServlet(
"webservice", new DispatcherServlet(mvcContext));
appServlet.setLoadOnStartup(1);
Set<String> mappingConflicts = appServlet.addMapping("/");
if (!mappingConflicts.isEmpty()) {
for (String s : mappingConflicts) {
LOG.error("Mapping conflict: " + s);
}
throw new IllegalStateException(
"'webservice' cannot be mapped to '/'");
}
}
这是我的MVC配置文件:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"com.yadazing.rest.controller"})
public class MVCConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
}
答案 0 :(得分:3)
(免责声明:我是JHipster的作者)
你可以看一下JHipster,它会为你生成一个这样的应用程序,有一个Spring后端和一个AngularJS前端。
由于生成器远远超出您的需求(安全性等),您还可以查看我们的sample application。
答案 1 :(得分:0)
那么#1如何:
registry.addResourceHandler("/index.html").addResourceLocations("/index.html");