gpt4 book ai didi

java - 如何删除JSP的 native 请求URL?

转载 作者:行者123 更新时间:2023-12-02 08:27:24 25 4
gpt4 key购买 nike

我有一个名为 page.jsp 的网页,我只希望它有 2 个 URL:

  • /page-url-1
  • /page-url-2

web.xml中我写道:

<servlet>
<servlet-name>Page</servlet-name>
<jsp-file>page.jsp</jsp-file>
</servlet>

<servlet-mapping>
<servlet-name>Page</servlet-name>
<url-pattern>/page-url-1</url-pattern>
<url-pattern>/page-url-2</url-pattern>
</servlet-mapping>

但现在,它有 3 个 URL:

  • /page.jsp <== 不需要
  • /page-url-1
  • /page-url-2

问题:如何删除 JSP 的 native URL,并为其分配自定义 URL?

最佳答案

URL“page.jsp”有效,因为“page.jsp”位于 Web 应用程序的文档根目录中。除了“WEB-INF”文件夹之外,存储在容器中的任何文件都可以直接提供给客户端。

即。如果您在 url 中键入文件“/js/myJavascirpt.js”,则会访问该文件。这同样适用于图像,比如说“/images/picture.png”。

根据 WEB-INF 的 Servlet 规范:

A special directory exists within the application hierarchy named WEB-INF. This directory contains all things related to the application that aren’t in the document root of the application. The WEB-INF node is not part of the public document tree of the application. No file contained in the WEB-INF directory may be served directly to a client by the container. However, the contents of the WEB-INF directory are visible to servlet code using the getResource and getResourceAsStream method calls on the ServletContext, and may be exposed using the RequestDispatcher calls.

从规范中可以清楚地看出,如果您不想让客户端直接访问您的文件,则这些文件应存储在“WEB-INF”文件夹下。这就是为什么 Java Web 应用程序中的所有类和库都存储在“WEB-INF”文件夹下的原因。

当涉及到您的问题时,您只需将 jsp 文件放在“WEB-INF”文件夹下即可。

例如:将您的 jsp 文件放在“WEB-INF”文件夹下:

WEB-INF/views/jsp/page.jsp

并像这样更改 web.xml 中的条目:

<servlet>
<servlet-name>Page</servlet-name>
<jsp-file>/WEB-INF/views/jsp/page.jsp</jsp-file>
</servlet>

<servlet-mapping>
<servlet-name>Page</servlet-name>
<url-pattern>/page-url-1</url-pattern>
<url-pattern>/page-url-2</url-pattern>
</servlet-mapping>

来源:访问JSR-000315 JavaTM Servlet 3.0 Java Servlet 规范(第 10.5 章)。

关于java - 如何删除JSP的 native 请求URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27595346/

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