我有一个Spring Boot(v1.3.6)单页应用程序(angular2),我想将所有请求转发到index.html
。
对http://localhost:8080/index.html的请求正在工作(200,我得到index.html),但http://localhost:8080/home不是(404)。
Runner.class
@SpringBootApplication
@ComponentScan({"packagea.packageb"})
@EnableAutoConfiguration
public class Runner {
public static void main(String[] args) throws Exception {
ConfigurableApplicationContext run = SpringApplication.run(Runner.class, args);
}
}
WebAppConfig.class
@Configuration
@EnableScheduling
@EnableAsync
public class WebAppConfig extends WebMvcConfigurationSupport {
private static final int CACHE_PERIOD_ONE_YEAR = 31536000;
private static final int CACHE_PERIOD_NO_CACHE = 0;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.setOrder(-1);
registry.addResourceHandler("/styles.css").addResourceLocations("/styles.css").setCachePeriod(CACHE_PERIOD_ONE_YEAR);
registry.addResourceHandler("/app/third-party/**").addResourceLocations("/node_modules/").setCachePeriod(CACHE_PERIOD_ONE_YEAR);
registry.addResourceHandler("/app/**").addResourceLocations("/app/").setCachePeriod(CACHE_PERIOD_NO_CACHE);
registry.addResourceHandler("/systemjs.config.js").addResourceLocations("/systemjs.config.js").setCachePeriod(CACHE_PERIOD_NO_CACHE);
registry.addResourceHandler("/**").addResourceLocations("/index.html").setCachePeriod(CACHE_PERIOD_NO_CACHE);
}
}
styles.css
,/app/第三方/xyz/xyz.js
,...正在工作(200和我得到正确的文件).只有/**
到index.html
是不工作的。
这一条对我不管用:
return "forward:/";
多亏了Spring MVC@RestController和redirect,我找到了一个很好的解决方案:
@RequestMapping(value = "/{[path:[^\\.]*}")
public void redirect(HttpServletResponse response) throws IOException {
response.sendRedirect("/");
}
如果不查看日志,我不完全确定它为什么没有正确映射,但是如果您想将URL映射到视图(HTML),那么使用spring提供的viewController
机制可能会更好http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-配置视图控制器。例如
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("home");
}
}
(摘自上面链接的spring文档——这是您应该如何将url映射到视图,而不是重新定位静态资源的映射。)
我不确定资源映射是否有任何类型的后缀过滤——例如,我不知道spring如何决定将请求映射到ResourceHttpRequestHandler
——您是否尝试过(只是确认或拒绝)类似于http://localhost:8080/home.html有电流吗?
您在上面定义的html映射也可能被忽略,索引也可能被删除。由于Spring Boot的默认主页行为,html才起作用:https://github.com/spring-projects/spring-boot/blob/master/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/ResourceProperties.java#L108
您还可以添加转发控制器,如:
@Controller
public class ForwardingController {
@RequestMapping("/{path:[^\\.]+}/**")
public String forward() {
return "forward:/";
}
}
第一部分{path:[^\\.]}
匹配除之外的一个或多个字符
。这将确保请求
文件。ext
不由此RequestMapping处理。如果还需要支持转发的子路径,请将/**
放在{…}之外
。
我有NGINX作为反向代理运行,它将所有超文本传输协议和https流量转发到我的node.js应用程序,该应用程序监听localhost: port 然而,我的问题是节点。js应用程序将所有传入请求视为来自::ffff:127.0。0.1 如何更改NGINX配置,使真正的IP能够通过并转发到节点。js应用程序? 编辑:快车。js/node。js应用程序处理请求。ip和应用程序。启用(“信任代理”)
pom.xml:
问题内容: 我正在使用似乎成功的jQuery 执行-request。但是如何在服务器端使用它并修改响应? 我是否需要另一个Servlet,因为Faces Servlet并非旨在解决这个问题? 它用于以下过程: 用户输入调用JS的地址和点击 JS使用Google地图检索地理数据并将其发送到服务器(我正在考虑将其用于上述代码) 服务器响应从数据库发送一些接近的位置 JS再次使用Google地图检索精确
我有一个小应用程序(HTML表单、servlet作为控制器和jsp文件),我试图弄清楚为什么我不能将请求从servlet转发到jsp文件。 问题是从html提交后,显示“HTTP状态404” null 谢谢! 项目层次结构:http://s23.postimg.org/kgt7r7lwb/capture.jpg main.html: 更新:问题可能出在Controller.java。当我尝试下面的
我有一个应用程序,可以接受一个POST请求。为了请求,我需要定义一些标题、边界和连字符。换句话说,我需要制定完整的请求。我成功地使用了HttpURLConnection。现在,我想从我的Spring应用程序中请求应用程序。 比如说,我有三个应用程序A(传感器)、B(Spring)和C(服务器)。 在这种情况下,B将充当网桥,从a接收请求,对其进行身份验证并将其发送给C。 我不想在Spring中再次