gpt4 book ai didi

java - 通过 servlet 访问资源(CSS、HTML、图像、JS)

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:58:25 25 4
gpt4 key购买 nike

我想知道是否有人有仅通过 servlet 访问网站资源的解决方案。我的所有资源都在 WEB-INF 下。换句话说,我不希望用户直接访问我的任何资源。

最佳答案

您可以使用 ServletContext#getResource()为此。

URL resource = getServletContext().getResource("/WEB-INF/file.ext");
File file = new File(resource.getPath());
// ...

您甚至可以使用 ServletContext#getResourceAsStream()得到一个InputStream直接:

InputStream input = getServletContext().getResourceAsStream("/WEB-INF/file.ext");
// ...

如您在示例中所见,ServletContext由继承的 GenericServlet#getServletContext() 在 servlet 中可用方法。


也就是说,我不希望用户直接访问我的任何资源这句话有点矛盾。无论如何,您是通过 servlet 为这些资源提供服务吗? Servlet 可以通过 URL 直接访问。这与“直接访问”有何不同?或者您只想根据某些条件控制访问?我会说,Filter更适合这个任务。

通常人们只会完全隐藏 JSP 文件以防止直接访问。在充当前端 Controller 的 Servlet 中(根据 MVC 模式),您可以使用 RequestDispatcher#forward() 将请求转发到 JSP 文件。你又可以通过ServletRequest#getRequestDispatcher()获得.

request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);

关于java - 通过 servlet 访问资源(CSS、HTML、图像、JS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2796396/

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