2017-10-05 16 views
0

我做了一個過濾器,以所有請求request.getServletPath()從春節返回null MVC

@Override 
public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain) throws IOException, ServletException { 

    HttpServletRequest request = (HttpServletRequest)req; 
    HttpServletResponse response = (HttpServletResponse)res; 

    // debug to see the output 
    String path = request.getServletPath(); 

    filterChain.doFilter(request, response); 
} 

有一個在JSP的URL沒有映射到它

控制器或視圖捕捉 HttpServletRequest sevlet路徑
<div> 
    <spring:url value="/app" var="app_url" htmlEscape="true"/> 
    <a href="${app_url}"><spring:message code="label_3rd_app" /></a> 
</div> 

然而,當點擊,而在過濾器調試的網址,我看到兩個請求request.getServletPath()值:

/null 
/null/app 

我的問題是爲什麼request.getServletPath()永遠不會返回/app而不是?

回答

1

你越來越空,因爲

request.getServletPath(); 

是Servlet和你這樣做一個過濾器內。爲了得到它在過濾器中,你必須手動建立這樣的:

HttpServletRequest request = (HttpServletRequest) req; 
String path = request.getRequestURI().substring(request.getContextPath().length()); 

更多信息爲什麼:

How to get request URI without context path?

相關問題