gpt4 book ai didi

java - RequestDispatcher.forward 循环

转载 作者:行者123 更新时间:2023-11-30 12:01:09 27 4
gpt4 key购买 nike

我正在使用

<url-pattern>/*</url-pattern>

将所有请求映射到一个 sevlet,我在其中完成所有身份验证工作。但我想跳过一些静态内容(如 css 文件)。所以我尝试从该 sevlet 到资源文件所在的位置

if(isResourceFile){
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("static/" + fileName);
dispatcher.forward(request, response);
}

但这将开始一个无限循环,因为这将再次调用同一个 sevlet

有没有办法在不映射 web.xml 中的所有资源 (css) 文件的情况下解决这个问题?

最佳答案

/*url-pattern 最好由Filter 独占使用,而不是Servlet秒。将所有静态文件放在某个文件夹中(可能被更有效的 url-pattern 覆盖 FileServlet ?)并让 Filter 检查它。

例如(伪)

public void doFilter(request, response, chain) {
if (requestURI.startsWith("/static")) {
chain.doFilter(request, response); // Just continue. Do nothing.
} else {
request.getRequestDispatcher("/pages").forward(request, response); // Forward to page controller.
}
}

希望这对您有所帮助。

关于java - RequestDispatcher.forward 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1069442/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com