springboot重定向到页面,在Springboot中将未知请求重定向到index.html

I'm trying to get an Angular2 app served up through a springboot web application. I've found lots of examples of how to do this very simply:

However, these examples are very simple, and they just basically show how to display static content that happens to be Angular.

None of them show how to handle any of the URLs (I think they're called routes) the Angular2 app uses that don't map to "real" resources.

Eg. We have a "/login" route in the Angular app, but we don't have a @Controller/@RequestMapping("/login") for this, I want Spring to render index.html when it see's a request for "/login".

Generically - I want Spring to render "index.html" whenever it can't an actual resource. Is there a way to set a default view for all requests that can't be mapped to something or found?

I've tackled this before by using an htaccess file and have apache handle this:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule . index.html [L]

ErrorDocument 404 /index.html

But I can't use apache or nginx in this case.

解决方案

As a work-a-round I've added the Angular Routes in a RequestMapping annotation and pointed them all at the index.html:

@RequestMapping({"/login", "/logout"})

public String index() { return "index.html"; }

Edit: As a better work-a-round, you can make the controller implement ErrorController, override the getErrorPath method, then add a mapping for /error which will act as a catch-all (or mapping missing) method.

@Controller

public class TheOneController implements ErrorController {

@RequestMapping("/error")

public String index() {

return "index.html";

}

@Override

public String getErrorPath() {

return "index.html";

}

}

Now the index method will handle anything that can't be found and render the index.html.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值