【问题标题】:JSP Tomcat Bad ResourcesJSP Tomcat 坏资源
【发布时间】:2014-04-07 16:48:36
【问题描述】:

我们对我们的项目进行了更深入的研究,并且已经使用 eclipse 建立了一个基本的 Web 应用程序。每当我们尝试运行服务器时,我们都会收到如下所示的 404 错误

根据我的研究,我发现我需要某种 web.xml 文件。应该把这个文件放在哪里。我该怎么做呢

【问题讨论】:

标签: java eclipse jsp tomcat


【解决方案1】:

您的问题是您试图访问 WEB-INF 文件夹中的资源,这是不允许的,这就是您出现此错误的原因,您必须将 jsp 放在 WebContent 文件夹下或 WebContent 文件夹下的任何文件夹下。 WEB-INF\classes 包含 Java 类的 .class 文件,它不是放置任何资源的好地方。

由于 Servlet 的 3.0 规范,Web 部署描述符 (web.xml) 是可选的。

我希望这可以帮助您解决问题

【讨论】:

  • 这是一个放置资源的好地方,该资源只能由后端的代码访问,而不能由用户直接访问。例如,您要读取的某些配置文件,用户不应访问。
  • 我说WEB-INF/classes不是个好地方,不是整个WEB-INF文件夹。很明显他想访问 jsp 文件,所以我认为它与答案无关。
【解决方案2】:

将 JSP 放在 WEB-INF 下会使它们无法访问,除非您将它们映射到 WEB.XML 中 WEB-INF 的目的是隐藏东西,因为用户无法下载或访问 WEB-INF 下的任何内容。如果您不希望用户能够通过其真实姓名(即http://localhost/app/whatever.jsp)去那里但希望将其映射到某个特定的网址(即http://localhost/app/somename/),则您只需将JSP 放在WEB-INF 下即可

将 WEB-INF 下的 JSP 映射到 URL 可以在 WEB.XML 中完成

   <servlet>
     <servlet-name>somename</servlet-name> 
     <jsp-file>/WEB-INF/whatever.jsp</jsp-file>
   </servlet>
   <servlet-mapping>
     <servlet-name>somename</servlet-name>
     <url-pattern>/somename/*</url-pattern>
 </servlet-mapping> 

当然,如果您需要将另一个 URL 映射到 JSP,但又不需要通过其 .jsp 文件名来禁止用户访问,那么您可以为此使用 URL 重写过滤器。在这种情况下,将其放在 WEB-INF 下是没有意义的。

【讨论】:

    猜你喜欢
    • 2015-12-09
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    相关资源
    最近更新 更多