如何删除JSP的本机请求URL?

Vic*_*748 2 java jsp web.xml custom-url

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

  • /页的URL-1
  • /页的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>
Run Code Online (Sandbox Code Playgroud)

但现在,它有3个网址:

  • /page.jsp <==不想要
  • /页的URL-1
  • /页的URL-2

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

Sud*_*SMD 7

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

即 如果您在网址中输入文件'/js/myJavascirpt.js',则会被访问.同样适用于图像,让我们说'/images/picture.png'.

根据WEB-INF的Servlet规范:

名为WEB-INF的应用程序层次结构中存在一个特殊目录.此目录包含与应用程序相关的所有不在应用程序文档根目录中的内容.WEB-INF节点不是应用程序的公共文档树的一部分.WEB-INF目录中包含的文件不能由容器直接提供给客户端.但是,使用ServletContext上的getResource和getResourceAsStream方法调用,servlet代码可以看到WEB-INF目录的内容,并且可以使用RequestDispatcher调用公开它们.

从规范来看,很明显,如果您不想让客户端直接访问您的文件,那么这些文件应存储在"WEB-INF"文件夹下.这就是为什么java Web应用程序中的所有类和库都存储在"WEB-INF"文件夹下的原因.

当您遇到问题时,您只需将jsp文件放在"WEB-INF"文件夹下即可.

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

WEB-INF /视图/ 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>
Run Code Online (Sandbox Code Playgroud)

来源:访问JSR-000315 JavaTM Servlet 3.0 for Java Servlet Specification(Ch 10.5).