我有一个 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/");
}
}
最佳答案
(免责声明:我是 JHipster 的作者)
您可以查看JHipster这将为您生成这样一个应用程序,带有 Spring 后端和 AngularJS 前端。
由于生成器远远超出了您的需要(安全性等),您还可以看看我们的 sample application .
关于angularjs - 如何配置 Spring 和 Angular 协同工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21597368/