我可以让Java Servlet无法从外部访问吗



类似于这个问题,但我希望常规servlet只能通过RequestDispatcher访问。

例如,我有一个映射到/hiddenUrl的servlet。这应该发生:

//forwards successfully
request.getRequestDispatcher(contextPath + "/hiddenUrl").forward(request,response);
//404 not found
response.sendRedirect(contextPath + "/hiddenUrl")  

就像在WEB-INF目录中移动的JSP一样。有可能吗?

servlet容器永远不会直接为以/META-INF//WEB-INF/开头的请求提供服务(请参阅规范的第10.5章(:

应用程序层次结构中存在一个名为WEB-INF的特殊目录。该目录包含与应用程序相关的所有内容,这些内容不在应用程序的文档根目录中。大多数WEB-INF节点不是应用程序公共文档树的一部分。除了驻留在WEB-INF/lib目录中的JAR文件的META-INF/resources中打包的静态资源和JSP之外,容器不能直接向客户端提供WEB-INF目录中包含的任何其他文件。

因此,映射到/WEB-INF/something的servlet对其他servlet和JSP可见,但对用户不直接可见。

相关内容

  • 没有找到相关文章

最新更新