簡體   English   中英

角html5mode服務器重寫Wite Spring MVC

[英]Angular html5mode server rewrite wite spring mvc

有人可以指導我在(AngularJS + spring mvc + tomcat服務器)應用中重寫服務器。

到目前為止,我已經進行了以下設置:

<base href="/Eatery/index.html">
$locationProvider.html5Mode(true);

我沒有web.xml

我在Spring MVC中使用Java配置

基於“ 如何在Java中使用servlet過濾器來更改傳入的servlet請求url”中的答案 我最后得到一個Spring OncePerRequestFilter

它檢查傳入的URL是用於靜態資源(通過擴展名)還是用於REST api的調用(帶有/api/子字符串),並允許它們照常執行。 在其他情況下,它重定向到/index.html因此Angular的路由器可以處理該請求。

public class Html5ModeUrlSupportFilter extends OncePerRequestFilter {
    @Override
    protected void doFilterInternal(HttpServletRequest request,
                                    HttpServletResponse response,
                                    FilterChain filterChain)
                                    throws ServletException, IOException {
        if (isStatic(request) || isApi(request)) {
            filterChain.doFilter(request, response);
        } else {
            request.getRequestDispatcher("/index.html").forward(request, response);
        }
    }

    private boolean isApi(HttpServletRequest request) {
        return request.getRequestURI().indexOf("/api/") >= 0;
    }

    private boolean isStatic(HttpServletRequest request) {
        return Pattern.matches(".+\\.((html)|(css)|(js))$", request.getRequestURI());
    }
}

當然,必須根據您的需求調整檢測請求的規則。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM