0
我做了一個過濾器,它負責將.do
的請求,並且是首次宣佈過濾器存在過濾URL效果:過濾和RequestDispatcher的改變上
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if(! (request instanceof HttpServletRequest)){
chain.doFilter(request, response);
}
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
String requestUrl = httpServletRequest.getServletPath();
if(!isBetaPathRequest(httpServletRequest) || StringUtils.contains(requestUrl,".")){
chain.doFilter(request, response);
return;
}
String newUrl = requestUrl;
int lastIndexOf = requestUrl.lastIndexOf("?");
if(lastIndexOf == -1){
if(requestUrl.charAt(requestUrl.length()-1) != '/'){
newUrl = newUrl.concat(".do");
}
}
else{
newUrl = requestUrl.substring(0, lastIndexOf-1) .concat(".do") .concat(requestUrl.substring(lastIndexOf));
}
final RequestDispatcher rq = getRequestDispatcher(request, newUrl);
rq.forward(request, response);
}
還有其他各種過濾器項目也宣告web.xml
文件,我與調試器通知他們沒有運行。
當前映射一個重要濾波器是例如:
ContentResponseCachingFilter *。做
但初始傳入的請求不包括在URL .do
,直到它通過BetaRewriteUrlFilter
通過。
當調用RequestDispatcher.forward時,是否應用了過濾器,還是需要手動調用它們,或者使用302重定向?