我正在使用一个捕获所有 servlet:
@WebServlet(name="RequestHandler", urlPatterns="/*")
public class RequestHandler extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
new SeedPlanter(request, response).sow();
}
}
处理所有请求。注意urlPattern
/
*. 这样做的原因是因为它加载了各种各样的东西,比如模板、处理对象等。servlet 基本上只是一个位于处理所有 html 呈现的自定义框架前面的外观。
问题是我不能再直接访问资源。
例如,如果我想加载一个位于 web-inf 目录 ( localhost:8080/myapp/test.html
) 之外的 html 文件,它会给我一个 404 错误。事实上,即使我尝试localhost:8080/myapp/images/test.png
在页面上加载图像 ( ),它也会给出未找到的 404 资源。删除 servlet 显然会破坏整个应用程序,但它确实允许我加载这些资源,所以我确信它是导致问题的 servlet。
我怎样才能像我一样使用 servlet,而且还能加载这些资源?